Skip to content
Snippets Groups Projects
Commit 7748a4d7 authored by Andrea Sgambelluri's avatar Andrea Sgambelluri
Browse files

HHI transponder integration

parent 038c5d64
Branches tmp-integration
No related tags found
1 merge request!341Draft: Resolve "optical bandwidth expansion"
......@@ -28,9 +28,9 @@ from device.service.driver_api._Driver import _Driver
from .templates import compose_config, cli_compose_config, ufi_interface, cisco_interface
from .templates.VPN.common import seperate_port_config
from .templates.VPN.roadms import (
create_optical_band, disable_media_channel, delete_optical_band, create_media_channel
create_optical_band, disable_media_channel, delete_optical_band, create_media_channel,
)
from .templates.VPN.transponder import edit_optical_channel, change_optical_channel_status
from .templates.VPN.transponder import edit_optical_channel, change_optical_channel_status, disable_optical_channel
from .RetryDecorator import retry
from context.client.ContextClient import ContextClient
from common.proto.context_pb2 import OpticalConfig
......@@ -177,7 +177,8 @@ def edit_config(
# Device type is Transponder
if (conditions['edit_type'] == "optical-channel"):
_,ports,_=seperate_port_config(resources)
str_config_messages=change_optical_channel_status(state="DISABLED",ports=ports)
#str_config_messages=change_optical_channel_status(state="DISABLED",ports=ports)
str_config_messages=disable_optical_channel(ports=ports)
# Device type is Roadm
elif (conditions['edit_type']=='optical-band'):
......
......@@ -109,6 +109,49 @@ def create_optical_channel(resources:list[dict],ports:list[dict],config:list[dic
return results
def disable_optical_channel(ports:list[dict] ):
# unwanted_keys=['bidir','source_port','destination_port','handled_flow','name','channel_namespace','admin-state'
# ,'optical-band-parent']
results =[]
port_val = ""
if 'destination_port' in ports and ports['destination_port'][0] is not None:
port_val = ports['destination_port'][0]
else:
port_val = ports['source_port'][0]
doc, tag, text = Doc().tagtext()
#with tag('config'):
with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"):
with tag('components', xmlns="http://openconfig.net/yang/platform"):
with tag('component'):
with tag('name'):text("channel-{}".format(port_val))
with tag('config'):
with tag('name'):text("channel-{}".format(port_val))
with tag('optical-channel',xmlns="http://openconfig.net/yang/terminal-device"):
with tag('config'):
with tag('frequency'):text('199000000')
with tag('target-output-power'):text('-40')
with tag('operational-mode'):text('0')
with tag('terminal-device', xmlns="http://openconfig.net/yang/terminal-device"):
with tag('logical-channels'):
with tag('channel'):
with tag('index'):text("{}".format(port_val))
with tag('config'):
with tag('index'):text("{}".format(port_val))
with tag('admin-state'):text("DISABLED")
result = indent(
doc.getvalue(),
indentation = ' '*2,
newline = ''
)
results.append(result)
return results
def change_optical_channel_status (state:str,ports:list[dict]) :
port_val=""
if 'destination_port' in ports and ports['destination_port'][0] is not None:
......@@ -139,6 +182,7 @@ def change_optical_channel_status (state:str,ports:list[dict]) :
return results
def edit_optical_channel (resources:list[dict]):
unwanted_keys=['destination_port','source_port','channel_namespace'
......
......@@ -107,8 +107,11 @@ def extract_channels_based_on_channelnamespace (xml_data:str,channel_namespace:s
# Extract and print the component names
for component in component_names:
component_name = component.find('namespace:name', namespace).text
channels.append({"index":component_name})
component_name = component.find('namespace:name', namespace).text
#fix for ofc2025 demo with HHI transceiver
#if "transceiver" not in component_name and "port" not in component_name:
if "channel" in component_name:
channels.append({"index":component_name})
else :
namespaces = {
'wr': 'http://openconfig.net/yang/wavelength-router',
......@@ -305,6 +308,7 @@ def extract_ports_based_on_type (xml_data:str):
root = ET.fromstring(xml_bytes)
namespace = {'oc': 'http://openconfig.net/yang/platform', 'typex': 'http://openconfig.net/yang/platform-types'}
ports = []
'''
components = root.findall(".//oc:state[oc:type]",namespace)
for component in components:
type_ele = component.find(".//oc:type",namespace)
......@@ -315,6 +319,18 @@ def extract_ports_based_on_type (xml_data:str):
port_index=name_element.text.split("-")[1]
port = (port_name,port_index)
ports.append(port)
'''
optical_channel_namespaces = {
'ns': 'urn:ietf:params:xml:ns:netconf:base:1.0',
'oc': 'http://openconfig.net/yang/platform',
}
components = root.findall('.//oc:component',namespaces=optical_channel_namespaces)
for component in components:
name=component.find('.//oc:name',optical_channel_namespaces).text
if "port" in name:
port_index=name.split("-")[1]
port = (name,port_index)
ports.append(port)
return ports
def transponder_values_extractor(data_xml:str,resource_keys:list,dic:dict):
......@@ -327,6 +343,7 @@ def transponder_values_extractor(data_xml:str,resource_keys:list,dic:dict):
channel_names= extract_channels_based_on_channelnamespace(xml_data=data_xml,channel_namespace=channel_namespace,is_opticalband=is_opticalband)
ports = extract_ports_based_on_type(data_xml)
logging.info(f"OFC25---- {channel_names}, {ports}")
optical_channels_params=[]
ports_result=[]
interfaces=[]
......
......@@ -276,7 +276,10 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
ports = []
for endpoint_id in service.service_endpoint_ids:
endpoint_device_uuid = endpoint_id.device_id.device_uuid.uuid
endpoint_device_name = device_names[endpoint_device_uuid]
if "." in endpoint_device_uuid:
endpoint_device_name = endpoint_device_uuid
else:
endpoint_device_name = device_names[endpoint_device_uuid]
devs.append(endpoint_device_name)
ports.append(endpoint_id.endpoint_uuid.uuid)
src = devs[0]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment