Loading __pycache__/validateInventory.cpython-312.pyc +23 B (17.4 KiB) File changed.No diff preview for this file type. View original file View changed file tmp.py +232 −45 Original line number Diff line number Diff line Loading @@ -5,50 +5,237 @@ from ncclient import manager def get_iface_metrics(m, metric): cfg = m print(cfg) ns = { 'nc': 'urn:ietf:params:xml:ns:netconf:base:1.0', 'if': 'urn:ietf:params:xml:ns:yang:ietf-interfaces', 'mwrl': 'urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link', 'ianaift': 'urn:ietf:params:xml:ns:yang:iana-if-type' } tree = ET.fromstring(cfg) print("Found iface") value = tree.findall(".//{urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link}"+metric, namespaces=ns) if len(value)==0: print(metric+" not found") return metric+" not found" return value[0].text def set_TX_power(int_name, txPower): env = Environment( loader=FileSystemLoader("."), autoescape=False) context = { "interfaceName":int_name, "tx_power" : txPower, } xml = env.get_template("configFile/setTXPower.xml.pyformat").render(context) print(xml) def check_svc_inventory(xml_reply): tree = ET.fromstring(xml_reply) bridges = tree.findall(".//ns0:bridge", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) expected_params = 0 actual_params = 0 for bridge in bridges: expected_params = expected_params + 4 actual_params = actual_params + 4 name = bridge.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) address = bridge.findall(".//ns0:address", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_type = bridge.findall(".//ns0:bridge-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) components = bridge.findall(".//ns0:component", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(name)==0 or len(address)==0 or len(bridge_type)==0 or len(components)==0: #return "mssing bridge's info" actual_params = actual_params - 4 + len(name) + len(address) + len(bridge_type) + len(components) for component in components: expected_params = expected_params + 6 actual_params = actual_params + 6 name = component.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) id = component.findall(".//ns0:id", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) type = component.findall(".//ns0:type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_port = component.findall(".//ns0:bridge-port", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) filtering_database = component.findall(".//ns0:filtering-database", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_vlan = component.findall(".//ns0:bridge-vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(name)==0 or len(id)==0 or len(type)==0 or len(bridge_port)==0 or len(filtering_database)==0 or len(bridge_vlan)==0: #return "missing components's info" actual_params = actual_params - 6 + len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan) print("missing one of params in level 1 for component ",name[0].text) print(len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan)) for db in filtering_database: expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry actual_params = actual_params + 1 vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)==0: actual_params = actual_params - 1 print("missing vlan_reg_entry") for v in vlan_reg_entry: actual_params = actual_params + 4 expected_params = expected_params + 4 database_id = v.findall(".//ns0:database-id", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) vids = v.findall(".//ns0:vids", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) entry_type = v.findall(".//ns0:entry-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) port_map = v.findall(".//ns0:port-map", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(database_id)==0 or len(entry_type)==0: actual_params = actual_params - 2 + len(database_id) + len(entry_type) if(vids)==0: actual_params = actual_params - 1 if len(port_map) == 0: actual_params = actual_params-1 for p in port_map: actual_params = actual_params + 4 expected_params = expected_params + 4 port_ref = p.findall(".//ns0:port-ref", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) static_vlan_reg_entry = p.findall(".//ns0:static-vlan-registration-entries", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) vlan_transmitted = p.findall(".//ns0:vlan-transmitted", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) registrar_admin_control = p.findall(".//ns0:registrar-admin-control", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0: #return "Missing data in port map" print("missing one of params inside vlan_reg_entry") actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control) for br in bridge_vlan: expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans vlans = br.findall(".//ns0:vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) actual_params = actual_params + 1 if len(vlans)==0: print("missing vlans") actual_params = actual_params - 1 for vlan in vlans: expected_params = expected_params + 3 actual_params = actual_params + 3 vid = vlan.findall(".//ns0:vid", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) name = vlan.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) egress_ports = vlan.findall(".//ns0:egress-ports", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vid)==0 or len(name)==0 or len(egress_ports)==0: #return "Missing data in bridge vlan" print("missing one of params inside vlan") actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports) if actual_params<expected_params: return "expected params = ",expected_params," got ", actual_params return "SUCCESS" if __name__=="__main__": xml_reply = """<?xml version="1.0" encoding="UTF-8"?> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interface> <name>CT 1/2/1</name> <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:microwaveCarrierTermination</type> <actual-transmitted-level xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">11.4</actual-transmitted-level> <actual-received-level xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">-29.4</actual-received-level> <actual-snir xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">47.3</actual-snir> </interface> </interfaces> xml_reply = """<?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"> <bridges xmlns="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"> <bridge> <name>Bridge-1</name> <address>00-B0-AC-0D-13-4A</address> <bridge-type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:provider-edge-bridge</bridge-type> <component> <name>Component-1</name> <id>0</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:s-vlan-component</type> <ports>10</ports> <bridge-port>eth1</bridge-port> <bridge-port>eth2</bridge-port> <bridge-port>eth3</bridge-port> <bridge-port>eth4</bridge-port> <bridge-port>eth6</bridge-port> <bridge-port>eth8</bridge-port> <bridge-port>eth9</bridge-port> <bridge-port>eth10</bridge-port> <filtering-database> <aging-time>300</aging-time> <vlan-registration-entry> <database-id>1</database-id> <vids>100</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>200</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>300</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>350</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> </filtering-database> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> <vlan> <vid>100</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>200</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>300</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>350</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> </bridge-vlan> </component> <component> <name>Component-eth5</name> <id>5</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:c-vlan-component</type> <bridge-port>eth5</bridge-port> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> </bridge-vlan> </component> <component> <name>Component-eth7</name> <id>7</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:c-vlan-component</type> <bridge-port>eth7</bridge-port> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> </bridge-vlan> </component> </bridge> </bridges> </data> """ #ret = get_iface_metrics(xml_reply, "actual-transmitted-level") #print(ret) #set_TX_power("interfaceNAme", 5.0) #ret = find_in_xml(xml_reply,"actual-transmitted-level", "urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link") #print(ret) print(check_svc_inventory(xml_reply)) validateInventory.py +36 −36 Original line number Diff line number Diff line Loading @@ -300,9 +300,10 @@ def check_svc_inventory(xml_reply): for db in filtering_database: expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)>0: actual_params = actual_params + 1 vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)==0: actual_params = actual_params - 1 for v in vlan_reg_entry: actual_params = actual_params + 4 expected_params = expected_params + 4 Loading @@ -326,12 +327,12 @@ def check_svc_inventory(xml_reply): if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0: #return "Missing data in port map" actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control) for br in bridge_vlan: expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans vlans = br.findall(".//ns0:vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlans)>0: actual_params = actual_params + 1 if len(vlans)==0: actual_params = actual_params - 1 for vlan in vlans: expected_params = expected_params + 3 actual_params = actual_params + 3 Loading @@ -341,7 +342,6 @@ def check_svc_inventory(xml_reply): if len(vid)==0 or len(name)==0 or len(egress_ports)==0: #return "Missing data in bridge vlan" actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports) if actual_params<expected_params: return "expected params = ",expected_params," got ", actual_params return "SUCCESS" No newline at end of file Loading
__pycache__/validateInventory.cpython-312.pyc +23 B (17.4 KiB) File changed.No diff preview for this file type. View original file View changed file
tmp.py +232 −45 Original line number Diff line number Diff line Loading @@ -5,50 +5,237 @@ from ncclient import manager def get_iface_metrics(m, metric): cfg = m print(cfg) ns = { 'nc': 'urn:ietf:params:xml:ns:netconf:base:1.0', 'if': 'urn:ietf:params:xml:ns:yang:ietf-interfaces', 'mwrl': 'urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link', 'ianaift': 'urn:ietf:params:xml:ns:yang:iana-if-type' } tree = ET.fromstring(cfg) print("Found iface") value = tree.findall(".//{urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link}"+metric, namespaces=ns) if len(value)==0: print(metric+" not found") return metric+" not found" return value[0].text def set_TX_power(int_name, txPower): env = Environment( loader=FileSystemLoader("."), autoescape=False) context = { "interfaceName":int_name, "tx_power" : txPower, } xml = env.get_template("configFile/setTXPower.xml.pyformat").render(context) print(xml) def check_svc_inventory(xml_reply): tree = ET.fromstring(xml_reply) bridges = tree.findall(".//ns0:bridge", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) expected_params = 0 actual_params = 0 for bridge in bridges: expected_params = expected_params + 4 actual_params = actual_params + 4 name = bridge.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) address = bridge.findall(".//ns0:address", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_type = bridge.findall(".//ns0:bridge-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) components = bridge.findall(".//ns0:component", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(name)==0 or len(address)==0 or len(bridge_type)==0 or len(components)==0: #return "mssing bridge's info" actual_params = actual_params - 4 + len(name) + len(address) + len(bridge_type) + len(components) for component in components: expected_params = expected_params + 6 actual_params = actual_params + 6 name = component.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) id = component.findall(".//ns0:id", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) type = component.findall(".//ns0:type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_port = component.findall(".//ns0:bridge-port", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) filtering_database = component.findall(".//ns0:filtering-database", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) bridge_vlan = component.findall(".//ns0:bridge-vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(name)==0 or len(id)==0 or len(type)==0 or len(bridge_port)==0 or len(filtering_database)==0 or len(bridge_vlan)==0: #return "missing components's info" actual_params = actual_params - 6 + len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan) print("missing one of params in level 1 for component ",name[0].text) print(len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan)) for db in filtering_database: expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry actual_params = actual_params + 1 vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)==0: actual_params = actual_params - 1 print("missing vlan_reg_entry") for v in vlan_reg_entry: actual_params = actual_params + 4 expected_params = expected_params + 4 database_id = v.findall(".//ns0:database-id", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) vids = v.findall(".//ns0:vids", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) entry_type = v.findall(".//ns0:entry-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) port_map = v.findall(".//ns0:port-map", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(database_id)==0 or len(entry_type)==0: actual_params = actual_params - 2 + len(database_id) + len(entry_type) if(vids)==0: actual_params = actual_params - 1 if len(port_map) == 0: actual_params = actual_params-1 for p in port_map: actual_params = actual_params + 4 expected_params = expected_params + 4 port_ref = p.findall(".//ns0:port-ref", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) static_vlan_reg_entry = p.findall(".//ns0:static-vlan-registration-entries", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) vlan_transmitted = p.findall(".//ns0:vlan-transmitted", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) registrar_admin_control = p.findall(".//ns0:registrar-admin-control", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0: #return "Missing data in port map" print("missing one of params inside vlan_reg_entry") actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control) for br in bridge_vlan: expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans vlans = br.findall(".//ns0:vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) actual_params = actual_params + 1 if len(vlans)==0: print("missing vlans") actual_params = actual_params - 1 for vlan in vlans: expected_params = expected_params + 3 actual_params = actual_params + 3 vid = vlan.findall(".//ns0:vid", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) name = vlan.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) egress_ports = vlan.findall(".//ns0:egress-ports", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vid)==0 or len(name)==0 or len(egress_ports)==0: #return "Missing data in bridge vlan" print("missing one of params inside vlan") actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports) if actual_params<expected_params: return "expected params = ",expected_params," got ", actual_params return "SUCCESS" if __name__=="__main__": xml_reply = """<?xml version="1.0" encoding="UTF-8"?> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interface> <name>CT 1/2/1</name> <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:microwaveCarrierTermination</type> <actual-transmitted-level xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">11.4</actual-transmitted-level> <actual-received-level xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">-29.4</actual-received-level> <actual-snir xmlns="urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link">47.3</actual-snir> </interface> </interfaces> xml_reply = """<?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"> <bridges xmlns="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"> <bridge> <name>Bridge-1</name> <address>00-B0-AC-0D-13-4A</address> <bridge-type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:provider-edge-bridge</bridge-type> <component> <name>Component-1</name> <id>0</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:s-vlan-component</type> <ports>10</ports> <bridge-port>eth1</bridge-port> <bridge-port>eth2</bridge-port> <bridge-port>eth3</bridge-port> <bridge-port>eth4</bridge-port> <bridge-port>eth6</bridge-port> <bridge-port>eth8</bridge-port> <bridge-port>eth9</bridge-port> <bridge-port>eth10</bridge-port> <filtering-database> <aging-time>300</aging-time> <vlan-registration-entry> <database-id>1</database-id> <vids>100</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>200</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>300</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> <vlan-registration-entry> <database-id>1</database-id> <vids>350</vids> <entry-type>static</entry-type> <port-map> <port-ref>4</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> <port-map> <port-ref>9</port-ref> <static-vlan-registration-entries> <registrar-admin-control>fixed-new-ignored</registrar-admin-control> <vlan-transmitted>tagged</vlan-transmitted> </static-vlan-registration-entries> </port-map> </vlan-registration-entry> </filtering-database> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> <vlan> <vid>100</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>200</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>300</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> <vlan> <vid>350</vid> <name>TestVLAN</name> <egress-ports>eth4</egress-ports> <egress-ports>eth9</egress-ports> </vlan> </bridge-vlan> </component> <component> <name>Component-eth5</name> <id>5</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:c-vlan-component</type> <bridge-port>eth5</bridge-port> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> </bridge-vlan> </component> <component> <name>Component-eth7</name> <id>7</id> <type xmlns:dot1q="urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge">dot1q:c-vlan-component</type> <bridge-port>eth7</bridge-port> <bridge-vlan> <version>1</version> <max-vids>4094</max-vids> </bridge-vlan> </component> </bridge> </bridges> </data> """ #ret = get_iface_metrics(xml_reply, "actual-transmitted-level") #print(ret) #set_TX_power("interfaceNAme", 5.0) #ret = find_in_xml(xml_reply,"actual-transmitted-level", "urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link") #print(ret) print(check_svc_inventory(xml_reply))
validateInventory.py +36 −36 Original line number Diff line number Diff line Loading @@ -300,9 +300,10 @@ def check_svc_inventory(xml_reply): for db in filtering_database: expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)>0: actual_params = actual_params + 1 vlan_reg_entry = db.findall(".//ns0:vlan-registration-entry", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlan_reg_entry)==0: actual_params = actual_params - 1 for v in vlan_reg_entry: actual_params = actual_params + 4 expected_params = expected_params + 4 Loading @@ -326,12 +327,12 @@ def check_svc_inventory(xml_reply): if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0: #return "Missing data in port map" actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control) for br in bridge_vlan: expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans vlans = br.findall(".//ns0:vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"}) if len(vlans)>0: actual_params = actual_params + 1 if len(vlans)==0: actual_params = actual_params - 1 for vlan in vlans: expected_params = expected_params + 3 actual_params = actual_params + 3 Loading @@ -341,7 +342,6 @@ def check_svc_inventory(xml_reply): if len(vid)==0 or len(name)==0 or len(egress_ports)==0: #return "Missing data in bridge vlan" actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports) if actual_params<expected_params: return "expected params = ",expected_params," got ", actual_params return "SUCCESS" No newline at end of file