Blueprint Processor Python Script Components
authorCherukuri, Venkatanaresh (vn166g) <vn166g@att.com>
Tue, 5 Feb 2019 14:47:55 +0000 (09:47 -0500)
committervenkatanaresh cherukuri <vn166g@att.com>
Wed, 6 Feb 2019 15:36:41 +0000 (15:36 +0000)
Adding Python scripts for Netconf Executor components

Change-Id: I6d84dea2e47860063a1140146aebe94d61f8d9c1
Issue-ID: CCSDK-997
Signed-off-by: Cherukuri, Venkatanaresh (vn166g) <vn166g@att.com>
components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json
components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/DefaultGetNetConfig.py [new file with mode: 0644]
components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/SamplePythonComponentNode.py [moved from components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py with 100% similarity]
components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/__init__.py [moved from components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/__init__.py with 100% similarity]
components/scripts/python/ccsdk_netconf/__init__.py [new file with mode: 0644]
components/scripts/python/ccsdk_netconf/common.py [new file with mode: 0644]
components/scripts/python/ccsdk_netconf/constant.py [new file with mode: 0644]
components/scripts/python/ccsdk_netconf/netconf_constant.py [new file with mode: 0644]
components/scripts/python/ccsdk_netconf/netconfclient.py [new file with mode: 0644]

index a3bf546..822cc68 100644 (file)
         "artifacts": {
           "component-script": {
             "type": "artifact-script-jython",
-            "file": "Scripts/SamplePythonComponentNode.py"
+            "file": "Scripts/python/SamplePythonComponentNode.py"
           }
         }
       },
         "artifacts": {
           "component-script": {
             "type": "artifact-script-jython",
-            "file": "Scripts/SamplePythonComponentNode.py"
+            "file": "Scripts/python/SamplePythonComponentNode.py"
           }
         }
       },
         "artifacts": {
           "component-script": {
             "type": "artifact-script-jython",
-            "file": "Scripts/SamplePythonComponentNode.py"
+            "file": "Scripts/python/DefaultGetNetConfig.py"
           }
         }
       },
diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/DefaultGetNetConfig.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/DefaultGetNetConfig.py
new file mode 100644 (file)
index 0000000..4db7c73
--- /dev/null
@@ -0,0 +1,50 @@
+import  netconf_constant
+from netconfclient import NetconfClient
+from java.lang import Exception
+from abstract_blueprint_function import AbstractPythonComponentFunction
+from org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor import NetconfRpcService
+from org.onap.ccsdk.apps.controllerblueprints.core.utils import JacksonUtils
+from org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.interfaces import DeviceInfo
+from org.onap.ccsdk.apps.controllerblueprints.core.service import BluePrintRuntimeService
+
+
+class DefaultGetNetConfig(AbstractPythonComponentFunction):
+    def process(self, execution_request):
+        try:
+            log = globals()[netconf_constant.SERVICE_LOG]
+            print(globals())
+            #requestId = globals()[netconf_constant.PARAM_REQUEST_ID]
+            requestId = '1234'
+
+            bluePrintRuntimeService = globals()['bluePrintRuntimeService']
+
+            capabilityProperty = bluePrintRuntimeService.resolveNodeTemplateCapabilityProperties("sample-netconf-device","netconf")
+
+            log.info("capabilityProperty {}",capabilityProperty)
+            netconfService = NetconfRpcService()
+            nc = NetconfClient(log, netconfService)
+
+            nc.connect(netconfService.getNetconfDeviceInfo(capabilityProperty))
+            runningConfigTemplate = "runningconfig-template"
+
+            runningConfigMessageId = "get-config-" + requestId
+
+            deviceResponse = nc.getConfig(messageId=runningConfigMessageId,
+                                          filter=runningConfigTemplate)
+
+            log.info("Get Running Config Response {} ", deviceResponse.responseMessage)
+            if(deviceResponse !='null') :
+                status = deviceResponse.status
+                responseData = "{}"
+                if (deviceResponse.status != netconf_constant.STATUS_SUCCESS and deviceResponse.errorMessage != 'null'):
+                    errorMessage = "Get Running Config Failure ::"+ deviceResponse.errorMessage
+
+        except Exception, err:
+            log.info("Exception in the script {}",err.getMessage())
+            status = netconf_constant.STATUS_FAILURE
+            errorMessage = "Get Running Config Failure ::"+err.getMessage()
+
+    def  recover(self, runtime_exception, execution_request):
+        print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH
+        return None
+
diff --git a/components/scripts/python/ccsdk_netconf/__init__.py b/components/scripts/python/ccsdk_netconf/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/components/scripts/python/ccsdk_netconf/common.py b/components/scripts/python/ccsdk_netconf/common.py
new file mode 100644 (file)
index 0000000..139597f
--- /dev/null
@@ -0,0 +1,2 @@
+
+
diff --git a/components/scripts/python/ccsdk_netconf/constant.py b/components/scripts/python/ccsdk_netconf/constant.py
new file mode 100644 (file)
index 0000000..534ca9e
--- /dev/null
@@ -0,0 +1,15 @@
+SERVICE_LOG = "log"
+SERVICE_NETCONF = "netconfService"
+SERVICE_MESSAGE = "messageService"
+
+PARAM_REQUEST_ID = "requestId"
+PARAM_ACTION = "action"
+
+STATUS_SUCCESS = "success"
+STATUS_FAILURE = "failure"
+
+CONFIG_TARGET_RUNNING = "running"
+CONFIG_TARGET_CANDIDATE = "candidate"
+CONFIG_DEFAULT_OPERATION_MERGE = "merge"
+CONFIG_DEFAULT_OPERATION_REPLACE = "replace"
+CONFIG_DEFAULT_OPERATION_NONE = "none"
diff --git a/components/scripts/python/ccsdk_netconf/netconf_constant.py b/components/scripts/python/ccsdk_netconf/netconf_constant.py
new file mode 100644 (file)
index 0000000..534ca9e
--- /dev/null
@@ -0,0 +1,15 @@
+SERVICE_LOG = "log"
+SERVICE_NETCONF = "netconfService"
+SERVICE_MESSAGE = "messageService"
+
+PARAM_REQUEST_ID = "requestId"
+PARAM_ACTION = "action"
+
+STATUS_SUCCESS = "success"
+STATUS_FAILURE = "failure"
+
+CONFIG_TARGET_RUNNING = "running"
+CONFIG_TARGET_CANDIDATE = "candidate"
+CONFIG_DEFAULT_OPERATION_MERGE = "merge"
+CONFIG_DEFAULT_OPERATION_REPLACE = "replace"
+CONFIG_DEFAULT_OPERATION_NONE = "none"
diff --git a/components/scripts/python/ccsdk_netconf/netconfclient.py b/components/scripts/python/ccsdk_netconf/netconfclient.py
new file mode 100644 (file)
index 0000000..448e03d
--- /dev/null
@@ -0,0 +1,56 @@
+from netconf_constant import CONFIG_TARGET_RUNNING, CONFIG_DEFAULT_OPERATION_REPLACE
+
+
+
+class NetconfClient:
+
+    def __init__(self, log, nc):
+        self.log = log
+        self.nc = nc
+
+    def disconnect(self):
+        self.nc.disconnect()
+        return
+
+    def connect(self,deviceInfo):
+        self.nc.connect(deviceInfo)
+        return
+
+    def lock(self, messageId, configTarget, messageTimeout=30):
+        deviceResponse = self.nc.lock(messageId, configTarget, messageTimeout)
+        return deviceResponse
+
+    def getConfig(self, messageId, filter, configTarget=CONFIG_TARGET_RUNNING, messageTimeout=30):
+        self.log.info("in the ncclient getConfig {}",messageId)
+        self.log.info("in the ncclient getConfig {}",filter)
+        deviceResponse = self.nc.getConfig(messageId, filter, configTarget, messageTimeout)
+        return deviceResponse
+    
+    def editConfig(self, messageId, messageContent, reConnect=False, wait=0, lock=False,
+                   configTarget=CONFIG_TARGET_RUNNING, editDefaultOperation=CONFIG_DEFAULT_OPERATION_REPLACE, 
+                   deleteConfig= False, validate= False, commit=False, discardChanges =True, unlock=False, 
+                   preRestartWait=0, postRestartWait=0, messageTimeout=30):
+        deviceResponse = self.nc.editConfig(messageId, messageContent, reConnect, wait, lock, configTarget,
+                                            editDefaultOperation, deleteConfig, validate, commit, discardChanges, unlock,
+                                            preRestartWait, postRestartWait, messageTimeout)
+        return deviceResponse
+
+    def commit(self, messageId, message, discardChanges =True, messageTimeout=30):
+        deviceResponse = self.nc.commit(messageId, message, discardChanges, messageTimeout)
+        return deviceResponse
+
+    def unLock(self, messageId, configTarget, messageTimeout=30):
+        deviceResponse = self.nc.unLock(messageId, configTarget, messageTimeout)
+        return deviceResponse
+
+    def discardChanges(self, messageId, messageTimeout=30):
+        deviceResponse = self.nc.discardChanges(messageId, messageTimeout)
+        return deviceResponse
+
+    def close(self, messageId, force=False, messageTimeout=30):
+        deviceResponse = self.nc.close(messageId, force, messageTimeout)
+        return deviceResponse
+
+    def rpc(self, request, messageId, messageTimeout=30):
+        deviceResponse = self.nc.rpc(request, messageId, messageTimeout)
+        return deviceResponse