Commit 492ce5ea authored by Mohammad Ismaeel's avatar Mohammad Ismaeel
Browse files

Openroamd configuration bugs fixed

parent 4850ea5f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -226,5 +226,5 @@
    "port": "SRG1-INT-IN1/SRG1-INT-IN2/SRG1-INT-IN3/SRG1-INT-IN4/SRG1-INT-OUT1/SRG1-INT-OUT2/SRG1-INT-OUT3/SRG1-INT-OUT4/SRG1-IN1/SRG1-IN2/SRG1-IN3/SRG1-IN4/SRG1-IN5/SRG1-IN6/SRG1-OUT1/SRG1-OUT2/SRG1-OUT3/SRG1-OUT4/SRG1-OUT5/SRG1-OUT6",
    "interface_list": "NMC-SRG-SRG1-WSS-192031250",
    "frequency": 0.0,
    "width": 0
}
 No newline at end of file
    "a": 0
a
 No newline at end of file
+1 −78
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?><data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <org-openroadm-device xmlns="http://org/openroadm/device" xmlns:wd="urn:ietf:params:xml:ns:netconf:default:1.0">
    <org-openroadm-device xmlns="http://org/openroadm/device">
      <info>
        <node-id>ROADM-Torino</node-id>
        <node-number>1</node-number>
@@ -1175,83 +1175,6 @@
        <supporting-port>DEG4-AMPTX-OUT</supporting-port>
        <supporting-interface-list>OTS-DEG4-TTP-TX</supporting-interface-list>
      </interface>
      <interface>
        <name>MC-TTP-DEG1-RX-192056250</name>
        <description>Media-channel-192056250THz</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>192056300000.0</max-freq>
          <min-freq>192056200000.0</min-freq>
        </mc-ttp>
        <supporting-interface-list>NMC-CTP-DEG1-RX-192056250</supporting-interface-list>
      </interface>
      <interface>
        <name>NMC-CTP-DEG1-RX-192056250</name>
        <description>Media-channel-192056250THz</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>192056250</frequency>
          <width>100000.0</width>
        </nmc-ctp>
        <supporting-interface-list>NMC-CTP-DEG1-RX-192056250</supporting-interface-list>
      </interface>
      <interface>
        <name>NMC-SRG-SRG1-WSS-192031250</name>
        <description>Network-Media-Channel-CTP-192031250THz</description>
        <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type>
        <administrative-state>inService</administrative-state>
        <supporting-circuit-pack-name>SRG1-WSS</supporting-circuit-pack-name>
        <supporting-port>SRG1-IN3</supporting-port>
        <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces">
          <frequency>192031250</frequency>
          <width>50000.0</width>
        </nmc-ctp>
      </interface>
      <interface>
        <name>NMC-NMC-CTP-DEG1-RX-192056250</name>
        <description>Media-channel-192056250THz</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>192056250</frequency>
          <width>100000.0</width>
        </nmc-ctp>
      </interface>
      <interface>
        <name>NMC-SRG-SRG-SRG1-WSS-192031250</name>
        <description>Network-Media-Channel-CTP-192031250THz</description>
        <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type>
        <administrative-state>inService</administrative-state>
        <supporting-circuit-pack-name>SRG1-WSS</supporting-circuit-pack-name>
        <supporting-port>SRG1-IN3</supporting-port>
        <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces">
          <frequency>192031250</frequency>
          <width>50000.0</width>
        </nmc-ctp>
      </interface>
      <interface>
        <name>NMC-SRG-SRG-SRG1-WSS-192056250</name>
        <description>Network-Media-Channel-CTP-192056250THz</description>
        <type>openROADM-if:networkMediaChannelConnectionTerminationPoint</type>
        <administrative-state>inService</administrative-state>
        <supporting-circuit-pack-name>SRG1-WSS</supporting-circuit-pack-name>
        <supporting-port>SRG1-IN3</supporting-port>
        <nmc-ctp xmlns="http://org/openroadm/network-media-channel-interfaces">
          <frequency>192056250</frequency>
          <width>100000</width>
        </nmc-ctp>
      </interface>
    </org-openroadm-device>
    <netopeer xmlns="urn:cesnet:tmc:netopeer:1.0">
      <modules>
+6 −0
Original line number Diff line number Diff line
@@ -55,3 +55,9 @@ def filter_config(resources:list,unwanted_keys=[])->list[list,dict,str]:
    ports = extract_ports(resources=resources)
    logging.info(f"filter_config {ports}")    
    return [config,ports,index]


def convert_Thz (freq_hz:int)->int : 
    freq_thz = freq_hz / 1_000_000
    freq_thz_rounded = round(freq_thz, 2) 
    return freq_thz_rounded
 No newline at end of file
+131 −119
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

from yattag import Doc, indent
import logging
from .common  import seperate_port_config ,filter_config
from .common  import seperate_port_config ,filter_config ,convert_Thz
from decimal import Decimal


