From 8df5693cba361b130d9feff10e2477cfec1230d7 Mon Sep 17 00:00:00 2001 From: "Cherukuri, Venkatanaresh (vn166g)" Date: Tue, 5 Feb 2019 09:47:55 -0500 Subject: Blueprint Processor Python Script Components Adding Python scripts for Netconf Executor components Change-Id: I6d84dea2e47860063a1140146aebe94d61f8d9c1 Issue-ID: CCSDK-997 Signed-off-by: Cherukuri, Venkatanaresh (vn166g) --- .../Definitions/activation-blueprint.json | 6 +-- .../Scripts/SamplePythonComponentNode.py | 12 ----- .../baseconfiguration/Scripts/__init__.py | 0 .../Scripts/python/DefaultGetNetConfig.py | 50 +++++++++++++++++++ .../Scripts/python/SamplePythonComponentNode.py | 12 +++++ .../baseconfiguration/Scripts/python/__init__.py | 0 .../scripts/python/ccsdk_netconf/__init__.py | 0 components/scripts/python/ccsdk_netconf/common.py | 2 + .../scripts/python/ccsdk_netconf/constant.py | 15 ++++++ .../python/ccsdk_netconf/netconf_constant.py | 15 ++++++ .../scripts/python/ccsdk_netconf/netconfclient.py | 56 ++++++++++++++++++++++ 11 files changed, 153 insertions(+), 15 deletions(-) delete mode 100644 components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py delete mode 100644 components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/__init__.py create mode 100644 components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/DefaultGetNetConfig.py create mode 100644 components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/SamplePythonComponentNode.py create mode 100644 components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/__init__.py create mode 100644 components/scripts/python/ccsdk_netconf/__init__.py create mode 100644 components/scripts/python/ccsdk_netconf/common.py create mode 100644 components/scripts/python/ccsdk_netconf/constant.py create mode 100644 components/scripts/python/ccsdk_netconf/netconf_constant.py create mode 100644 components/scripts/python/ccsdk_netconf/netconfclient.py diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json index a3bf546d6..822cc68b7 100644 --- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json @@ -175,7 +175,7 @@ "artifacts": { "component-script": { "type": "artifact-script-jython", - "file": "Scripts/SamplePythonComponentNode.py" + "file": "Scripts/python/SamplePythonComponentNode.py" } } }, @@ -205,7 +205,7 @@ "artifacts": { "component-script": { "type": "artifact-script-jython", - "file": "Scripts/SamplePythonComponentNode.py" + "file": "Scripts/python/SamplePythonComponentNode.py" } } }, @@ -242,7 +242,7 @@ "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/SamplePythonComponentNode.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py deleted file mode 100644 index 0a583dc57..000000000 --- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py +++ /dev/null @@ -1,12 +0,0 @@ -from abstract_blueprint_function import AbstractPythonComponentFunction -from blueprint_constants import * - -class SamplePythonComponentNode(AbstractPythonComponentFunction): - - def process(self, execution_request): - print "Processing calling.." + PROPERTY_BLUEPRINT_BASE_PATH - return None - - def recover(self, runtime_exception, execution_request): - print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH - return None diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/__init__.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/__init__.py deleted file mode 100644 index e69de29bb..000000000 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 index 000000000..4db7c731b --- /dev/null +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/DefaultGetNetConfig.py @@ -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/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/SamplePythonComponentNode.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/SamplePythonComponentNode.py new file mode 100644 index 000000000..0a583dc57 --- /dev/null +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/SamplePythonComponentNode.py @@ -0,0 +1,12 @@ +from abstract_blueprint_function import AbstractPythonComponentFunction +from blueprint_constants import * + +class SamplePythonComponentNode(AbstractPythonComponentFunction): + + def process(self, execution_request): + print "Processing calling.." + PROPERTY_BLUEPRINT_BASE_PATH + return None + + def recover(self, runtime_exception, execution_request): + print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH + return None diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/__init__.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/python/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/components/scripts/python/ccsdk_netconf/__init__.py b/components/scripts/python/ccsdk_netconf/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/components/scripts/python/ccsdk_netconf/common.py b/components/scripts/python/ccsdk_netconf/common.py new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/components/scripts/python/ccsdk_netconf/common.py @@ -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 index 000000000..534ca9e13 --- /dev/null +++ b/components/scripts/python/ccsdk_netconf/constant.py @@ -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 index 000000000..534ca9e13 --- /dev/null +++ b/components/scripts/python/ccsdk_netconf/netconf_constant.py @@ -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 index 000000000..448e03dc1 --- /dev/null +++ b/components/scripts/python/ccsdk_netconf/netconfclient.py @@ -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 -- cgit 1.2.3-korg