5323fd3de8f78a4d96fd49dced82d364832955f0
[oam/tr069-adapter.git] / netconf-server / src / main / java / org / commscope / tr069adapter / netconf / operations / CustomOperationsCreator.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 package org.commscope.tr069adapter.netconf.operations;\r
20 \r
21 import com.google.common.collect.Sets;\r
22 \r
23 import java.util.Optional;\r
24 import java.util.Set;\r
25 \r
26 import org.commscope.tr069adapter.netconf.rpc.CreateSubscription;\r
27 import org.commscope.tr069adapter.netconf.rpc.DeleteConfigOperation;\r
28 import org.commscope.tr069adapter.netconf.rpc.GetConfigOperation;\r
29 import org.commscope.tr069adapter.netconf.rpc.GetOperation;\r
30 import org.commscope.tr069adapter.netconf.rpc.OperationCommit;\r
31 import org.commscope.tr069adapter.netconf.rpc.OperationLock;\r
32 import org.commscope.tr069adapter.netconf.rpc.OperationUnLock;\r
33 import org.commscope.tr069adapter.netconf.rpc.SetConfigOperation;\r
34 import org.commscope.tr069adapter.netconf.rpc.SoftwareActivateOperation;\r
35 import org.commscope.tr069adapter.netconf.rpc.SoftwareDownloadOperation;\r
36 import org.opendaylight.netconf.api.capability.Capability;\r
37 import org.opendaylight.netconf.impl.SessionIdProvider;\r
38 import org.opendaylight.netconf.mapping.api.NetconfOperation;\r
39 import org.opendaylight.netconf.mapping.api.NetconfOperationService;\r
40 import org.opendaylight.netconf.test.tool.operations.OperationsCreator;\r
41 import org.opendaylight.netconf.test.tool.rpc.DataList;\r
42 import org.slf4j.Logger;\r
43 import org.slf4j.LoggerFactory;\r
44 \r
45 public final class CustomOperationsCreator implements OperationsCreator {\r
46   private static final Logger logger = LoggerFactory.getLogger(CustomOperationsCreator.class);\r
47 \r
48   private String macID = null;\r
49 \r
50   private OperationService operationService;\r
51 \r
52   public CustomOperationsCreator(String macID) {\r
53     this.macID = macID;\r
54   }\r
55 \r
56   @Override\r
57   public NetconfOperationService getNetconfOperationService(final Set<Capability> caps,\r
58       final SessionIdProvider idProvider, final String netconfSessionIdForReporting) {\r
59     if (null == operationService) {\r
60       operationService = new OperationService(idProvider.getCurrentSessionId(), macID);\r
61     }\r
62     return operationService;\r
63   }\r
64 \r
65   static class OperationService implements NetconfOperationService {\r
66 \r
67     private final long currentSessionId;\r
68     private String macID;\r
69 \r
70     OperationService(final long currentSessionId, String macID) {\r
71       this.currentSessionId = currentSessionId;\r
72       this.macID = macID;\r
73     }\r
74 \r
75     @Override\r
76     public Set<NetconfOperation> getNetconfOperations() {\r
77       final DataList storage = new DataList();\r
78       final GetOperation oGet = new GetOperation(String.valueOf(currentSessionId), storage, macID);\r
79       final GetConfigOperation oGetConfig =\r
80           new GetConfigOperation(String.valueOf(currentSessionId), Optional.empty(), macID);\r
81       final SetConfigOperation oSetConfig =\r
82           new SetConfigOperation(String.valueOf(currentSessionId), macID);\r
83       final DeleteConfigOperation oDelConfig =\r
84           new DeleteConfigOperation(String.valueOf(currentSessionId), storage, macID);\r
85       final OperationCommit oCommit = new OperationCommit(String.valueOf(currentSessionId));\r
86       final OperationLock oLock = new OperationLock(String.valueOf(currentSessionId));\r
87       final OperationUnLock oUnlock = new OperationUnLock(String.valueOf(currentSessionId));\r
88       final CreateSubscription sCreateSubs =\r
89           new CreateSubscription(String.valueOf(currentSessionId), Optional.empty(), macID);\r
90       SoftwareDownloadOperation swDownloadOperation = new SoftwareDownloadOperation(macID);\r
91       SoftwareActivateOperation swActivateOperation = new SoftwareActivateOperation(macID);\r
92       return Sets.newHashSet(oGet, oGetConfig, oSetConfig, oDelConfig, oCommit, oLock, oUnlock,\r
93           sCreateSubs, swDownloadOperation, swActivateOperation);\r
94     }\r
95 \r
96     @Override\r
97     public void close() {\r
98       logger.debug("close called on CustomOperationsCreator");\r
99     }\r
100 \r
101   }\r
102 }\r