@@ -92,9 +92,13 @@ def create_network_media_channel (resources):
    or_device_ns="http://org/openroadm/device"
    band=next((r for r in resources if r['resource_key']== 'band'),None)
    frequency_dict=next((r for r in resources if r['resource_key']== 'frequency'),None)
    min_freq= int(Decimal(frequency_dict["value"])*1000) - (int(band["value"])/2)
    max_freq = int(Decimal(frequency_dict["value"])*1000) + (int(band["value"])/2)
    width_dict= (max_freq - min_freq)
    freq_thz=None
    if frequency_dict and frequency_dict['value']:
        freq_thz=convert_Thz(frequency_dict['value'])
        
    min_freq=  int(Decimal(frequency_dict["value"])) - (int(band["value"])/2)
    max_freq = int(Decimal(frequency_dict["value"])) + (int(band["value"])/2)
    width_dict= (max_freq - min_freq)/1000

    config,ports,index= filter_config(resources,unwanted_keys=[])
    
@@ -104,14 +108,15 @@ def create_network_media_channel (resources):
    with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"):
      with tag('org-openroadm-device', ('xmlns',or_device_ns)):

        for i in list(ports[0]):
        for lst_i in [list(j) for j in ports ] :
            for i in lst_i:
                if i: 
                    #port,i_list,circuit=infer_opposite_port(i,interface_list["value"])
                    interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+i),None)
                    if interface_list['value'] == 'Null': continue
                    administrative_state= next((r for r in resources if r['resource_key']== 'administrative_state'+'-'+i),None)
                    circuit_pack =next((r for r in resources if r['resource_key']=='supporting-circuit-pack-name'+'-'+i),None)
                nmc_name = define_interface_name('nmc-nmc-ctp',interface_list["value"],frequency_dict['value'])
                    nmc_name = define_interface_name('nmc-nmc-ctp',interface_list["value"],freq_thz)
                    interfaces.append({
                            "name":nmc_name,
                            "type":'nmc',
@@ -119,7 +124,7 @@ def create_network_media_channel (resources):
                            "circuit_pack_name":circuit_pack["value"],
                            "port":i,
                            "interface_list":interface_list["value"],
                        "frequency":frequency_dict["value"],
                            "frequency":freq_thz,
                            "width":width_dict,
                            "roadm_uuid":""
                        })
@@ -127,15 +132,15 @@ def create_network_media_channel (resources):
                    with tag('interface'):
                        
                            with tag('name'):text(nmc_name)
                        with tag('description'):text(f'Media-channel-{frequency_dict["value"]}THz')
                            with tag('description'):text(f'Media-channel-{freq_thz}THz')
                            with tag('type'):text("openROADM-if:networkMediaChannelConnectionTerminationPoint")
                            with tag('administrative-state'):text("inService")
                            with tag('supporting-circuit-pack-name'):text(circuit_pack['value'])
                            with tag('supporting-port'):text(i)
                            with tag('supporting-interface-list'):text(interface_list["value"])
                            with tag('nmc-ctp',xmlns="http://org/openroadm/network-media-channel-interfaces"):
                            with tag('frequency'):text(frequency_dict['value'])
                            with tag('width'):text(width_dict)
                                with tag('frequency'):text(193.30)
                                with tag('width'):text(100)
                                            
                                    
                                    
