+++ /dev/null
-import netconf_constant
-from netconfclient import NetconfClient
-from java.lang import Exception
-from org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor import NetconfComponentFunction
-
-class DefaultGetNetConfig(NetconfComponentFunction):
-
- def process(self, execution_request):
- try:
- log = globals()[netconf_constant.SERVICE_LOG]
- print(globals())
- #requestId = globals()[netconf_constant.PARAM_REQUEST_ID]
- requestId = '1234'
- nc = NetconfClient(log, self)
-
- # Create RPC Serivice
- nc.createRPCServiceFromRequirement("netconf-connection")
-
- 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.error("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
-
--- /dev/null
+# Copyright (c) 2019 Bell Canada.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import netconf_constant
+from java.lang import Exception as JavaException
+from netconfclient import NetconfClient
+from org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor import \
+ NetconfComponentFunction
+
+
+class NetconfRpcExample(NetconfComponentFunction):
+
+ def process(self, execution_request):
+ try:
+ log = globals()[netconf_constant.SERVICE_LOG]
+ print(globals())
+ nc = NetconfClient(log, self, "netconf-connection")
+ nc.connect()
+
+ payload = "<configuration xmlns:junos=\"http://xml.juniper.net/junos/17.4R1/junos\"><system xmlns=\"http://yang.juniper.net/junos-qfx/conf/system\"><host-name operation=\"delete\"/><host-name operation=\"create\">DEMO</host-name></system></configuration>"
+
+ response = nc.lock(message_id="lock-123")
+ if not response.isSuccess():
+ log.error(response.errorMessage)
+
+ # nc.edit_config(message_id="edit-config-1", message_content=payload,edit_default_peration="none")
+ # nc.validate(message_id="validate-123")
+ # nc.discard_change(message_id="discard-123")
+ # nc.validate(message_id="validate-123")
+ # nc.commit(message_id="commit-123")
+ # nc.unlock(message_id="unlock-123")
+ # nc.disconnect()
+
+ except JavaException, err:
+ log.error("Java Exception in the script {}", err)
+ except Exception, err:
+ log.error("Python Exception in the script {}", err)
+
+ def recover(self, runtime_exception, execution_request):
+ print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH
+ return None
-from netconf_constant import CONFIG_TARGET_RUNNING, CONFIG_DEFAULT_OPERATION_REPLACE
-
+from netconf_constant import CONFIG_TARGET_RUNNING, CONFIG_TARGET_CANDIDATE, \
+ CONFIG_DEFAULT_OPERATION_REPLACE
class NetconfClient:
- def __init__(self, log, componentFunction):
- self.log = log
- self.componentFunction = componentFunction
- self.nc = None
-
- def createRPCServiceFromRequirement(self, requirementName):
- self.nc = self.componentFunction.netconfRpcClientService(requirementName)
-
- 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
+ def __init__(self, log, component_function, requirement_name):
+ self.log = log
+ self.component_function = component_function
+ netconf_device = self.component_function.initializeNetconfConnection(
+ requirement_name)
+ self.netconf_rpc_client = netconf_device.netconfRpcService
+ self.netconf_session = netconf_device.netconfSession
+
+ def disconnect(self):
+ self.netconf_session.disconnect()
+ return
+
+ def connect(self):
+ self.netconf_session.connect()
+ return
+
+ def lock(self, message_id, config_target=CONFIG_TARGET_CANDIDATE,
+ message_timeout=30):
+ device_response = self.netconf_rpc_client.lock(message_id, config_target,
+ message_timeout)
+ return device_response
+
+ def get_config(self, message_id, filter="",
+ config_target=CONFIG_TARGET_RUNNING, message_timeout=30):
+ self.log.info("in the ncclient getConfig {}", message_id)
+ device_response = self.netconf_rpc_client.getConfig(message_id, filter,
+ config_target,
+ message_timeout)
+ return device_response
+
+ def edit_config(self, message_id, message_content, lock=False,
+ config_target=CONFIG_TARGET_CANDIDATE,
+ edit_default_peration=CONFIG_DEFAULT_OPERATION_REPLACE,
+ deleteConfig=False, validate=False, commit=False, discard_change=False,
+ unlock=False, message_timeout=30):
+ device_response = self.netconf_rpc_client.editConfig(message_id,
+ message_content, lock,
+ config_target,
+ edit_default_peration,
+ deleteConfig, validate,
+ commit, discard_change,
+ unlock,
+ message_timeout)
+ return device_response
+
+ def commit(self, message_id, discard_change=True,
+ message_timeout=30):
+ device_response = self.netconf_rpc_client.commit(message_id, discard_change,
+ message_timeout)
+ return device_response
+
+ def unlock(self, message_id, config_target=CONFIG_TARGET_CANDIDATE,
+ message_timeout=30):
+ device_response = self.netconf_rpc_client.unLock(message_id, config_target,
+ message_timeout)
+ return device_response
+
+ def validate(self, message_id, config_target=CONFIG_TARGET_CANDIDATE,
+ message_timeout=30):
+ device_response = self.netconf_rpc_client.validate(message_id,
+ config_target,
+ message_timeout)
+ return device_response
+
+ def discard_change(self, message_id, message_timeout=30):
+ device_response = self.netconf_rpc_client.discardConfig(message_id,
+ message_timeout)
+ return device_response