Loading delete.xml +192 −7 Original line number Diff line number Diff line Loading @@ -1202,26 +1202,211 @@ </nmc-ctp> </interface> <interface> <name>NMC-SRG-SRG1-OUT1-192081250</name> <description>Network-Media-Channel-CTP-192081250THz</description> <name>MC-TTP-DEG2-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> </interface> <interface> <name>NMC-DEG2-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> </interface> <interface> <name>MC-TTP-DEG2-AMPRX-IN-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-RX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> </interface> <interface> <name>NMC-DEG2-AMPRX-IN-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>SRG1-WSS</supporting-circuit-pack-name> <supporting-port>SRG1-OUT1</supporting-port> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-RX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> </interface> <interface> <name>MC-TTP-DEG1-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG1-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-RX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-RX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG2-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG2-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <roadm-connections> <connection-name>NMC-DEG1-AMPRX-IN-186131250 to NMC-DEG2-AMPTX-OUT-186131250</connection-name> <opticalControlMode>off</opticalControlMode> <target-output-power>0</target-output-power> <source> <src-if>NMC-DEG1-AMPRX-IN-186131250</src-if> </source> <destination> <dst-if>NMC-DEG2-AMPTX-OUT-186131250</dst-if> </destination> </roadm-connections> <interface> <name>MC-TTP-DEG2-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG2-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG1-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <roadm-connections> <connection-name>NMC-DEG1-AMPRX-IN-192081250 to NMC-SRG-SRG1-OUT1-192081250</connection-name> <connection-name>NMC-DEG2-AMPRX-IN-186131250 to NMC-DEG1-AMPTX-OUT-186131250</connection-name> <opticalControlMode>off</opticalControlMode> <target-output-power>0</target-output-power> <source> <src-if>NMC-DEG1-AMPRX-IN-192081250</src-if> <src-if>NMC-DEG2-AMPRX-IN-186131250</src-if> </source> <destination> <dst-if>NMC-SRG-SRG1-OUT1-192081250</dst-if> <dst-if>NMC-DEG1-AMPTX-OUT-186131250</dst-if> </destination> </roadm-connections> </org-openroadm-device> Loading src/context/service/database/OpticalConfig.py +26 −2 Original line number Diff line number Diff line Loading @@ -338,7 +338,8 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): ).returning(ORInterfaceModel.interface_uuid) result = session.execute(update_stmt).fetchone() ifc_uuids.append(result) else : session.query(ORInterfaceModel).delete() opticalconfig_id = run_transaction(sessionmaker(bind=db_engine), callback) return {'opticalconfig_uuid': opticalconfig_id} Loading Loading @@ -640,7 +641,7 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req opticalconfig_uuid = request.opticalconfig_id.opticalconfig_uuid channels = [] config_type = None logging.info(f"DeleteOpticalchannel {request.config}") if "type" in config : config_type= config["type"] if 'new_config' in config: Loading @@ -662,6 +663,23 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req "target_output_power": None, "status" : "DISABLED" }) elif config_type == DeviceTypeEnum.OPEN_ROADM._value_: if 'new_config' in config and 'interfaces' in config['new_config']: for i in config['new_config']['interfaces']: channels.append({ "interface_uuid" : interface_get_uuid(i['interface_name'],device_uuid), 'name' : i["interface_name"], "type" :'Null', "administrative_state": "Null", "circuit_pack_name" : 'Null', "port" : "Null", "interface_list" :'Null', "frequency" : "Null", "width" : 0, "roadm_uuid" : roadm_get_uuid(device_id), }) elif config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: channel_num = flow_id Loading Loading @@ -714,6 +732,12 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req stmt = stmt.returning(OpticalChannelModel.channel_uuid) opticalChannel_id = session.execute(stmt).fetchone() all_suceed.append(True) elif config_type == DeviceTypeEnum.OPEN_ROADM._value_: if len(channels) > 0: for i in channels : num_deleted = session.query(ORInterfaceModel).filter_by(interface_uuid=i['interface_uuid']).delete() all_suceed.append(num_deleted > 0) return all_suceed all_deleted = run_transaction(sessionmaker(bind=db_engine), callback) Loading src/device/service/OpenConfigServicer.py +9 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,15 @@ class OpenConfigServicer(DeviceServiceServicer): resources, conditions = extract_resources(config=config, device=device) driver : _Driver = get_driver(self.driver_instance_cache, device) results = driver.DeleteConfig(resources=resources,conditions=conditions) results,config_delete = driver.DeleteConfig(resources=resources,conditions=conditions) if config_delete and 'interfaces' in config_delete: if 'new_config'in config : config["new_config"]=config_delete else : config['new_config'] ={} config["new_config"]=config_delete request.config=json.dumps(config) for result in results: if result is not None: is_all_good = False Loading src/device/service/drivers/oc_driver/OCDriver.py +2 −1 Original line number Diff line number Diff line Loading @@ -190,7 +190,8 @@ def edit_config( str_config_messages=delete_optical_band(resources) elif (conditions['edit_type']=='or'): str_config_messages,new_config=handle_or_deconfiguration(resources) str_config_messages,interfaces=handle_or_deconfiguration(resources) new_config["interfaces"]=interfaces else : str_config_messages=disable_media_channel(resources) Loading src/device/service/drivers/oc_driver/templates/VPN/openroadm.py +65 −56 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ def define_interface_name (type:str,port:str,freq:int)->str: def create_network_media_channel (resources,port,cross_conn_resources,interfaces,doc, tag, text): logging.info(f"nmc resources {resources}") #logging.info(f"nmc resources {resources}") #unwanted_keys= ['max-freq','min-freq'] #config,_,_ = filter_config(resources=resources,unwanted_keys=unwanted_keys) Loading Loading @@ -153,7 +153,7 @@ def create_network_media_channel (resources,port,cross_conn_resources,interfaces "port":port, "interface_list":interface_list["value"], "frequency":freq_thz, "width":width_dict, "width":band['value'], "roadm_uuid":"" }) Loading @@ -180,12 +180,12 @@ def create_network_media_channel (resources,port,cross_conn_resources,interfaces newline = '' ) #results.append(result) logging.info(f"nmc message {results}") #logging.info(f"nmc message {results}") # return (result,interfaces) def or_create_media_channel (resources,port,cross_conn_resources,interfaces,doc, tag, text): logging.info(f'or_mc {resources} ') #logging.info(f'or_mc {resources} ') frequency_dict=next((r for r in resources if r['resource_key']== 'frequency'),None) freq_thz=None if frequency_dict and frequency_dict['value']: Loading @@ -195,21 +195,13 @@ def or_create_media_channel (resources,port,cross_conn_resources,interfaces,doc, min_freq= int(Decimal(frequency_dict["value"])) - (int(band["value"])/2) max_freq =int(Decimal(frequency_dict["value"])) + (int(band["value"])/2) #cconfig,ports,index= filter_config(resources,unwanted_keys=[]) or_device_ns="http://org/openroadm/device" or_interface_ns="http://org/openroadm/interfaces" results=[] #interfaces=[] logging.info(f"from openroadm mc {resources}") # doc, tag, text = Doc().tagtext() # with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): # with tag('org-openroadm-device', ('xmlns',or_device_ns)): # for lst_i in [list(j) for j in ports ] : # for i in lst_i: if port: Loading Loading @@ -322,17 +314,6 @@ def srg_network_media_channel_handle (resources,port,cross_conn_resources,interf interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+port),None) interface_name = next((r for r in resources if r['resource_key']== 'interface_name'+'-'+port+'-'+'nmc'),None) interface_type= next((r for r in resources if r['resource_key']== 'interface_type'+'-'+port+'-'+'nmc' ),None) logging.info(f'interface type {interface_type}') logging.info(f'interface name {interface_name}') # if interface_type and interface_type['value'] == 'nmc': # if interface_name : # cross_conn_resources['nmc_name']=interface_name['value'] # cross_conn_resources['nmc_port']=i # only port with no interface can be configured as srg # if interface_list and interface_type: # if interface_list['value'] != 'Null' and interface_type['value'] != 'srg':continue administrative_state= next((r for r in resources if r['resource_key']== 'administrative_state'+'-'+port),None) circuit_pack =next((r for r in resources if r['resource_key']=='supporting-circuit-pack-name'+'-'+port),None) Loading Loading @@ -380,7 +361,7 @@ def srg_network_media_channel_handle (resources,port,cross_conn_resources,interf def delete_interface (interface_name,doc, tag, text) : with tag('interface',operation="delete"): with tag('interface', **{'nc:operation': 'delete'}): with tag('name'):text(interface_name) Loading @@ -396,7 +377,7 @@ def delete_coss_connection (resources,doc, tag, text) : src,dst = resources['ports'] connection_name=resources[f'nmc_name_{src}']+' to '+resources[f'nmc_name_{dst}'] with tag ('roadm-connections',operation="delete"): with tag ('roadm-connections', **{'nc:operation': 'delete'}): with tag('connection-name'):text(connection_name) result = indent( Loading @@ -414,9 +395,10 @@ def or_handler (resources): interfaces= [] cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() for lst_i in [list(j) for j in ports ] : logging.info(f'or_handler {resources} ') with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): with tag('org-openroadm-device', ('xmlns',or_device_ns)): for lst_i in [list(j) for j in ports ] : for i in lst_i: interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+i),None) Loading Loading @@ -446,7 +428,21 @@ def or_handler (resources): return (edit_templates,interfaces) def delete_mc (mc_interfaces): or_device_ns="http://org/openroadm/device" or_device_ns_1='urn:ietf:params:xml:ns:netconf:base:1.0' cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): with tag('org-openroadm-device', xmlns=or_device_ns, **{'xmlns:nc': or_device_ns_1}): for i in mc_interfaces: delete_interface(i,doc,tag,text) return indent( doc.getvalue(), indentation = ' '*2, newline = '') def handle_or_deconfiguration (resources): Loading @@ -456,6 +452,7 @@ def handle_or_deconfiguration (resources): config,ports,index= filter_config(resources,unwanted_keys=[]) edit_templates= [] interfaces= [] mcs_to_delete=[] logging.info(f"resources from deconfigure or {resources}") cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() Loading @@ -470,6 +467,9 @@ def handle_or_deconfiguration (resources): cross_conn_resources[f'nmc_name_{p}']=interface_list['value'] cross_conn_resources[f'nmc_port_{p}']=p cross_conn_resources['count']+=1 interfaces.append({ 'interface_name':interface_list['value'] }) delete_interface(interface_list['value'],doc,tag,text) else : Loading @@ -478,7 +478,16 @@ def handle_or_deconfiguration (resources): cross_conn_resources[f'nmc_name_{p}']=nmc_interface['value'] cross_conn_resources[f'nmc_port_{p}']=p cross_conn_resources['count']+=1 mc_interface = nmc_interface['value'].replace('NMC',"MC") mc_interface = nmc_interface['value'].replace('NMC',"MC-TTP") interfaces.extend([{ 'interface_name':nmc_interface['value'] }, { 'interface_name':mc_interface }] ) mcs_to_delete.append(mc_interface) #delete_interface(mc_interface,doc,tag,text) delete_interface(nmc_interface['value'],doc,tag,text) if cross_conn_resources['count']==2 : Loading @@ -492,6 +501,6 @@ def handle_or_deconfiguration (resources): doc.getvalue(), indentation = ' '*2, newline = '') ) edit_templates.append(delete_mc(mcs_to_delete)) return (edit_templates,interfaces) No newline at end of file Loading
delete.xml +192 −7 Original line number Diff line number Diff line Loading @@ -1202,26 +1202,211 @@ </nmc-ctp> </interface> <interface> <name>NMC-SRG-SRG1-OUT1-192081250</name> <description>Network-Media-Channel-CTP-192081250THz</description> <name>MC-TTP-DEG2-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> </interface> <interface> <name>NMC-DEG2-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> </interface> <interface> <name>MC-TTP-DEG2-AMPRX-IN-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-RX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> </interface> <interface> <name>NMC-DEG2-AMPRX-IN-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>SRG1-WSS</supporting-circuit-pack-name> <supporting-port>SRG1-OUT1</supporting-port> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG2-TTP-RX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> </interface> <interface> <name>MC-TTP-DEG1-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>192156250.0</max-freq> <min-freq>192006250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPTX-OUT-192081250</name> <description>Media-channel-192081250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>192081250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG1-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-RX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPRX-IN</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-RX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG2-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG2-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPTX-OUT</supporting-port> <supporting-interface-list>NMC-DEG2-AMPTX-OUT-192081250</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <roadm-connections> <connection-name>NMC-DEG1-AMPRX-IN-186131250 to NMC-DEG2-AMPTX-OUT-186131250</connection-name> <opticalControlMode>off</opticalControlMode> <target-output-power>0</target-output-power> <source> <src-if>NMC-DEG1-AMPRX-IN-186131250</src-if> </source> <destination> <dst-if>NMC-DEG2-AMPTX-OUT-186131250</dst-if> </destination> </roadm-connections> <interface> <name>MC-TTP-DEG2-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG2-AMPRX-IN-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG2-AMPRX</supporting-circuit-pack-name> <supporting-port>DEG2-AMPRX-IN</supporting-port> <supporting-interface-list>NMC-DEG2-AMPRX-IN-192081250</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <interface> <name>MC-TTP-DEG1-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:mediaChannelTrailTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <mc-ttp xmlns="http://org/openroadm/media-channel-interfaces"> <max-freq>186206250.0</max-freq> <min-freq>186056250.0</min-freq> </mc-ttp> </interface> <interface> <name>NMC-DEG1-AMPTX-OUT-186131250</name> <description>Media-channel-186131250THz</description> <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type> <administrative-state>inService</administrative-state> <supporting-circuit-pack-name>DEG1-AMPTX</supporting-circuit-pack-name> <supporting-port>DEG1-AMPTX-OUT</supporting-port> <supporting-interface-list>OMS-DEG1-TTP-TX</supporting-interface-list> <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces"> <frequency>186131250</frequency> <width>150000</width> </nmc-ctp> </interface> <roadm-connections> <connection-name>NMC-DEG1-AMPRX-IN-192081250 to NMC-SRG-SRG1-OUT1-192081250</connection-name> <connection-name>NMC-DEG2-AMPRX-IN-186131250 to NMC-DEG1-AMPTX-OUT-186131250</connection-name> <opticalControlMode>off</opticalControlMode> <target-output-power>0</target-output-power> <source> <src-if>NMC-DEG1-AMPRX-IN-192081250</src-if> <src-if>NMC-DEG2-AMPRX-IN-186131250</src-if> </source> <destination> <dst-if>NMC-SRG-SRG1-OUT1-192081250</dst-if> <dst-if>NMC-DEG1-AMPTX-OUT-186131250</dst-if> </destination> </roadm-connections> </org-openroadm-device> Loading
src/context/service/database/OpticalConfig.py +26 −2 Original line number Diff line number Diff line Loading @@ -338,7 +338,8 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): ).returning(ORInterfaceModel.interface_uuid) result = session.execute(update_stmt).fetchone() ifc_uuids.append(result) else : session.query(ORInterfaceModel).delete() opticalconfig_id = run_transaction(sessionmaker(bind=db_engine), callback) return {'opticalconfig_uuid': opticalconfig_id} Loading Loading @@ -640,7 +641,7 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req opticalconfig_uuid = request.opticalconfig_id.opticalconfig_uuid channels = [] config_type = None logging.info(f"DeleteOpticalchannel {request.config}") if "type" in config : config_type= config["type"] if 'new_config' in config: Loading @@ -662,6 +663,23 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req "target_output_power": None, "status" : "DISABLED" }) elif config_type == DeviceTypeEnum.OPEN_ROADM._value_: if 'new_config' in config and 'interfaces' in config['new_config']: for i in config['new_config']['interfaces']: channels.append({ "interface_uuid" : interface_get_uuid(i['interface_name'],device_uuid), 'name' : i["interface_name"], "type" :'Null', "administrative_state": "Null", "circuit_pack_name" : 'Null', "port" : "Null", "interface_list" :'Null', "frequency" : "Null", "width" : 0, "roadm_uuid" : roadm_get_uuid(device_id), }) elif config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: channel_num = flow_id Loading Loading @@ -714,6 +732,12 @@ def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, req stmt = stmt.returning(OpticalChannelModel.channel_uuid) opticalChannel_id = session.execute(stmt).fetchone() all_suceed.append(True) elif config_type == DeviceTypeEnum.OPEN_ROADM._value_: if len(channels) > 0: for i in channels : num_deleted = session.query(ORInterfaceModel).filter_by(interface_uuid=i['interface_uuid']).delete() all_suceed.append(num_deleted > 0) return all_suceed all_deleted = run_transaction(sessionmaker(bind=db_engine), callback) Loading
src/device/service/OpenConfigServicer.py +9 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,15 @@ class OpenConfigServicer(DeviceServiceServicer): resources, conditions = extract_resources(config=config, device=device) driver : _Driver = get_driver(self.driver_instance_cache, device) results = driver.DeleteConfig(resources=resources,conditions=conditions) results,config_delete = driver.DeleteConfig(resources=resources,conditions=conditions) if config_delete and 'interfaces' in config_delete: if 'new_config'in config : config["new_config"]=config_delete else : config['new_config'] ={} config["new_config"]=config_delete request.config=json.dumps(config) for result in results: if result is not None: is_all_good = False Loading
src/device/service/drivers/oc_driver/OCDriver.py +2 −1 Original line number Diff line number Diff line Loading @@ -190,7 +190,8 @@ def edit_config( str_config_messages=delete_optical_band(resources) elif (conditions['edit_type']=='or'): str_config_messages,new_config=handle_or_deconfiguration(resources) str_config_messages,interfaces=handle_or_deconfiguration(resources) new_config["interfaces"]=interfaces else : str_config_messages=disable_media_channel(resources) Loading
src/device/service/drivers/oc_driver/templates/VPN/openroadm.py +65 −56 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ def define_interface_name (type:str,port:str,freq:int)->str: def create_network_media_channel (resources,port,cross_conn_resources,interfaces,doc, tag, text): logging.info(f"nmc resources {resources}") #logging.info(f"nmc resources {resources}") #unwanted_keys= ['max-freq','min-freq'] #config,_,_ = filter_config(resources=resources,unwanted_keys=unwanted_keys) Loading Loading @@ -153,7 +153,7 @@ def create_network_media_channel (resources,port,cross_conn_resources,interfaces "port":port, "interface_list":interface_list["value"], "frequency":freq_thz, "width":width_dict, "width":band['value'], "roadm_uuid":"" }) Loading @@ -180,12 +180,12 @@ def create_network_media_channel (resources,port,cross_conn_resources,interfaces newline = '' ) #results.append(result) logging.info(f"nmc message {results}") #logging.info(f"nmc message {results}") # return (result,interfaces) def or_create_media_channel (resources,port,cross_conn_resources,interfaces,doc, tag, text): logging.info(f'or_mc {resources} ') #logging.info(f'or_mc {resources} ') frequency_dict=next((r for r in resources if r['resource_key']== 'frequency'),None) freq_thz=None if frequency_dict and frequency_dict['value']: Loading @@ -195,21 +195,13 @@ def or_create_media_channel (resources,port,cross_conn_resources,interfaces,doc, min_freq= int(Decimal(frequency_dict["value"])) - (int(band["value"])/2) max_freq =int(Decimal(frequency_dict["value"])) + (int(band["value"])/2) #cconfig,ports,index= filter_config(resources,unwanted_keys=[]) or_device_ns="http://org/openroadm/device" or_interface_ns="http://org/openroadm/interfaces" results=[] #interfaces=[] logging.info(f"from openroadm mc {resources}") # doc, tag, text = Doc().tagtext() # with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): # with tag('org-openroadm-device', ('xmlns',or_device_ns)): # for lst_i in [list(j) for j in ports ] : # for i in lst_i: if port: Loading Loading @@ -322,17 +314,6 @@ def srg_network_media_channel_handle (resources,port,cross_conn_resources,interf interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+port),None) interface_name = next((r for r in resources if r['resource_key']== 'interface_name'+'-'+port+'-'+'nmc'),None) interface_type= next((r for r in resources if r['resource_key']== 'interface_type'+'-'+port+'-'+'nmc' ),None) logging.info(f'interface type {interface_type}') logging.info(f'interface name {interface_name}') # if interface_type and interface_type['value'] == 'nmc': # if interface_name : # cross_conn_resources['nmc_name']=interface_name['value'] # cross_conn_resources['nmc_port']=i # only port with no interface can be configured as srg # if interface_list and interface_type: # if interface_list['value'] != 'Null' and interface_type['value'] != 'srg':continue administrative_state= next((r for r in resources if r['resource_key']== 'administrative_state'+'-'+port),None) circuit_pack =next((r for r in resources if r['resource_key']=='supporting-circuit-pack-name'+'-'+port),None) Loading Loading @@ -380,7 +361,7 @@ def srg_network_media_channel_handle (resources,port,cross_conn_resources,interf def delete_interface (interface_name,doc, tag, text) : with tag('interface',operation="delete"): with tag('interface', **{'nc:operation': 'delete'}): with tag('name'):text(interface_name) Loading @@ -396,7 +377,7 @@ def delete_coss_connection (resources,doc, tag, text) : src,dst = resources['ports'] connection_name=resources[f'nmc_name_{src}']+' to '+resources[f'nmc_name_{dst}'] with tag ('roadm-connections',operation="delete"): with tag ('roadm-connections', **{'nc:operation': 'delete'}): with tag('connection-name'):text(connection_name) result = indent( Loading @@ -414,9 +395,10 @@ def or_handler (resources): interfaces= [] cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() for lst_i in [list(j) for j in ports ] : logging.info(f'or_handler {resources} ') with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): with tag('org-openroadm-device', ('xmlns',or_device_ns)): for lst_i in [list(j) for j in ports ] : for i in lst_i: interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+i),None) Loading Loading @@ -446,7 +428,21 @@ def or_handler (resources): return (edit_templates,interfaces) def delete_mc (mc_interfaces): or_device_ns="http://org/openroadm/device" or_device_ns_1='urn:ietf:params:xml:ns:netconf:base:1.0' cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): with tag('org-openroadm-device', xmlns=or_device_ns, **{'xmlns:nc': or_device_ns_1}): for i in mc_interfaces: delete_interface(i,doc,tag,text) return indent( doc.getvalue(), indentation = ' '*2, newline = '') def handle_or_deconfiguration (resources): Loading @@ -456,6 +452,7 @@ def handle_or_deconfiguration (resources): config,ports,index= filter_config(resources,unwanted_keys=[]) edit_templates= [] interfaces= [] mcs_to_delete=[] logging.info(f"resources from deconfigure or {resources}") cross_conn_resources={"count":0} doc, tag, text = Doc().tagtext() Loading @@ -470,6 +467,9 @@ def handle_or_deconfiguration (resources): cross_conn_resources[f'nmc_name_{p}']=interface_list['value'] cross_conn_resources[f'nmc_port_{p}']=p cross_conn_resources['count']+=1 interfaces.append({ 'interface_name':interface_list['value'] }) delete_interface(interface_list['value'],doc,tag,text) else : Loading @@ -478,7 +478,16 @@ def handle_or_deconfiguration (resources): cross_conn_resources[f'nmc_name_{p}']=nmc_interface['value'] cross_conn_resources[f'nmc_port_{p}']=p cross_conn_resources['count']+=1 mc_interface = nmc_interface['value'].replace('NMC',"MC") mc_interface = nmc_interface['value'].replace('NMC',"MC-TTP") interfaces.extend([{ 'interface_name':nmc_interface['value'] }, { 'interface_name':mc_interface }] ) mcs_to_delete.append(mc_interface) #delete_interface(mc_interface,doc,tag,text) delete_interface(nmc_interface['value'],doc,tag,text) if cross_conn_resources['count']==2 : Loading @@ -492,6 +501,6 @@ def handle_or_deconfiguration (resources): doc.getvalue(), indentation = ' '*2, newline = '') ) edit_templates.append(delete_mc(mcs_to_delete)) return (edit_templates,interfaces) No newline at end of file