From 40f887def9193ffd0f346133947d76d1ecfb3e3e Mon Sep 17 00:00:00 2001
From: PabloArmingolRobles <pablo.armingolrobles.practicas@telefonica.com>
Date: Mon, 12 Sep 2022 10:02:18 +0200
Subject: [PATCH] Virtual Circuit

---
 .../openconfig/templates/NetworkInstances.py  | 20 ++++++++++++++
 .../connection_point/edit_config.xml          | 27 +++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml

diff --git a/src/device/service/drivers/openconfig/templates/NetworkInstances.py b/src/device/service/drivers/openconfig/templates/NetworkInstances.py
index 0cd6bbfd3..8399402fa 100644
--- a/src/device/service/drivers/openconfig/templates/NetworkInstances.py
+++ b/src/device/service/drivers/openconfig/templates/NetworkInstances.py
@@ -27,6 +27,9 @@ XPATH_NI_IIP_AP         = ".//ocni:inter-instance-policies/ocni:apply-policy"
 XPATH_NI_IIP_AP_IMPORT  = ".//ocni:config/ocni:import-policy"
 XPATH_NI_IIP_AP_EXPORT  = ".//ocni:config/ocni:export-policy"
 
+XPATH_NI_CPOINTS          = ".//ocni:connection-points/ocni:connection-point"
+XPATH_NI_CPOINTS_ENDPOINT = ".//ocni:endpoints/ocni:endpoint/ocni:remote/ocni:config"
+
 def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
     response = []
     for xml_network_instance in xml_data.xpath(XPATH_NETWORK_INSTANCES, namespaces=NAMESPACES):
@@ -54,6 +57,20 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
         if len(network_instance) == 0: continue
         response.append(('/network_instance[{:s}]'.format(network_instance['name']), network_instance))
 
+        for xml_cpoints in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES):
+            cpoint = {}
+            add_value_from_tag(cpoint, 'name', ni_name)
+
+            connection_point = xml_cpoints.find('ocni:connection-point-id', namespaces=NAMESPACES)
+            add_value_from_tag(cpoint, 'connection_point', connection_point)
+
+            for xml_endpoint in xml_cpoints.xpath(XPATH_NI_CPOINTS_ENDPOINT, namespaces=NAMESPACES):
+                remote_system = xml_endpoint.find('ocni:remote-system', namespaces=NAMESPACES)
+                add_value_from_tag(cpoint, 'remote_system', remote_system)
+
+                VC_ID = xml_endpoint.find('ocni:virtual-circuit-identifier', namespaces=NAMESPACES)
+                add_value_from_tag(cpoint, 'VC_ID', VC_ID)
+
         for xml_protocol in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES):
             #LOGGER.info('xml_protocol = {:s}'.format(str(ET.tostring(xml_protocol))))
 
@@ -128,4 +145,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
                     iip_ap['name'], iip_ap['export_policy'])
                 response.append((resource_key, iip_ap))
 
+
+
+
     return response
diff --git a/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml
new file mode 100644
index 000000000..37887e9a9
--- /dev/null
+++ b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml
@@ -0,0 +1,27 @@
+<network-instances xmlns="http://openconfig.net/yang/network-instance">
+    <network-instance>
+        <name>ELAN-VC:789</name>
+        <connection-point>
+            <connection-point-id>{{connection_point}}</connection-point-id>
+            <config>
+                <connection-point-id>{{connection_point}}</connection-point-id>
+            </config>
+            <endpoints>
+                <endpoint>
+                    <endpoint-id>{{connection_point}}</endpoint-id>
+                    <config>
+                        <endpoint-id>{{connection_point}}</endpoint-id>
+                        <precedence>1</precedence>
+                        <type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:REMOTE</type>
+                    </config>
+                    <remote>
+                        <config>
+                            <virtual-circuit-identifier>{{VC_ID}}</virtual-circuit-identifier>
+                            <remote-system>{{remote_system}}</remote-system>
+                        </config>
+                    </remote>
+                </endpoint>
+            </endpoints>
+        </connection-point>
+    </network-instance>
+</network-instances>
\ No newline at end of file
-- 
GitLab