summaryrefslogtreecommitdiffstats
path: root/components/scripts/python/ccsdk_netconf
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@linuxfoundation.org>2019-03-22 10:35:38 -0700
committerJessica Wagantall <jwagantall@linuxfoundation.org>2019-03-22 10:36:17 -0700
commit995a36660fc855447d69a41a9a25b6b27fa57bf0 (patch)
treed5f5cb3dfaac6e31f9f2d885a04c9e180a2a02c3 /components/scripts/python/ccsdk_netconf
parent9cee11e750a6ea570bf3580f5f20399bf898e694 (diff)
parent86233d8ea68bebb4e49cc8d1378917f2e1d3cee4 (diff)
Migrate "components" from ccsdk/apps
Migrate code from ccsdk/apps components subfolder into ccsdk/cds Issue-ID: CIMAN-245 Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
Diffstat (limited to 'components/scripts/python/ccsdk_netconf')
-rw-r--r--components/scripts/python/ccsdk_netconf/__init__.py0
-rw-r--r--components/scripts/python/ccsdk_netconf/common.py28
-rw-r--r--components/scripts/python/ccsdk_netconf/netconf_constant.py15
-rw-r--r--components/scripts/python/ccsdk_netconf/netconfclient.py62
4 files changed, 105 insertions, 0 deletions
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
--- /dev/null
+++ b/components/scripts/python/ccsdk_netconf/__init__.py
diff --git a/components/scripts/python/ccsdk_netconf/common.py b/components/scripts/python/ccsdk_netconf/common.py
new file mode 100644
index 000000000..f161e29ff
--- /dev/null
+++ b/components/scripts/python/ccsdk_netconf/common.py
@@ -0,0 +1,28 @@
+# 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.
+
+class ResolutionHelper:
+
+ def __init__(self, component_function):
+ self.component_function = component_function
+
+ def resolve_and_generate_message_from_template_prefix(self, artifact_prefix):
+ return self.component_function.resolveAndGenerateMessage(artifact_prefix)
+
+ def resolve_and_generate_message(self, artifact_mapping, artifact_template):
+ return self.component_function.resolveAndGenerateMessage(artifact_mapping,
+ artifact_template)
+
+ def retrieve_resolved_template_from_database(self, key, artifact_template):
+ return self.component_function.resolveFromDatabase(key, artifact_template)
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..e263ba8f7
--- /dev/null
+++ b/components/scripts/python/ccsdk_netconf/netconfclient.py
@@ -0,0 +1,62 @@
+from netconf_constant import CONFIG_TARGET_RUNNING, CONFIG_TARGET_CANDIDATE, \
+ CONFIG_DEFAULT_OPERATION_REPLACE
+
+
+class NetconfClient:
+
+ 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, config_target=CONFIG_TARGET_CANDIDATE):
+ device_response = self.netconf_rpc_client.lock(config_target)
+ return device_response
+
+ def get_config(self, filter="", config_target=CONFIG_TARGET_RUNNING):
+ device_response = self.netconf_rpc_client.getConfig(filter, config_target)
+ return device_response
+
+ def edit_config(self, message_content, config_target=CONFIG_TARGET_CANDIDATE,
+ edit_default_peration=CONFIG_DEFAULT_OPERATION_REPLACE):
+ device_response = self.netconf_rpc_client.editConfig(message_content,
+ config_target,
+ edit_default_peration)
+ return device_response
+
+ def commit(self, confirmed=False, confirm_timeout=60, persist="",
+ persist_id=""):
+ device_response = self.netconf_rpc_client.commit(confirmed, confirm_timeout,
+ persist, persist_id)
+ return device_response
+
+ def invoke_rpc(self, rpc):
+ device_response = self.netconf_rpc_client.invokeRpc(rpc)
+ return device_response
+
+ def cancel_commit(self, persist_id=""):
+ device_response = self.netconf_rpc_client.cancelCommit(persist_id)
+ return device_response
+
+ def unlock(self, config_target=CONFIG_TARGET_CANDIDATE):
+ device_response = self.netconf_rpc_client.unLock(config_target)
+ return device_response
+
+ def validate(self, config_target=CONFIG_TARGET_CANDIDATE):
+ device_response = self.netconf_rpc_client.validate(config_target)
+ return device_response
+
+ def discard_change(self):
+ device_response = self.netconf_rpc_client.discardConfig()
+ return device_response