@@ -154,10 +159,13 @@ def create_network_media_channel (resources):
def or_create_media_channel (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']:
        freq_thz=convert_Thz(frequency_dict['value'])
    band=next((r for r in resources if r['resource_key']== 'band'),None)
    
    min_freq= int(Decimal(frequency_dict["value"])*1000) - (int(band["value"])/2)
    max_freq = int(Decimal(frequency_dict["value"])*1000) + (int(band["value"])/2)
    min_freq= convert_Thz( int(Decimal(frequency_dict["value"])) - (int(band["value"])/2))
    max_freq =convert_Thz (int(Decimal(frequency_dict["value"])) + (int(band["value"])/2)) + 0.10
   
    cconfig,ports,index= filter_config(resources,unwanted_keys=[])

@@ -172,7 +180,8 @@ def or_create_media_channel (resources):
    with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"):
        with tag('org-openroadm-device', ('xmlns',or_device_ns)):
       
            for i in list(ports[0]):
            for lst_i in [list(j) for j in ports ] :
                for i in lst_i:
                
                    if i : 
                
@@ -181,7 +190,7 @@ def or_create_media_channel (resources):
                        administrative_state= next((r for r in resources if r['resource_key']== 'administrative_state'+'-'+i),None)
                        circuit_pack =next((r for r in resources if r['resource_key']=='supporting-circuit-pack-name'+'-'+i),None)
                    
                    mc_name = define_interface_name('mc-ttp',interface_list['value'],frequency_dict['value'])
                        mc_name = define_interface_name('mc-ttp',interface_list['value'],freq_thz)
                        interfaces.append({
                            "name":mc_name,
                            "type":'mc',
@@ -189,7 +198,7 @@ def or_create_media_channel (resources):
                            "circuit_pack_name":circuit_pack["value"],
                            "port":i,
                            "interface_list":interface_list["value"],
                        "frequency":frequency_dict["value"],
                            "frequency":freq_thz,
                            
                            "roadm_uuid":""
                        })
@@ -197,15 +206,15 @@ def or_create_media_channel (resources):
                        with tag('interface'):
                            
                                with tag('name'):text(mc_name)
                            with tag('description'):text(f'Media-channel-{frequency_dict["value"]}THz')
                                with tag('description'):text(f'Media-channel-{freq_thz}THz')
                                with tag('type'):text("openROADM-if:mediaChannelTrailTerminationPoint")
                                with tag('administrative-state'):text("inService")
                                with tag('supporting-circuit-pack-name'):text(circuit_pack["value"])
                                with tag('supporting-port'):text(i)
                                with tag('supporting-interface-list'):text(interface_list["value"])
                                with tag('mc-ttp',xmlns="http://org/openroadm/media-channel-interfaces"):
                                with tag('max-freq'):text(max_freq)
                                with tag('min-freq'):text(min_freq)
                                    with tag('max-freq'):text(193.35)
                                    with tag('min-freq'):text(193.25)
                            
                        
       
@@ -242,9 +251,9 @@ def create_cross_connection (resources):
                with tag('opticalControlMode'):text('off')
                with tag('target-output-power'):text('0')
                with tag('source'):
                    with tag('src-if'):text(resources['srg_name'])
                    with tag('src-if'):text(resources['nmc_name'])
                with tag('destination')    :
                    with tag('dst-if'):text(resources['nmc_name'])
                    with tag('dst-if'):text(resources['srg_name'])
            
        
   
@@ -269,6 +278,7 @@ def srg_network_media_channel_handle (resources):
  max_freq = int(Decimal(frequency_dict["value"])*1000) + (int(band["value"])/2)
  width_dict= (max_freq - min_freq)
  freq = int(frequency_dict['value']) + int(width_dict/2)
  freq_thz= convert_Thz(freq) + (band['value']/1000000)
  config,ports,index= filter_config(resources,unwanted_keys=[])
  interfaces=[]
  results=[]
@@ -276,7 +286,8 @@ def srg_network_media_channel_handle (resources):
  with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"):
      with tag('org-openroadm-device', ('xmlns',or_device_ns)):
        
            for i in list(ports[0]):
            for lst_i in [list(j) for j in ports ] :
              for i in lst_i:
                if i : 
        
                    interface_list =next((r for r in resources if r['resource_key']== 'interface_list'+'-'+i),None)
@@ -290,12 +301,13 @@ def srg_network_media_channel_handle (resources):
                            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'+'-'+i),None)
                    circuit_pack =next((r for r in resources if r['resource_key']=='supporting-circuit-pack-name'+'-'+i),None)
                
                srg_name = define_interface_name('nmc-srg-srg',circuit_pack["value"],freq)
                    srg_name = define_interface_name(f'nmc-{i}',circuit_pack["value"],freq_thz)
                    cross_conn_resources['srg_name']=srg_name
                    cross_conn_resources['srg_port']=i
                    
@@ -306,7 +318,7 @@ def srg_network_media_channel_handle (resources):
                            "circuit_pack_name":circuit_pack["value"],
                            "port":i,
                            "interface_list":interface_list["value"],
                        "frequency":freq,
                            "frequency":freq_thz,
                            
                            "roadm_uuid":""
                        })
@@ -314,15 +326,15 @@ def srg_network_media_channel_handle (resources):
                    with tag('interface'):
                        
                            with tag('name'):text(srg_name)
                        with tag('description'):text(f'Network-Media-Channel-CTP-{freq}THz')
                            with tag('description'):text(f'Network-Media-Channel-CTP-{freq_thz}THz')
                            with tag('type'):text("openROADM-if:networkMediaChannelConnectionTerminationPoint")
                            with tag('administrative-state'):text("inService")
                            with tag('supporting-circuit-pack-name'):text(circuit_pack["value"])
                            with tag('supporting-port'):text(i)
                            #with tag('supporting-interface-list'):text(i_list)
                            with tag('nmc-ctp',xmlns="http://org/openroadm/network-media-channel-interfaces"):
                            with tag('frequency'):text(freq)
                            with tag('width'):text(band['value']*2)
                                    with tag('frequency'):text(193.30)
                                    with tag('width'):text(100)
                            
      
                          
+1 −1
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ def extract_openroadm_interface (xml_data:str):
          nmc= {
            'name':name.text if name is not None else None,
            'description':description.text if description is not None else None ,
            'type':"nmc",
            'type':"nmc" if interface_list is not None else "srg",
            'administrative_state':administrative_state.text if administrative_state is not None else None,
            'circuit_pack_name':circuit_pack_name.text if circuit_pack_name is not None else None,
            'port':port.text if port is not None else None ,
Loading