From ca6e631871db9fbd3261548a8e57049907319cbd Mon Sep 17 00:00:00 2001 From: takishida <38262981+takishida@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:28:39 -0700 Subject: [PATCH 1/6] Enhance overlapping_vlan_pools_check --- aci-preupgrade-validation-script.py | 622 +- .../templates/access_policy.j2 | 231 + .../AciAccessPolicyParser/templates/macros.j2 | 48 + .../templates/node_profiles.j2 | 34 + .../test_AciAccessPolicyParser.py | 787 +++ .../access_policy.json | 5613 +++++++++++++++++ .../overlapping_vlan_pools_check/fvAEPg.json | 1614 +++++ .../fvIfConn.json | 3674 +++++++++++ .../infraSetPol_no.json | 38 + .../infraSetPol_yes.json | 38 + .../templates/access_policy.j2 | 231 + .../templates/fvAEPg.j2 | 27 + .../templates/fvIfConn.j2 | 19 + .../templates/macros.j2 | 62 + .../test_overlapping_vlan_pools_check.py | 1840 ++++++ tests/requirements-py27.txt | 3 + tests/requirements-py38.txt | 2 + 17 files changed, 14836 insertions(+), 47 deletions(-) create mode 100644 tests/AciAccessPolicyParser/templates/access_policy.j2 create mode 100644 tests/AciAccessPolicyParser/templates/macros.j2 create mode 100644 tests/AciAccessPolicyParser/templates/node_profiles.j2 create mode 100644 tests/AciAccessPolicyParser/test_AciAccessPolicyParser.py create mode 100644 tests/overlapping_vlan_pools_check/access_policy.json create mode 100644 tests/overlapping_vlan_pools_check/fvAEPg.json create mode 100644 tests/overlapping_vlan_pools_check/fvIfConn.json create mode 100644 tests/overlapping_vlan_pools_check/infraSetPol_no.json create mode 100644 tests/overlapping_vlan_pools_check/infraSetPol_yes.json create mode 100644 tests/overlapping_vlan_pools_check/templates/access_policy.j2 create mode 100644 tests/overlapping_vlan_pools_check/templates/fvAEPg.j2 create mode 100644 tests/overlapping_vlan_pools_check/templates/fvIfConn.j2 create mode 100644 tests/overlapping_vlan_pools_check/templates/macros.j2 create mode 100644 tests/overlapping_vlan_pools_check/test_overlapping_vlan_pools_check.py diff --git a/aci-preupgrade-validation-script.py b/aci-preupgrade-validation-script.py index d4b5de6..c1971a6 100644 --- a/aci-preupgrade-validation-script.py +++ b/aci-preupgrade-validation-script.py @@ -42,7 +42,13 @@ POST = 'POST UPGRADE CHECK REQUIRED' NA = 'N/A' node_regex = r'topology/pod-(?P\d+)/node-(?P\d+)' -ver_regex = r'(?:dk9\.)?[1]?(?P\d)\.(?P\d)(?:\.|\()(?P\d+)\.?(?P(?:[a-b]|[0-9a-z]+))\)?' +path_regex = ( + r"topology/pod-(?P\d+)/" + r"(?:prot)?paths-(?P\d+|\d+-\d+)/" # direct or PC/vPC + r"(?:ext(?:prot)?paths-(?P\d+|\d+-\d+)/)?" # FEX (optional) + r"pathep-\[(?P.+)\]" # ethX/Y or PC/vPC IFPG name +) +dom_regex = r"uni/(?:vmmp-[^/]+/)?(?Pphys|l2dom|l3dom|dom)-(?P[^/]+)" tz = time.strftime('%z') ts = datetime.now().strftime('%Y-%m-%dT%H-%M-%S') @@ -469,6 +475,411 @@ def same_as(self, version): return self.version == ver +class AciObjectCrawler(object): + """ + Args: + mos (list of dict): MOs in the form of output from the function `icurl()` with + the filter `query-target` that returns a flat list. + """ + + def __init__(self, mos): + self.mos = mos + self.mos_per_class = defaultdict(list) + + self.init_mos_per_class() + + def init_mos_per_class(self): + """ + Create `self.mos_per_class` (dict) which stores lists of MOs per class. + """ + for mo in self.mos: + classname = list(mo.keys())[0] + _mo = {"classname": classname} + _mo.update(mo[classname]["attributes"]) + self.mos_per_class[classname].append(_mo) + + def get_mos(self, classname): + return self.mos_per_class.get(classname, []) + + def get_children(self, parent_dn, children_class): + """ + Args: + parent_dn (str): DN of the parent MO. + children_class (str): Class name of the (grand) children under parent_dn. + Returns: + list of dict: The MOs of children_class under parent_dn. + """ + mos = self.get_mos(children_class) + return [mo for mo in mos if mo["dn"].startswith(parent_dn + "/")] + + def get_parent(self, child_dn, parent_class): + """ + Args: + child_dn (str): DN of the child MO. + parent_class (str): Class name of the (grand) parent of child_dn. + Returns: + dict: The parent MO of child_dn. + """ + mos = self.get_mos(parent_class) + for mo in mos: + if child_dn.startswith(mo["dn"] + "/"): + return mo + return {} + + def get_rel_targets(self, src_dn, rel_class): + """ + Args: + src_dn (str): DN of the source object. + rel_class (str): Relation class with tDn/tCl. Children of src_dn + Returns: + list of dict: MOs that are pointed by tDn from src_dn + """ + targets = [] + rel_mos = self.get_children(src_dn, rel_class) + for rel_mo in rel_mos: + mos = self.get_mos(rel_mo["tCl"]) + for mo in mos: + if mo["dn"] == rel_mo["tDn"]: + targets.append(mo) + break + else: + # The target objects may not be in our self.mos_per_class. + # In that case, just return the DN and class. + targets.append({"dn": rel_mo["tDn"], "classname": rel_mo["tCl"]}) + return targets + + def get_src_from_tDn(self, tDn, rs_class, src_class): + """ + Args: + tDn (str): Target DN. Get all MOs with this DN as the target via rs_class. + rs_class (str): Relation class. + src_class (str): Class name of source MOs that may have tDn as the target + via rs_class. + Returns: + list of dict: MOs that point to tDn via rs_class. + """ + src_mos = [] + rs_mos = self.get_mos(rs_class) + for rs_mo in rs_mos: + if rs_mo["tDn"] == tDn: + src_mo = self.get_parent(rs_mo["dn"], src_class) + if src_mo: + src_mos.append(src_mo) + return src_mos + + +class AciAccessPolicyParser(AciObjectCrawler): + """ + port_data: + key: port_path in the format shown below: + `/eth/` + `//eth/` + `/` + `//` + value: { + "ifpg": Name of IFPG + "override_ifpg": Name of override IFPG. Skipped if not override + "pc_type": none|pc|vpc. From the IFPG + "aep": Name of AEP + "domain_dns": List of domain DNs associated to the AEP + "vlan_scope": global or portlocal. From the IFPG + "node": Node ID + "fex": Fex ID or 0 + "port": ethX/Y, ethX/Y/Z, IFPG name + } + vpool_per_dom: + key: domain DN + value: { + "name": Name of VLAN Pool + "vlan_ids": List of VLAN IDs. ex) [1,2,3,100,101] + "dom_name": Name of domain + "dom_type": Type of domain (phys, l3dom, vmm) + } + """ + # VLAN Pool + VLANPool = "fvnsVlanInstP" + VLANBlk = "fvnsEncapBlk" + # AEP + AEP = "infraAttEntityP" + # Leaf Interface Profile etc. + IFP = "infraAccPortP" + IFSel = "infraHPortS" + PortBlk = "infraPortBlk" + SubPortBlk = "infraSubPortBlk" # breakout + IFPath = "infraHPathS" # override + # Leaf Switch Profile etc. + SWP = "infraNodeP" + SWSel = "infraLeafS" + NodeBlk = "infraNodeBlk" + # FEX + FEXP = "infraFexP" + FEXPG = "infraFexBndlGrp" + + # Leaf Interface Policy Group etc. + IFPG = "infraAccPortGrp" + IFPG_PC = "infraAccBndlGrp" + IFPG_PC_O = "infraAccBndlPolGrp" # override (PC/VPC PG) + + # Leaf Interface Policy + IFPol_L2 = "l2IfPol" + + # Relation objects (_to_) + VLAN_to_Dom = "fvnsRtVlanNs" + AEP_to_Dom = "infraRsDomP" + IFPG_to_AEP = "infraRsAttEntP" + IFSel_to_IFPG = "infraRsAccBaseGrp" + IFPath_to_IFPG = "infraRsPathToAccBaseGrp" # override + IFPath_to_Path = "infraRsHPathAtt" # override + SWP_to_IFP = "infraRsAccPortP" + IFPol_L2_to_IFPG = "l2RtL2IfPol" + + def __init__(self, mos): + super(AciAccessPolicyParser, self).__init__(mos) + self.nodes_per_ifp = defaultdict(list) + self.port_data = defaultdict(dict) + self.vpool_per_dom = defaultdict(dict) + + self.create_port_data() + self.create_vlanpool_per_domain() + + @classmethod + def get_classes(cls): + """Get all ACI object classes used in this class""" + classes = [] + for key, val in iteritems(AciAccessPolicyParser.__dict__): + if key.startswith("__") or not isinstance(val, str): + continue + classes.append(val) + return classes + + def get_node_ids_from_ifp(self, ifp_dn): + if ifp_dn in self.nodes_per_ifp: + return self.nodes_per_ifp[ifp_dn] + node_ids = [] + swps = self.get_src_from_tDn(ifp_dn, self.SWP_to_IFP, self.SWP) + for swp in swps: + swsels = self.get_children(swp["dn"], self.SWSel) + for swsel in swsels: + node_blks = self.get_children(swsel["dn"], self.NodeBlk) + for node_blk in node_blks: + _from = int(node_blk["from_"]) + _to = int(node_blk["to_"]) + node_ids += range(_from, _to + 1) + self.nodes_per_ifp[ifp_dn] = node_ids + return node_ids + + def get_node_ids_from_ifsel(self, ifsel_dn): + ifp = self.get_parent(ifsel_dn, self.IFP) + if not ifp: + logging.warning("No I/F Profile for Selector (%s)", ifsel_dn) + return [] + node_ids = self.get_node_ids_from_ifp(ifp["dn"]) + return node_ids + + def get_fex_id_from_ifsel(self, ifsel_dn): + """Get FEX ID if ifsel is FEX NIF""" + fex_id = 0 + rs_ifpgs = self.get_children(ifsel_dn, self.IFSel_to_IFPG) + if rs_ifpgs and rs_ifpgs[0]["tCl"] == "infraFexBndlGrp": + fex_id = int(rs_ifpgs[0]["fexId"]) + return fex_id + + def get_fexnif_ifsels_from_fexhif(self, hif_ifsel_dn): + """ + Get FEX NIF I/F selectors from a FEX HIF I/F Selector + """ + # 1. Get FEXPG from FEX HIF IFSel via the parent (FEXP). + # FEXP -+- IFSel (FEX HIF) + # +- FEXPG + fexp = self.get_parent(hif_ifsel_dn, self.FEXP) + if not fexp: + return [] + fexpgs = self.get_children(fexp["dn"], self.FEXPG) + if not fexpgs: + return [] + # There should be only one FEXPG for each FEXP + fexpg = fexpgs[0] + # 2. Get FEX NIF IFSels from FEXPG via the relation. + # IFSel (FEX NIF) <--[IFSel_to_IFPG]-- FEXPG + fexnif_ifsels = self.get_src_from_tDn( + fexpg["dn"], self.IFSel_to_IFPG, self.IFSel + ) + return fexnif_ifsels + + def get_ports_from_ifsel(self, ifsel_dn): + ports = [] + port_blks = self.get_children(ifsel_dn, self.PortBlk) + subport_blks = self.get_children(ifsel_dn, self.SubPortBlk) + for port_blk in port_blks + subport_blks: + from_card = int(port_blk["fromCard"]) + from_port = int(port_blk["fromPort"]) + from_subport = int(port_blk["fromSubPort"]) if port_blk["classname"] == self.SubPortBlk else 0 + to_card = int(port_blk["toCard"]) + to_port = int(port_blk["toPort"]) + to_subport = int(port_blk["toSubPort"]) if port_blk["classname"] == self.SubPortBlk else 0 + for card in range(from_card, to_card + 1): + for port in range(from_port, to_port + 1): + for subport in range(from_subport, to_subport + 1): + if subport: + ports.append("eth{}/{}/{}".format(card, port, subport)) + else: + ports.append("eth{}/{}".format(card, port)) + return ports + + def create_port_data(self): + ifsels = self.get_mos(self.IFSel) + for ifsel in ifsels: + # GET Node IDs and FEX IDs + node2fexid = {} + if ifsel["dn"].startswith("uni/infra/fexprof-"): + # When ifsel is of FEX HIF, get node IDs and FEX IDs from FEX NIFs. + # ACI supports only single-homed FEXes with or without vPC. + # One FEX HIF can be tied to 2 nodes, one FEX for each, at maximum. + nifs = self.get_fexnif_ifsels_from_fexhif(ifsel["dn"]) + for nif in nifs: + _node_ids = self.get_node_ids_from_ifsel(nif["dn"]) + fex_id = self.get_fex_id_from_ifsel(nif["dn"]) + for _node_id in _node_ids: + node2fexid[_node_id] = fex_id + node_ids = node2fexid.keys() + if len(node_ids) > 2: + logging.error( + "FEX HIF handling failed as it shows more than 2 nodes." + ) + break + else: + node_ids = self.get_node_ids_from_ifsel(ifsel["dn"]) + if not node_ids: + continue + + # Get IFPG + ifpgs = self.get_rel_targets(ifsel["dn"], self.IFSel_to_IFPG) + if not ifpgs: + continue + ifpg = ifpgs[0] + + # Get ports or use IFPG Name for PC/VPC + if ifpg.get("classname") == self.IFPG_PC and ifpg.get("name"): + ports = [ifpg["name"]] + else: + ports = self.get_ports_from_ifsel(ifsel["dn"]) + if not ports: + continue + + # Get settings from IFPG + pc_type = self.get_pc_type(ifpg) + + l2if = self.get_ifpol_l2if_from_ifpg(ifpg["dn"]) + vlan_scope = l2if.get("vlanScope", "unknown") + + # Get AEP from IFPG + aeps = self.get_rel_targets(ifpg.get("dn", ""), self.IFPG_to_AEP) + aep = aeps[0] if aeps else {} + # Get Domains from AEP + doms = self.get_rel_targets(aep.get("dn", ""), self.AEP_to_Dom) + + for node_id in node_ids: + fex_id = node2fexid.get(node_id, 0) + for port in ports: + if fex_id: + path = "/".join([str(node_id), str(fex_id), port]) + else: + path = "/".join([str(node_id), port]) + self.port_data[path] = { + "node": str(node_id), + "fex": str(fex_id), + "port": port, + "ifpg_name": ifpg.get("name", ""), + "pc_type": pc_type, + "vlan_scope": vlan_scope, + "aep_name": aep.get("name", ""), + "domain_dns": [dom["dn"] for dom in doms], + } + + # Override + ifpaths = self.get_mos(self.IFPath) + for ifpath in ifpaths: + # Get Node/FEX/Port ID + override_paths = self.get_children(ifpath["dn"], self.IFPath_to_Path) + if not override_paths: + continue + override_path = override_paths[0] + p = re.search(path_regex, override_path["tDn"]) + nodes = p.group("nodes").split("-") + fexes = p.group("fex").split("-") if p.group("fex") else [] + port = p.group("port") + + # Get IFPG + ifpgs = self.get_rel_targets(ifpath["dn"], self.IFPath_to_IFPG) + if not ifpgs: + continue + ifpg = ifpgs[0] + + # Get settings from IFPG + l2if = self.get_ifpol_l2if_from_ifpg(ifpg["dn"]) + vlan_scope = l2if.get("vlanScope", "unknown") + + # Get AEP from IFPG + aeps = self.get_rel_targets(ifpg.get("dn", ""), self.IFPG_to_AEP) + aep = aeps[0] if aeps else {} + # Get Domains from AEP + doms = self.get_rel_targets(aep.get("dn", ""), self.AEP_to_Dom) + + for idx, node in enumerate(nodes): + fex = "0" + if fexes: + fex = fexes[0] if len(fexes) == 1 else fexes[idx] + path = "/".join([node, fex, port]) + else: + path = "/".join([node, port]) + self.port_data[path].update({ + "node": node, + "fex": fex, + "port": port, + "override_ifpg_name": ifpg["name"], + "vlan_scope": vlan_scope, + "aep_name": aep["name"], + "domain_dns": [dom["dn"] for dom in doms], + }) + + def create_vlanpool_per_domain(self): + vlan_pools = self.get_mos(self.VLANPool) + for vlan_pool in vlan_pools: + vlan_ids = [] + vlan_blks = self.get_children(vlan_pool["dn"], self.VLANBlk) + for vlan_blk in vlan_blks: + vlan_ids += range( + int(vlan_blk["from"].split("-")[1]), + int(vlan_blk["to"].split("-")[1]) + 1, + ) + rs_domains = self.get_children(vlan_pool["dn"], self.VLAN_to_Dom) + for rs_domain in rs_domains: + dom_match = re.search(dom_regex, rs_domain["tDn"]) + dom_name = "..." if not dom_match else dom_match.group("dom") + dom_type = "..." if not dom_match else dom_match.group("type") + # No need to worry about overwrite because there can be + # only one VLAN pool per domain. + self.vpool_per_dom[rs_domain["tDn"]] = { + "name": vlan_pool["name"], + "vlan_ids": vlan_ids, + "dom_name": dom_name, + "dom_type": "vmm" if dom_type == "dom" else dom_type, + } + return self.vpool_per_dom + + def get_pc_type(self, ifpg): + pc_type = "none" + if ifpg.get("lagT") == "node": + pc_type = "vpc" + elif ifpg.get("lagT") in ["link", "fc-link"]: + pc_type = "pc" + return pc_type + + def get_ifpol_l2if_from_ifpg(self, ifpg_dn): + ifpol_l2s = self.get_src_from_tDn(ifpg_dn, self.IFPol_L2_to_IFPG, self.IFPol_L2) + return ifpol_l2s[0] if ifpol_l2s else {} + + def is_firstver_gt_secondver(first_ver, second_ver): """ Used for CIMC version comparison """ result = False @@ -1571,68 +1982,185 @@ def port_configured_for_apic_check(index, total_checks, **kwargs): def overlapping_vlan_pools_check(index, total_checks, **kwargs): title = 'Overlapping VLAN Pools' - result = FAIL_O + result = PASS msg = '' - headers = ["Tenant", "AP", "EPG", "VLAN Pool (Domain) 1", "VLAN Pool (Domain) 2", "Recommended Action"] + headers = ['Tenant', 'AP', 'EPG', 'Node', 'Port', 'VLAN Scope', 'VLAN ID', 'VLAN Pools (Domains)', 'Impact'] data = [] - recommended_action = 'Resolve overlapping VLANs between these two VLAN pools' - doc_url = '"Overlapping VLAN Pool" from from Pre-Upgrade Check Lists' + recommended_action = """ + Each node must have only one VLAN pool per VLAN ID across all the ports or across the ports with VLAN scope `portlocal` in the same EPG.' + When `Impact` shows `Outage`, you must resolve the overlapping VLAN pools. + When `Impact` shows `Flood Scope`, you should check whether it is ok that STP BPDUs, or any BUM traffic when using Flood-in-Encap, may not be flooded within the same VLAN ID across all the nodes/ports. + Note that only the nodes causing the overlap are shown above.""" + doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#overlapping-vlan-pool' print_title(title, index, total_checks) infraSetPols = icurl('mo', 'uni/infra/settings.json') - if infraSetPols[0]['infraSetPol']['attributes'].get('validateOverlappingVlans') == 'true': - result = PASS + if infraSetPols[0]['infraSetPol']['attributes'].get('validateOverlappingVlans') in ['true', 'yes']: msg = '`Enforce EPG VLAN Validation` is enabled. No need to check overlapping VLANs' print_result(title, result, msg) return result - fvAEPgs_with_fvRsDomAtt = icurl('class', - 'fvAEPg.json?rsp-subtree=children&rsp-subtree-class=fvRsDomAtt&rsp-subtree-include=required') - fvnsVlanInstPs = icurl('class', - 'fvnsVlanInstP.json?rsp-subtree=children&rsp-subtree-class=fvnsRtVlanNs,fvnsEncapBlk&rsp-subtree-include=required') - # get VLAN pools per domain - vpools = {} - for vlanInstP in fvnsVlanInstPs: - vpool = {'name': vlanInstP['fvnsVlanInstP']['attributes']['name'], 'encap': []} - dom_dns = [] - for vlan_child in vlanInstP['fvnsVlanInstP']['children']: - if vlan_child.get('fvnsRtVlanNs'): - dom_dns.append(vlan_child['fvnsRtVlanNs']['attributes']['tDn']) - elif vlan_child.get('fvnsEncapBlk'): - encap_blk = range(int(vlan_child['fvnsEncapBlk']['attributes']['from'].split('-')[1]), - int(vlan_child['fvnsEncapBlk']['attributes']['to'].split('-')[1]) + 1) - vpool['encap'] += encap_blk - for dom_dn in dom_dns: - dom_regex = r'uni/(vmmp-[^/]+/)?(phys|l2dom|l3dom|dom)-(?P[^/]+)' - dom_match = re.search(dom_regex, dom_dn) - dom_name = '...' if not dom_match else dom_match.group('dom') - vpools[dom_dn] = dict(vpool, **{'dom_name': dom_name}) - - # check VLAN pools if an EPG has multiple domains attached - for fvAEPg in fvAEPgs_with_fvRsDomAtt: - overlap_vpools = [] + # Get VLAN pools and ports from access policy + mo_classes = AciAccessPolicyParser.get_classes() + filter = '?query-target=subtree&target-subtree-class=' + ','.join(mo_classes) + infra_mos = icurl('class', 'infraInfra.json' + filter) + mos = AciAccessPolicyParser(infra_mos) + + # Get EPG port deployments + epg_regex = r'uni/tn-(?P[^/]+)/ap-(?P[^/]+)/epg-(?P[^/]+)' + conn_regex = ( + r"uni/epp/fv-\[" + epg_regex + r"]/" + r"node-(?P\d+)/" + r"(?:" + r"(?:ext)?stpathatt-\[(?P[^\]]+)\](:?-extchid-(?P\d+))?|" # static port binding + r"dyatt-\[.+(?:ext(?:prot)?paths-(?P\d+)/)?pathep-\[(?P[^\]]+)\]\]|" # dynamic port binding + r"attEntitypathatt-\[(?P.+)\]" # AEP binding + r")/" + r".*\[vlan-(?P\d+)" + ) + # uni/epp/fv-[{epgPKey}]/node-{id}/stpathatt-[{pathName}]/conndef/conn-[{encap}]-[{addr}] + # uni/epp/fv-[{epgPKey}]/node-{id}/extstpathatt-[{pathName}]-extchid-{extChId}/conndef/conn-[{encap}]-[{addr}] + # uni/epp/fv-[{epgPKey}]/node-{id}/dyatt-[{targetDn}]/conndef/conn-[{encap}]-[{addr}] + # uni/epp/fv-[{epgPKey}]/node-{id}/attEntitypathatt-[{pathName}]/conndef/conn-[{encap}]-[{addr}] + ports_per_epg = defaultdict(list) + fvIfConns = icurl('class', 'fvIfConn.json') + for fvIfConn in fvIfConns: + dn = re.search(conn_regex, fvIfConn['fvIfConn']['attributes']['dn']) + if not dn: + continue + epg_key = ':'.join([dn.group('tenant'), dn.group('ap'), dn.group('epg')]) + port_keys = [] + if not dn.group('aep'): + fex = dn.group('stfex') if dn.group('stfex') else dn.group('dyfex') + port = dn.group('stport') if dn.group('stport') else dn.group('dyport') + if fex: + port_keys.append('/'.join([dn.group('node'), fex, port])) + else: + port_keys.append('/'.join([dn.group('node'), port])) + else: + for port_key, port_data in iteritems(mos.port_data): + if port_data.get('aep_name') == dn.group('aep') and port_data.get('node') == dn.group('node'): + port_keys.append(port_key) + for port_key in port_keys: + port_data = mos.port_data.get(port_key) + if not port_data: + continue + ports_per_epg[epg_key].append({ + 'tenant': str(dn.group('tenant')), + 'ap': str(dn.group('ap')), + 'epg': str(dn.group('epg')), + 'node': str(port_data.get('node', '')), + 'fex': str(port_data.get('fex', '')), + 'port': str(port_data.get('port', '')), + 'vlan': str(dn.group('vlan')), + 'aep': str(port_data.get('aep', '')), + 'domain_dns': port_data.get('domain_dns', []), + 'pc_type': str(port_data.get('pc_type', '')), + 'vlan_scope': str(port_data.get('vlan_scope', '')), + }) + + # Check overlapping VLAN pools per EPG + epg_filter = '?rsp-subtree-include=required&rsp-subtree=children&rsp-subtree-class=fvRsDomAtt' + fvAEPgs_with_domains = icurl('class', 'fvAEPg.json' + epg_filter) + for fvAEPg in fvAEPgs_with_domains: + # `rsp-subtree-include=required` ensures that fvRsDomAtt are the only children rsDoms = fvAEPg['fvAEPg']['children'] + rsDom_dns = [rsDom['fvRsDomAtt']['attributes']['tDn'] for rsDom in rsDoms] + + overlap_vlan_ids = set() for i in range(len(rsDoms)): for j in range(i + 1, len(rsDoms)): i_dn = rsDoms[i]['fvRsDomAtt']['attributes']['tDn'] j_dn = rsDoms[j]['fvRsDomAtt']['attributes']['tDn'] + i_vpool = mos.vpool_per_dom.get(i_dn) + j_vpool = mos.vpool_per_dom.get(j_dn) # domains that do not have VLAN pools attached - if not vpools.get(i_dn) or not vpools.get(j_dn): + if not i_vpool or not j_vpool: continue - if vpools[i_dn]['name'] != vpools[j_dn]['name'] \ - and set(vpools[i_dn]['encap']).intersection(vpools[j_dn]['encap']): - overlap_vpools.append([vpools[i_dn], vpools[j_dn]]) - - for overlap in overlap_vpools: - epg_regex = r'uni/tn-(?P[^/]+)/ap-(?P[^/]+)/epg-(?P[^/]+)' - dn = re.search(epg_regex, fvAEPg['fvAEPg']['attributes']['dn']) - data.append([dn.group('tenant'), dn.group('ap'), dn.group('epg'), - '{} ({})'.format(overlap[0]['name'], overlap[0]['dom_name']), - '{} ({})'.format(overlap[1]['name'], overlap[1]['dom_name']), - recommended_action]) - if not data: - result = PASS - print_result(title, result, msg, headers, data, doc_url=doc_url) + if i_vpool['name'] != j_vpool['name']: + overlap_vlan_ids.update( + set(i_vpool['vlan_ids']).intersection(j_vpool['vlan_ids']) + ) + + if not overlap_vlan_ids: + continue + + ports_per_node = defaultdict(dict) + epg_dn = re.search(epg_regex, fvAEPg['fvAEPg']['attributes']['dn']) + epg_key = ':'.join([epg_dn.group('tenant'), epg_dn.group('ap'), epg_dn.group('epg')]) + logging.debug('EPG - %s', epg_key) + epg_ports = ports_per_epg.get(epg_key, []) + for port in epg_ports: + vlan_id = int(port['vlan']) + if vlan_id not in overlap_vlan_ids: + continue + logging.debug(port) + + # Get domains that are attached to the port and the EPG + common_domain_dns = set(port['domain_dns']).intersection(rsDom_dns) + # Get domains with the VLAN ID for the port + inuse_domain_dns = [dn for dn in common_domain_dns if vlan_id in mos.vpool_per_dom.get(dn, {}).get('vlan_ids', [])] + if not inuse_domain_dns: + # Invalid path/vlan + continue + + # len(inuse_domain_dns) == 1 at this point means that there is no + # overlapping VLAN pool issue with this port alone. + # But do not skip such a port yet because there may be another port + # on the same node with the same VLAN ID with a different inuse_domain. + port['inuse_domain_dns'] = inuse_domain_dns + vlan_scope = port.get('vlan_scope', 'global') + # handle all non-portlocal scope as global + if vlan_scope not in ['global', 'portlocal']: + vlan_scope = 'global' + if vlan_id not in ports_per_node[port['node']]: + ports_per_node[port['node']][vlan_id] = {} + if vlan_scope not in ports_per_node[port['node']][vlan_id]: + ports_per_node[port['node']][vlan_id][vlan_scope] = [] + ports_per_node[port['node']][vlan_id][vlan_scope].append(port) + + for ports_per_vlanid in ports_per_node.values(): + for ports_per_scope in ports_per_vlanid.values(): + for ports in ports_per_scope.values(): + inuse_domain_dns_per_node = set() + has_vpc = False + for port in ports: + inuse_domain_dns_per_node.update(port['inuse_domain_dns']) + if port.get('pc_type') == 'vpc': + has_vpc = True + + # All ports on the node with the same VLAN ID use the same domain + if len(inuse_domain_dns_per_node) < 2: + continue + + if has_vpc: + result = FAIL_O + elif result == PASS: + result = MANUAL + impact = 'Outage' if has_vpc else 'Flood Scope' + for port in ports: + node = port['node'] + if port.get('fex') != "0": + node += '(FEX {})'.format(port['fex']) + vpool_domains = [] + for domain_dn in port['inuse_domain_dns']: + vpool = mos.vpool_per_dom[domain_dn] + vpool_domains.append( + '{}({})'.format(vpool['name'], vpool['dom_name']) + ) + data.append([ + port['tenant'], + port['ap'], + port['epg'], + node, + port['port'], + port['vlan_scope'], + port['vlan'], + ','.join(vpool_domains), + impact, + ]) + + print_result(title, result, msg, headers, data, recommended_action=recommended_action, doc_url=doc_url) return result diff --git a/tests/AciAccessPolicyParser/templates/access_policy.j2 b/tests/AciAccessPolicyParser/templates/access_policy.j2 new file mode 100644 index 0000000..9bfc983 --- /dev/null +++ b/tests/AciAccessPolicyParser/templates/access_policy.j2 @@ -0,0 +1,231 @@ +{% import 'macros.j2' as m %} +[ +{% for node in nodes %} + { + "infraNodeP": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}", "name": "{{ node.name }}" } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/rsaccPortP-[uni/infra/accportprof-{{ node.ifp_name }}]", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-{{ node.ifp_name }}" + } + } + }, + { + "infraLeafS": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range", "name": "{{ node.name }}", "type": "range" } + } + }, + { + "infraNodeBlk": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range/nodeblk-{{ node.from }}", + "from_": "{{ node.from }}", + "name": "{{ node.from }}", + "to_": "{{ node.to }}" + } + } + }, + { + "infraAccPortP": { + "attributes": { "dn": "uni/infra/accportprof-{{ node.ifp_name }}", "name": "{{ node.ifp_name }}", "nodeId": "0" } + } + }, +{% endfor %} +{% for port in ports %} + { + "infraHPortS": { + "attributes": { + "descr": "", + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range", + "name": "{{ m.port_name(port.card, port.port, port.subport) }}", + "type": "range" + } + } + }, + { + "{{ 'infraSubPortBlk' if port.subport else 'infraPortBlk' }}": { + "attributes": { + "descr": "", + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range/portblk-{{ m.port_name(port.card, port.port, port.subport) }}", + "fromCard": "{{ port.card }}", + "fromPort": "{{ port.port }}", + {% if port.subport -%} + "fromSubPort": "{{ port.subport }}", + "toSubPort": "{{ port.subport }}", + {%- endif %} + "name": "{{ m.port_name(port.card, port.port, port.subport) }}", + "toCard": "{{ port.card }}", + "toPort": "{{ port.port }}" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range/rsaccBaseGrp", + "fexId": "{{ port.fex|default(101) }}", + "tCl": "{{ port.ifpg_class }}", + "tDn": "{{ m.ifpg_dn(port.ifpg_name, port.ifpg_class) }}" + } + } + }, +{% endfor %} +{% for override in override_ports %} + { + "infraHPathS": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}", + "name": "{{ override.node}}_{{ override.path }}" + } + } + }, + { + "infraRsHPathAtt": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}/rsHPathAtt-[{{ m.pathep_dn(1, override.node, override.path) }}]", + "tCl": "fabricPathEp", + "tDn": "{{ m.pathep_dn(1, override.node, override.path) }}" + } + } + }, + { + "infraRsPathToAccBaseGrp": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}/rspathToAccBaseGrp", + "tCl": "{{ override.ifpg_class }}", + "tDn": "{{ m.ifpg_dn(override.ifpg_name, override.ifpg_class) }}" + } + } + }, +{% endfor %} +{% for ifpg in ifpgs %} + { + "{{ ifpg.class }}": { + "attributes": { + {% if ifpg.class in ["infraAccBndlGrp", "infraFexBndlGrp"] -%} + "lagT": "{{ ifpg.lagT }}", + {%- endif %} + "dn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}", + "name": "{{ ifpg.name }}" + } + } + }, + {% if ifpg.class == "infraFexBndlGrp" %} + { + "infraFexP": { + "attributes": { + "dn": "uni/infra/fexprof-{{ ifpg.name }}", + "fexId": "unspecified", + "name": "{{ ifpg.name }}", + "nodeId": "0" + } + } + }, + {% else %} + { + "infraRsAttEntP": { + "attributes": { + "dn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}/rsattEntP", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-{{ ifpg.aep }}" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "dn": "uni/infra/l2IfP-{{ ifpg.l2if }}/rtinfraL2IfPol-[{{ m.ifpg_dn(ifpg.name, ifpg.class) }}]", + "tCl": "{{ ifpg.class }}", + "tDn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}" + } + } + }, + {% endif %} +{% endfor %} +{% for aep in aeps %} + { + "infraAttEntityP": { + "attributes": { "dn": "uni/infra/attentp-{{ aep }}", "name": "{{ aep }}" } + } + }, +{% endfor %} +{% for domain in domains %} + {% for aep in domain.aeps %} + { + "infraRsDomP": { + "attributes": { + "dn": "uni/infra/attentp-{{ aep }}/rsdomP-[{{ m.domain_dn(domain.name, domain.class) }}]", + "tCl": "{{ domain.class|default("physDomP") }}", + "tDn": "{{ m.domain_dn(domain.name, domain.class) }}" + } + } + }, + {% endfor %} +{% endfor %} +{% for vpool in vpools %} + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "{{ vpool.mode }}", + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}", + "name": "{{ vpool.name }}" + } + } + }, + {% for vlan in vpool.vlan_ranges %} + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "{{ vlan.mode|default("inherit") }}", + "descr": "", + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}/from-[vlan-{{ vlan.from }}]-to-[vlan-{{ vlan.to }}]", + "from": "vlan-{{ vlan.from }}", + "name": "", + "role": "external", + "to": "vlan-{{ vlan.to }}" + } + } + }, + {% endfor %} + {% for dom in vpool.domains %} + { + "fvnsRtVlanNs": { + "attributes": { + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}/rtinfraVlanNs-[{{ m.domain_dn(dom.name, dom.class) }}]", + "tCl": "{{ dom.class|default("physDomP") }}", + "tDn": "{{ m.domain_dn(dom.name, dom.class) }}" + } + } + }, + {% endfor %} +{% endfor %} + { + "l2IfPol": { + "attributes": { + "descr": "", + "dn": "uni/infra/l2IfP-default", + "name": "default", + "qinq": "disabled", + "vepa": "disabled", + "vlanScope": "global" + } + } + }, + { + "l2IfPol": { + "attributes": { + "descr": "", + "dn": "uni/infra/l2IfP-VLAN_SCOPE_LOCAL", + "name": "VLAN_SCOPE_LOCAL", + "qinq": "disabled", + "vepa": "disabled", + "vlanScope": "portlocal" + } + } + } +] diff --git a/tests/AciAccessPolicyParser/templates/macros.j2 b/tests/AciAccessPolicyParser/templates/macros.j2 new file mode 100644 index 0000000..a290adf --- /dev/null +++ b/tests/AciAccessPolicyParser/templates/macros.j2 @@ -0,0 +1,48 @@ +{% macro ifp_dn(ifp="", fexp="") -%} + {% if ifp -%} + uni/infra/accportprof-{{ ifp }} + {%- else -%} + uni/infra/fexprof-{{ fexp }} + {%- endif %} +{%- endmacro %} + +{% macro ifpg_dn(name, class) -%} + {% if class == "infraAccPortGrp" -%} + uni/infra/funcprof/accportgrp-{{ name }} + {%- elif class == "infraAccBndlGrp" -%} + uni/infra/funcprof/accbundle-{{ name }} + {%- elif class == "infraAccBndlPolGrp" -%} + uni/infra/funcprof/accbundlepolgrp-{{ name }} + {%- elif class == "infraBrkoutPortGrp" -%} + uni/infra/funcprof/brkoutportgrp-{{ name }} + {%- elif class == "infraFexBndlGrp" -%} + uni/infra/fexprof-{{ name }}/fexbundle-{{ name }} + {%- endif %} +{%- endmacro %} + +{% macro port_name(card, port, subport) -%} + {% if subport -%} + ETH{{ card }}-{{ port }}-{{ subport }} + {%- else -%} + ETH{{ card }}-{{ port }} + {%- endif %} +{%- endmacro %} + +{% macro domain_dn(name, class) -%} + {% if class|default("physDomP") == "physDomP" -%} + uni/phys-{{ name }} + {%- elif class|default("physDomP") == "l3extDomP" -%} + uni/l3dom-{{ name }} + {%- elif class|default("physDomP") == "vmmDomP" -%} + uni/vmmp-VMware/dom-{{ name }} + {%- endif %} +{%- endmacro %} + +{% macro pathep_dn(pod, node, path) -%} + {% if node.split("-")|length > 1 %} + {% set n = node.split("-") %} + topology/pod-{{pod}}/protpaths-{{n[0]}}-{{n[1]}}/pathep-[{{path}}] + {%- else -%} + topology/pod-{{pod}}/paths-{{node}}/pathep-[{{path}}] + {%- endif %} +{%- endmacro %} diff --git a/tests/AciAccessPolicyParser/templates/node_profiles.j2 b/tests/AciAccessPolicyParser/templates/node_profiles.j2 new file mode 100644 index 0000000..c3a933c --- /dev/null +++ b/tests/AciAccessPolicyParser/templates/node_profiles.j2 @@ -0,0 +1,34 @@ +{% extends "./access_policy.j2" %} +{% block node_profiles %} + {% for node in nodes %} + { + "infraNodeP": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}", "name": "{{ node.name }}" } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/rsaccPortP-[uni/infra/accportprof-{{ node.ifp_name }}]", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-{{ node.ifp_name }}" + } + } + }, + { + "infraLeafS": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range", "name": "{{ node.name }}", "type": "range" } + } + }, + { + "infraNodeBlk": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range/nodeblk-{{ node.from }}", + "from_": "{{ node.from }}", + "name": "{{ node.from }}", + "to_": "{{ node.to }}" + } + } + }, + {% endfor %} +{% endblock %} diff --git a/tests/AciAccessPolicyParser/test_AciAccessPolicyParser.py b/tests/AciAccessPolicyParser/test_AciAccessPolicyParser.py new file mode 100644 index 0000000..df4c132 --- /dev/null +++ b/tests/AciAccessPolicyParser/test_AciAccessPolicyParser.py @@ -0,0 +1,787 @@ +import os +import logging +import importlib +import yaml +from jinja2 import Environment, FileSystemLoader + +script = importlib.import_module("aci-preupgrade-validation-script") + +log = logging.getLogger(__name__) +dir = os.path.dirname(os.path.abspath(__file__)) + +j2_env = Environment(loader=FileSystemLoader("/".join([dir, "templates"]))) +tmpl = j2_env.get_template("access_policy.j2") + +params = { + "nodes": [ + {"name": "L101", "ifp_name": "L101", "from": "101", "to": "101"}, + {"name": "L102", "ifp_name": "L102", "from": "102", "to": "102"}, + {"name": "L103", "ifp_name": "L103", "from": "103", "to": "103"}, + {"name": "L104", "ifp_name": "L104", "from": "104", "to": "104"}, + {"name": "L101-102", "ifp_name": "L101-102", "from": "101", "to": "102"}, + {"name": "L103-104", "ifp_name": "L103-104", "from": "103", "to": "104"}, + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L101", + "card": "1", + "port": "3", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "ifp": "L101", + "card": "1", + "port": "20", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "30", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L102", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L102", + "card": "1", + "port": "3", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "ifp": "L102", + "card": "1", + "port": "20", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + { + "ifp": "L102", + "card": "1", + "port": "21", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC2", + }, + { + "ifp": "L102", + "card": "1", + "port": "30", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L103", + "card": "1", + "port": "5", + "ifpg_class": "infraBrkoutPortGrp", + "ifpg_name": "system-breakout-25g-4x", + }, + { + "ifp": "L103", + "card": "1", + "port": "5", + "subport": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "ifp": "L103", + "card": "1", + "port": "10", + "ifpg_class": "infraFexBndlGrp", + "ifpg_name": "FEX110", + "fex": "110", + }, + { + "ifp": "L104", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + { + "fexp": "FEX110", + "card": "1", + "port": "20", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L101-102", + "card": "1", + "port": "11", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC2", + }, + { + "ifp": "L103-104", + "card": "1", + "port": "11", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC3", + }, + ], + "override_ports": [ + { + "node": "102", + "path": "eth1/2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "node": "102", + "path": "IFPG_PC2", + "ifpg_class": "infraAccBndlPolGrp", + "ifpg_name": "IFPG_PC_Override", + }, + ], + "ifpgs": [ + { + "class": "infraAccPortGrp", + "name": "IFPG1", + "aep": "AEP1", + "l2if": "default", + }, + { + "class": "infraAccPortGrp", + "name": "IFPG2", + "aep": "AEP2", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_PC1", + "aep": "AEP1", + "lagT": "link", + "l2if": "default", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_PC2", + "aep": "AEP2", + "lagT": "link", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC1", + "aep": "AEP1", + "lagT": "node", + "l2if": "default", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC2", + "aep": "AEP2", + "lagT": "node", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC3", + "aep": "AEP2", + "lagT": "node", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlPolGrp", + "name": "IFPG_PC_Override", + "aep": "AEP1", + "l2if": "default", + }, + { + "class": "infraBrkoutPortGrp", + "name": "system-breakout-25g-4x", + }, + { + "class": "infraFexBndlGrp", + "name": "FEX110", + "lagT": "link", + }, + ], + "aeps": ["AEP1", "AEP2"], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + {"name": "PHYDOM3", "aeps": ["AEP1", "AEP2"]}, + {"name": "L3DOM1", "aeps": ["AEP1"], "class": "l3extDomP"}, + {"name": "VMMDOM1", "aeps": ["AEP1"], "class": "vmmDomP"}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "dynamic", + "vlan_ranges": [{"from": "2000", "to": "2010"}], + "domains": [{"name": "PHYDOM1"}, {"name": "VMMDOM1", "class": "vmmDomP"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "203", "to": "207"}], + "domains": [{"name": "PHYDOM2"}], + }, + { + "name": "VLANPool3", + "mode": "static", + "vlan_ranges": [ + {"from": "200", "to": "205"}, + {"from": "2000", "to": "2010"}, + ], + "domains": [{"name": "PHYDOM3"}, {"name": "L3DOM1", "class": "l3extDomP"}], + }, + { + "name": "VLANPool4", + "mode": "dynamic", + "vlan_ranges": [{"from": "410", "to": "415"}], + "domains": [{"name": "PHYDOM4"}, {"name": "VMMDOM4", "class": "vmmDomP"}], + }, + ], +} + + +def test_get_classes(): + all_classes = script.AciAccessPolicyParser.get_classes() + assert sorted(all_classes) == sorted( + [ + "fvnsVlanInstP", + "fvnsEncapBlk", + "infraAttEntityP", + "infraAccPortP", + "infraHPortS", + "infraPortBlk", + "infraSubPortBlk", + "infraHPathS", + "infraNodeP", + "infraLeafS", + "infraNodeBlk", + "infraFexP", + "infraFexBndlGrp", + "infraAccPortGrp", + "infraAccBndlGrp", + "infraAccBndlPolGrp", + "l2IfPol", + "fvnsRtVlanNs", + "infraRsDomP", + "infraRsAttEntP", + "infraRsAccBaseGrp", + "infraRsPathToAccBaseGrp", + "infraRsHPathAtt", + "infraRsAccPortP", + "l2RtL2IfPol", + ] + ) + + +def test_basic(): + data_str = tmpl.render(params) + infra_mos = yaml.safe_load(data_str) + a = script.AciAccessPolicyParser(infra_mos) + assert sorted(a.nodes_per_ifp.items()) == sorted( + [ + ("uni/infra/accportprof-L101", [101]), + ("uni/infra/accportprof-L102", [102]), + ("uni/infra/accportprof-L101-102", [101, 102]), + ("uni/infra/accportprof-L103", [103]), + ("uni/infra/accportprof-L104", [104]), + ("uni/infra/accportprof-L103-104", [103, 104]), + ] + ) + + assert sorted(a.vpool_per_dom.items()) == sorted( + [ + ( + "uni/phys-PHYDOM1", + { + "vlan_ids": [ + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + ], + "dom_type": "phys", + "name": "VLANPool1", + "dom_name": "PHYDOM1", + }, + ), + ( + "uni/phys-PHYDOM2", + { + "vlan_ids": [203, 204, 205, 206, 207], + "dom_type": "phys", + "name": "VLANPool2", + "dom_name": "PHYDOM2", + }, + ), + ( + "uni/phys-PHYDOM3", + { + "vlan_ids": [ + 200, + 201, + 202, + 203, + 204, + 205, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + ], + "dom_type": "phys", + "name": "VLANPool3", + "dom_name": "PHYDOM3", + }, + ), + ( + "uni/l3dom-L3DOM1", + { + "vlan_ids": [ + 200, + 201, + 202, + 203, + 204, + 205, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + ], + "dom_type": "l3dom", + "name": "VLANPool3", + "dom_name": "L3DOM1", + }, + ), + ( + "uni/phys-PHYDOM4", + { + "vlan_ids": [410, 411, 412, 413, 414, 415], + "dom_type": "phys", + "name": "VLANPool4", + "dom_name": "PHYDOM4", + }, + ), + ( + "uni/vmmp-VMware/dom-VMMDOM1", + { + "vlan_ids": [ + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + ], + "dom_type": "vmm", + "name": "VLANPool1", + "dom_name": "VMMDOM1", + }, + ), + ( + "uni/vmmp-VMware/dom-VMMDOM4", + { + "vlan_ids": [410, 411, 412, 413, 414, 415], + "dom_type": "vmm", + "name": "VLANPool4", + "dom_name": "VMMDOM4", + }, + ), + ] + ) + + assert sorted(a.port_data.items()) == sorted( + [ + ( + "101/IFPG_PC1", + { + "node": "101", + "pc_type": "pc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_PC1", + "vlan_scope": "global", + "port": "IFPG_PC1", + "fex": "0", + }, + ), + ( + "101/IFPG_VPC1", + { + "node": "101", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_VPC1", + "vlan_scope": "global", + "port": "IFPG_VPC1", + "fex": "0", + }, + ), + ( + "101/IFPG_VPC2", + { + "node": "101", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG_VPC2", + "vlan_scope": "portlocal", + "port": "IFPG_VPC2", + "fex": "0", + }, + ), + ( + "101/eth1/1", + { + "node": "101", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG1", + "vlan_scope": "global", + "port": "eth1/1", + "fex": "0", + }, + ), + ( + "101/eth1/2", + { + "node": "101", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG1", + "vlan_scope": "global", + "port": "eth1/2", + "fex": "0", + }, + ), + ( + "101/eth1/3", + { + "node": "101", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG2", + "vlan_scope": "portlocal", + "port": "eth1/3", + "fex": "0", + }, + ), + ( + "102/IFPG_PC1", + { + "node": "102", + "pc_type": "pc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_PC1", + "vlan_scope": "global", + "port": "IFPG_PC1", + "fex": "0", + }, + ), + ( + "102/IFPG_PC2", + { + "node": "102", + "pc_type": "pc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_PC2", + "override_ifpg_name": "IFPG_PC_Override", + "vlan_scope": "global", + "port": "IFPG_PC2", + "fex": "0", + }, + ), + ( + "102/IFPG_VPC1", + { + "node": "102", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_VPC1", + "vlan_scope": "global", + "port": "IFPG_VPC1", + "fex": "0", + }, + ), + ( + "102/IFPG_VPC2", + { + "node": "102", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG_VPC2", + "vlan_scope": "portlocal", + "port": "IFPG_VPC2", + "fex": "0", + }, + ), + ( + "102/eth1/1", + { + "node": "102", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG1", + "vlan_scope": "global", + "port": "eth1/1", + "fex": "0", + }, + ), + ( + "102/eth1/2", + { + "node": "102", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG1", + "override_ifpg_name": "IFPG2", + "vlan_scope": "portlocal", + "port": "eth1/2", + "fex": "0", + }, + ), + ( + "102/eth1/3", + { + "node": "102", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG2", + "vlan_scope": "portlocal", + "port": "eth1/3", + "fex": "0", + }, + ), + ( + "103/IFPG_VPC3", + { + "node": "103", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG_VPC3", + "vlan_scope": "portlocal", + "port": "IFPG_VPC3", + "fex": "0", + }, + ), + ( + "103/eth1/5", + { + "node": "103", + "pc_type": "none", + "domain_dns": [], + "aep_name": "", + "ifpg_name": "system-breakout-25g-4x", + "vlan_scope": "unknown", + "port": "eth1/5", + "fex": "0", + }, + ), + ( + "103/eth1/5/1", + { + "node": "103", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG2", + "vlan_scope": "portlocal", + "port": "eth1/5/1", + "fex": "0", + }, + ), + ( + "103/eth1/10", + { + "node": "103", + "pc_type": "pc", + "domain_dns": [], + "aep_name": "", + "ifpg_name": "FEX110", + "vlan_scope": "unknown", + "port": "eth1/10", + "fex": "0", + }, + ), + ( + "103/110/eth1/20", + { + "node": "103", + "pc_type": "none", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG1", + "vlan_scope": "global", + "port": "eth1/20", + "fex": "110", + }, + ), + ( + "104/IFPG_PC1", + { + "node": "104", + "pc_type": "pc", + "domain_dns": [ + "uni/phys-PHYDOM1", + "uni/phys-PHYDOM3", + "uni/l3dom-L3DOM1", + "uni/vmmp-VMware/dom-VMMDOM1", + ], + "aep_name": "AEP1", + "ifpg_name": "IFPG_PC1", + "vlan_scope": "global", + "port": "IFPG_PC1", + "fex": "0", + }, + ), + ( + "104/IFPG_VPC3", + { + "node": "104", + "pc_type": "vpc", + "domain_dns": [ + "uni/phys-PHYDOM2", + "uni/phys-PHYDOM3", + ], + "aep_name": "AEP2", + "ifpg_name": "IFPG_VPC3", + "vlan_scope": "portlocal", + "port": "IFPG_VPC3", + "fex": "0", + }, + ), + ] + ) diff --git a/tests/overlapping_vlan_pools_check/access_policy.json b/tests/overlapping_vlan_pools_check/access_policy.json new file mode 100644 index 0000000..bd13dd1 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/access_policy.json @@ -0,0 +1,5613 @@ +[ + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/nprof-L102/leaves-L102-typ-range/nodeblk-102", + "extMngdBy": "", + "from_": "102", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:22.837-07:00", + "name": "102", + "nameAlias": "", + "status": "", + "to_": "102", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/nprof-L103/leaves-L103-typ-range/nodeblk-103", + "extMngdBy": "", + "from_": "103", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:22.837-07:00", + "name": "103", + "nameAlias": "", + "status": "", + "to_": "103", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/nprof-L104/leaves-L104-typ-range/nodeblk-104", + "extMngdBy": "", + "from_": "104", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:22.837-07:00", + "name": "104", + "nameAlias": "", + "status": "", + "to_": "104", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/nprof-L101/leaves-L101-typ-range/nodeblk-101", + "extMngdBy": "", + "from_": "101", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:24.389-07:00", + "name": "101", + "nameAlias": "", + "status": "", + "to_": "101", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/nprof-L101-102/leaves-L101-102-typ-range/nodeblk-c5ac8715e3660abb", + "extMngdBy": "", + "from_": "101", + "lcOwn": "local", + "modTs": "2024-08-03T00:16:47.031-07:00", + "name": "c5ac8715e3660abb", + "nameAlias": "", + "status": "", + "to_": "102", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spprof-S1001/spines-S1001-typ-range/nodeblk-1001", + "extMngdBy": "", + "from_": "1001", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:22.819-07:00", + "name": "1001", + "nameAlias": "", + "status": "", + "to_": "1001", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spprof-S1002/spines-S1002-typ-range/nodeblk-1002", + "extMngdBy": "", + "from_": "1002", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:22.688-07:00", + "name": "1002", + "nameAlias": "", + "status": "", + "to_": "1002", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraLeafS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L102/leaves-L102-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.937-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L102", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraLeafS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L103/leaves-L103-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:16.136-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L103", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraLeafS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L104/leaves-L104-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.812-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L104", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraLeafS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L101/leaves-L101-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.866-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraLeafS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L101-102/leaves-L101-102-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:16:47.031-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101-102", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-23-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:53.952-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-23", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-12-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:56.723-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-12", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-13-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:56.369-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-13", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-11-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.231-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-11", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-2-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.370-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-22-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.881-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-22", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-24-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.095-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-24", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-3-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.349-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-10-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-01T19:41:52.177-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-10", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-test-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-01T22:48:09.707-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "test", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-1-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:05.890-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-14-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:34.216-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-14", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-30-1-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T00:52:09.425-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-30-1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-17-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T18:54:24.173-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-17", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-15-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-07T22:36:17.082-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-15", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-11-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:01.223-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-11", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-1-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.148-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-13-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.545-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-13", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-12-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.019-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-12", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-3-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.176-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-2-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.185-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-13-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:53.952-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-13", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-12-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:53.952-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-12", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-2-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.010-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-3-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.219-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-11-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.701-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-11", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-1-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.425-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-2-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:53.934-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-1-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:56.804-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-11-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:56.898-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-11", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-3-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.556-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-13-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.691-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-13", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-12-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:57.870-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-12", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-40-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:56.804-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-40", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-41-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:25.190-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-41", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103-104/hports-ETH1-40-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:55.755-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-40", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/fexprof-FEXP/hports-ETH1-9-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T00:50:49.746-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-9", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPortS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/fexprof-FEX110/hports-ETH1-10-typ-range", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:20.186-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "ETH1-10", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "type": "range", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-23-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.855-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-UCS_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-12-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-07-25T11:33:08.300-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-13-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-07-24T11:26:51.793-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-11-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-07T12:22:10.326-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-2-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-07-26T13:32:45.705-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2-2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-22-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.855-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-UCS_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-24-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.855-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-UCS_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-3-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-10-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T00:52:41.270-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraFexBndlGrp", + "tDn": "uni/infra/fexprof-FEXP/fexbundle-FEXP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-test-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-01T22:48:09.707-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "unformed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBaseGrp", + "tDn": "", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-1-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:05.890-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-14-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:34.216-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraBrkoutPortGrp", + "tDn": "uni/infra/funcprof/brkoutportgrp-system-breakout-25g-4x", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-30-1-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T00:52:09.425-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-17-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "102", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T18:54:24.173-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraFexBndlGrp", + "tDn": "uni/infra/fexprof-FEXP/fexbundle-FEXP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-15-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-07T22:36:17.082-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-PC_101_1_15", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-11-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-1-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-13-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.920-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-N9K_VPC_3-4_13", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-12-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-3-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-2-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-13-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-12-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-2-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-3-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-11-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-1-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-2-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-1-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-11-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-3-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-13-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.920-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-N9K_VPC_3-4_13", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-12-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-40-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:56.804-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-VPC_40", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-41-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "110", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:25.190-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraFexBndlGrp", + "tDn": "uni/infra/fexprof-FEX110/fexbundle-FEX110", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/accportprof-L103-104/hports-ETH1-40-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:55.755-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-VPC_103-104_40", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/fexprof-FEXP/hports-ETH1-9-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T00:50:49.746-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/fexprof-FEX110/hports-ETH1-10-typ-range/rsaccBaseGrp", + "extMngdBy": "", + "fexId": "101", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:20.186-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-FEX_VPC1", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-23-typ-range/portblk-1-23", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "23", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.197-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-23", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "23", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-12-typ-range/portblk-1-12", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "12", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:13.406-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-12", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "12", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-13-typ-range/portblk-1-13", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "13", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.941-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-13", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "13", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-11-typ-range/portblk-1-11", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "11", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.547-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-11", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "11", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.139-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-22-typ-range/portblk-1-22", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "22", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.520-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-22", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "22", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-24-typ-range/portblk-1-24", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "24", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:11.650-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-24", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "24", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-3-typ-range/portblk-1-3", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "3", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:11.019-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-3", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "3", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-10-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "10", + "lcOwn": "local", + "modTs": "2024-08-01T19:41:52.177-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "10", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-test-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "2", + "fromPort": "10", + "lcOwn": "local", + "modTs": "2024-08-01T22:48:09.707-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "2", + "toPort": "12", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-1-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:05.890-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-14-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "14", + "lcOwn": "local", + "modTs": "2024-08-02T00:51:34.216-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "14", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-17-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "17", + "lcOwn": "local", + "modTs": "2024-08-02T18:54:24.173-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "17", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-15-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "15", + "lcOwn": "local", + "modTs": "2024-08-07T22:36:17.082-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "15", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-11-typ-range/portblk-1-11", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "11", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:13.930-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-11", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "11", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-1-typ-range/portblk-1-1", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:12.956-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-1", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-13-typ-range/portblk-1-13", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "13", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.925-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-13", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "13", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-12-typ-range/portblk-1-12", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "12", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:08.427-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-12", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "12", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-3-typ-range/portblk-1-3", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "3", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.821-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-3", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "3", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103/hports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:12.274-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-13-typ-range/portblk-1-13", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "13", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.941-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-13", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "13", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-12-typ-range/portblk-1-12", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "12", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:13.674-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-12", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "12", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:16.848-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-3-typ-range/portblk-1-3", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "3", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.941-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-3", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "3", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-11-typ-range/portblk-1-11", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "11", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.821-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-11", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "11", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L102/hports-ETH1-1-typ-range/portblk-1-1", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:11.019-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-1", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.821-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-1-typ-range/portblk-1-1", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.801-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-1", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-11-typ-range/portblk-1-11", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "11", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:11.638-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-11", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "11", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-3-typ-range/portblk-1-3", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "3", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:14.685-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-3", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "3", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-13-typ-range/portblk-1-13", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "13", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:15.723-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-13", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "13", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L104/hports-ETH1-12-typ-range/portblk-1-12", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "12", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:13.230-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-12", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "12", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-40-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "40", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:56.804-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "40", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101-102/hports-ETH1-41-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "41", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:25.190-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "41", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L103-104/hports-ETH1-40-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "40", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:55.755-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "40", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/fexprof-FEXP/hports-ETH1-9-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "9", + "lcOwn": "local", + "modTs": "2024-08-02T00:50:49.746-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "9", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/fexprof-FEX110/hports-ETH1-10-typ-range/portblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "10", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:20.186-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "10", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spaccportprof-S1001/shports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:19.854-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spaccportprof-S1001/shports-ETH1-1-typ-range/portblk-1-1", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:21.413-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-1", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spaccportprof-S1002/shports-ETH1-2-typ-range/portblk-1-2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "2", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.952-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "2", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraPortBlk": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/spaccportprof-S1002/shports-ETH1-1-typ-range/portblk-1-1", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "1", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:21.434-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "1-1", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L102", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:11.356-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L102", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L103", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:11.377-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L103", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L104", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:11.377-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L104", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L101", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:11.377-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraNodeP": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/nprof-L101-102", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:16:47.031-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101-102", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/nprof-L102/rsaccPortP-[uni/infra/accportprof-L102]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.625-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L102", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/nprof-L103/rsaccPortP-[uni/infra/accportprof-L103]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.823-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L103", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/nprof-L103/rsaccPortP-[uni/infra/accportprof-L103-104]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-03T00:18:04.917-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L103-104", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/nprof-L104/rsaccPortP-[uni/infra/accportprof-L104]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:41:18.610-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L104", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/nprof-L104/rsaccPortP-[uni/infra/accportprof-L103-104]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-03T00:18:13.167-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L103-104", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/nprof-L101/rsaccPortP-[uni/infra/accportprof-L101]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-01T19:41:52.177-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L101", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/nprof-L101-102/rsaccPortP-[uni/infra/accportprof-L101-102]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-03T00:16:47.031-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-L101-102", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:40:44.768-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:40:44.768-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L103", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L102", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:40:44.768-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L102", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L104", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:40:44.768-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L104", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L101-102", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:56.804-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L101-102", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortP": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/accportprof-L103-104", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:55.755-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "L103-104", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraFexP": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/fexprof-FEXP", + "extMngdBy": "", + "fexId": "unspecified", + "lcOwn": "local", + "modTs": "2024-08-02T00:50:49.746-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEXP", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraFexP": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/fexprof-FEX110", + "extMngdBy": "", + "fexId": "unspecified", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:20.186-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEX110", + "nameAlias": "", + "nodeId": "0", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraFexBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/fexprof-FEXP/fexbundle-FEXP", + "extMngdBy": "", + "lagT": "link", + "lcOwn": "local", + "modTs": "2024-08-02T00:50:49.746-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEXP", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraFexBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/fexprof-FEX110/fexbundle-FEX110", + "extMngdBy": "", + "lagT": "link", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:20.186-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEX110", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/funcprof/accbundle-N9K_VPC_3-4_13/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.728-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundle-PC_101_1_15/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-02T16:43:29.631-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundle-VPC_40/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:53.581-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundle-VPC_103-104_40/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:52.277-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundle-FEX_VPC1/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:15.256-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundlepolgrp-PC_override/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-02T16:08:43.077-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accbundlepolgrp-VPC_override/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:08.675-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-UCS_ACCESS/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.802-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-UCS_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-INB_APIC/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.770-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-INB_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.770-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:56.629-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-FEC/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-07-06T18:12:40.002-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS3/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:57.184-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP3", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2-2/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-07-26T13:32:40.506-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-N9K_AEP2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsAttEntP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/funcprof/spaccportgrp-IPN/rsattEntP", + "extMngdBy": "", + "forceResolve": "yes", + "isUsingConnSel": "no", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:45.241-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-IPN_AEP", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "VPC from leaf3 and 4 on eth1/13 towards N9K", + "dn": "uni/infra/funcprof/accbundle-N9K_VPC_3-4_13", + "extMngdBy": "", + "lagT": "node", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.770-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_VPC_3-4_13", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundle-PC_101_1_15", + "extMngdBy": "", + "lagT": "link", + "lcOwn": "local", + "modTs": "2024-08-02T16:43:29.631-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "PC_101_1_15", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundle-VPC_40", + "extMngdBy": "", + "lagT": "node", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:53.581-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "VPC_40", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundle-VPC_103-104_40", + "extMngdBy": "", + "lagT": "node", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:52.277-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "VPC_103-104_40", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundle-FEX_VPC1", + "extMngdBy": "", + "lagT": "node", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:15.256-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEX_VPC1", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-UCS_ACCESS", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.770-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "UCS_ACCESS", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-INB_APIC", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.747-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "INB_APIC", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:46.770-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_ACCESS", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-22T18:41:28.128-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_ACCESS2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-FEC", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-06T18:12:40.002-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "FEC", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS3", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:57.184-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_ACCESS3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccPortGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2-2", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-26T13:32:40.506-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_ACCESS2-2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-default", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:32:30.401-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "default", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "0", + "userdom": ":" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-UCS_AEP", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:30.846-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "UCS_AEP", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-IPN_AEP", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:30.834-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "IPN_AEP", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-N9K_AEP", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:30.453-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_AEP", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-INB_AEP", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:30.400-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "INB_AEP", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-N9K_AEP2", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:39.851-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_AEP2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAttEntityP": { + "attributes": { + "annotation": "", + "childAction": "", + "configIssues": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/attentp-N9K_AEP3", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:50.532-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "N9K_AEP3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-UCS_AEP/rsdomP-[uni/phys-SPAN_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:38.529-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-SPAN_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-UCS_AEP/rsdomP-[uni/phys-INB_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:38.519-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-INB_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-UCS_AEP/rsdomP-[uni/phys-TK_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:38.996-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-UCS_AEP/rsdomP-[uni/vmmp-VMware/dom-F2_DVS]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:39.098-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-IPN_AEP/rsdomP-[uni/phys-IPN_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:38.519-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "missing-target", + "stateQual": "none", + "status": "", + "tCl": "infraADomP", + "tDn": "uni/phys-IPN_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP/rsdomP-[uni/l3dom-TK_L3DOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:35.641-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "l3extDomP", + "tDn": "uni/l3dom-TK_L3DOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP/rsdomP-[uni/phys-TK_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:38.908-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP/rsdomP-[uni/phys-INB_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:39.118-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-INB_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dn": "uni/infra/attentp-INB_AEP/rsdomP-[uni/phys-INB_PHYDOM]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:36.450-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-INB_PHYDOM", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP2/rsdomP-[uni/phys-TK_PHYDOM2]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:39.873-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP2/rsdomP-[uni/vmmp-VMware/dom-F2_DVS2]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-07-22T18:31:42.543-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsDomP": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/attentp-N9K_AEP3/rsdomP-[uni/phys-TK_PHYDOM3]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:50.554-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM3", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[TK_L3_VLAN]-static/rtinfraVlanNs-[uni/l3dom-TK_L3DOM]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:23.011-07:00", + "status": "", + "tCl": "l3extDomP", + "tDn": "uni/l3dom-TK_L3DOM" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[SPAN_VLAN]-static/rtinfraVlanNs-[uni/phys-SPAN_PHYDOM]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:22.963-07:00", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-SPAN_PHYDOM" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[INB_VLAN]-static/rtinfraVlanNs-[uni/phys-INB_PHYDOM]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:22.971-07:00", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-INB_PHYDOM" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[IPN_VLAN]-static/rtinfraVlanNs-[uni/l3dom-IPN_L3DOM]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:22.992-07:00", + "status": "", + "tCl": "l3extDomP", + "tDn": "uni/l3dom-IPN_L3DOM" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[TK_DVS_VLAN]-dynamic/rtinfraVlanNs-[uni/vmmp-VMware/dom-F2_DVS]", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:58.910-07:00", + "status": "", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN]-static/rtinfraVlanNs-[uni/phys-TK_PHYDOM]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:22.954-07:00", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN2]-dynamic/rtinfraVlanNs-[uni/phys-TK_PHYDOM2]", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:31.670-07:00", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM2" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[DVS_POOL_2]-dynamic/rtinfraVlanNs-[uni/vmmp-VMware/dom-F2_DVS2]", + "lcOwn": "local", + "modTs": "2024-07-22T18:05:02.597-07:00", + "status": "", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS2" + } + } + }, + { + "fvnsRtVlanNs": { + "attributes": { + "childAction": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN3]-static/rtinfraVlanNs-[uni/phys-TK_PHYDOM3]", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:44.367-07:00", + "status": "", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM3" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_L3_VLAN]-static/from-[vlan-2050]-to-[vlan-2099]", + "extMngdBy": "", + "from": "vlan-2050", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:04.856-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2099", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[SPAN_VLAN]-static/from-[vlan-800]-to-[vlan-800]", + "extMngdBy": "", + "from": "vlan-800", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.393-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-800", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[SPAN_VLAN]-static/from-[vlan-801]-to-[vlan-801]", + "extMngdBy": "", + "from": "vlan-801", + "lcOwn": "local", + "modTs": "2024-06-25T22:57:53.487-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-801", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[INB_VLAN]-static/from-[vlan-20]-to-[vlan-25]", + "extMngdBy": "", + "from": "vlan-20", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.405-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-25", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[IPN_VLAN]-static/from-[vlan-4]-to-[vlan-4]", + "extMngdBy": "", + "from": "vlan-4", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:05.006-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-4", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_DVS_VLAN]-dynamic/from-[vlan-2250]-to-[vlan-2299]", + "extMngdBy": "", + "from": "vlan-2250", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.734-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2299", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "orchestrator:terraform", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN]-static/from-[vlan-2000]-to-[vlan-2049]", + "extMngdBy": "", + "from": "vlan-2000", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.722-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2049", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "dynamic", + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN2]-dynamic/from-[vlan-2000]-to-[vlan-2049]", + "extMngdBy": "", + "from": "vlan-2000", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:29.466-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2049", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[DVS_POOL_2]-dynamic/from-[vlan-2289]-to-[vlan-2289]", + "extMngdBy": "", + "from": "vlan-2289", + "lcOwn": "local", + "modTs": "2024-07-22T18:47:43.183-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2289", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "inherit", + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN3]-static/from-[vlan-2000]-to-[vlan-2049]", + "extMngdBy": "", + "from": "vlan-2000", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:41.673-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "", + "nameAlias": "", + "role": "external", + "status": "", + "to": "vlan-2049", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_L3_VLAN]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:04.856-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "TK_L3_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[SPAN_VLAN]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.393-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "SPAN_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[INB_VLAN]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.405-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "INB_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[IPN_VLAN]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:05.006-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "IPN_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "dynamic", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_DVS_VLAN]-dynamic", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.734-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "TK_DVS_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:42:59.722-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "TK_PHY_VLAN", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "dynamic", + "annotation": "", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN2]-dynamic", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:29.466-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "TK_PHY_VLAN2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "dynamic", + "annotation": "", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[DVS_POOL_2]-dynamic", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-22T18:47:43.183-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "DVS_POOL_2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "static", + "annotation": "", + "childAction": "", + "configIssues": "", + "descr": "", + "dn": "uni/infra/vlanns-[TK_PHY_VLAN3]-static", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:41.673-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "TK_PHY_VLAN3", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlPolGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundlepolgrp-PC_override", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T16:08:43.077-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "PC_override", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraAccBndlPolGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/funcprof/accbundlepolgrp-VPC_override", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:08.675-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "VPC_override", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPathS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/hpaths-default", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:31:58.122-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "default", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "0", + "userdom": ":" + } + } + }, + { + "infraHPathS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/hpaths-VPC", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T16:08:48.319-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "VPC", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPathS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/hpaths-PC", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:24.418-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "PC", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraHPathS": { + "attributes": { + "annotation": "", + "childAction": "", + "creator": "USER", + "descr": "", + "dn": "uni/infra/hpaths-102_1_2", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-08-07T22:35:44.880-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "102_1_2", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "status": "", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsHPathAtt": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-VPC/rsHPathAtt-[topology/pod-2/protpaths-103-104/pathep-[N9K_VPC_3-4_13]]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T16:08:48.319-07:00", + "rType": "mo", + "state": "unformed", + "stateQual": "none", + "status": "", + "tCl": "fabricPathEp", + "tDn": "topology/pod-2/protpaths-103-104/pathep-[N9K_VPC_3-4_13]", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsHPathAtt": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-PC/rsHPathAtt-[topology/pod-1/paths-101/pathep-[PC_101_1_15]]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:24.418-07:00", + "rType": "mo", + "state": "unformed", + "stateQual": "none", + "status": "", + "tCl": "fabricPathEp", + "tDn": "topology/pod-1/paths-101/pathep-[PC_101_1_15]", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsHPathAtt": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-102_1_2/rsHPathAtt-[topology/pod-1/paths-102/pathep-[eth1/3]]", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-07T22:35:44.880-07:00", + "rType": "mo", + "state": "unformed", + "stateQual": "none", + "status": "", + "tCl": "fabricPathEp", + "tDn": "topology/pod-1/paths-102/pathep-[eth1/3]", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsPathToAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-VPC/rspathToAccBaseGrp", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:32.226-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlPolGrp", + "tDn": "uni/infra/funcprof/accbundlepolgrp-VPC_override", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsPathToAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-PC/rspathToAccBaseGrp", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:24.418-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccBndlPolGrp", + "tDn": "uni/infra/funcprof/accbundlepolgrp-PC_override", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "infraRsPathToAccBaseGrp": { + "attributes": { + "annotation": "", + "childAction": "", + "dn": "uni/infra/hpaths-102_1_2/rspathToAccBaseGrp", + "extMngdBy": "", + "forceResolve": "yes", + "lcOwn": "local", + "modTs": "2024-08-07T22:35:44.880-07:00", + "monPolDn": "uni/fabric/monfab-default", + "rType": "mo", + "state": "formed", + "stateQual": "none", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2", + "tType": "mo", + "uid": "15374", + "userdom": ":all:" + } + } + }, + { + "l2IfPol": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/l2IfP-default", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:32:30.401-07:00", + "name": "default", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "qinq": "disabled", + "status": "", + "uid": "0", + "userdom": ":", + "vepa": "disabled", + "vlanScope": "global" + } + } + }, + { + "l2IfPol": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/l2IfP-VLAN_SCOPE_LOCAL", + "extMngdBy": "", + "lcOwn": "local", + "modTs": "2024-06-27T18:31:55.234-07:00", + "name": "VLAN_SCOPE_LOCAL", + "nameAlias": "", + "ownerKey": "", + "ownerTag": "", + "qinq": "disabled", + "status": "", + "uid": "15374", + "userdom": ":all:", + "vepa": "disabled", + "vlanScope": "portlocal" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-UCS_ACCESS]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.855-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-UCS_ACCESS" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundle-N9K_VPC_3-4_13]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.920-07:00", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-N9K_VPC_3-4_13" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-INB_APIC]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:41.920-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-INB_APIC" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-N9K_ACCESS]", + "lcOwn": "local", + "modTs": "2024-06-25T21:43:42.167-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-FEC]", + "lcOwn": "local", + "modTs": "2024-07-06T18:12:40.002-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-FEC" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-N9K_ACCESS2-2]", + "lcOwn": "local", + "modTs": "2024-07-26T13:32:40.506-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2-2" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundlepolgrp-PC_override]", + "lcOwn": "local", + "modTs": "2024-08-02T16:08:43.077-07:00", + "status": "", + "tCl": "infraAccBndlPolGrp", + "tDn": "uni/infra/funcprof/accbundlepolgrp-PC_override" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundle-PC_101_1_15]", + "lcOwn": "local", + "modTs": "2024-08-02T16:43:29.631-07:00", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-PC_101_1_15" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundlepolgrp-VPC_override]", + "lcOwn": "local", + "modTs": "2024-08-02T16:44:08.675-07:00", + "status": "", + "tCl": "infraAccBndlPolGrp", + "tDn": "uni/infra/funcprof/accbundlepolgrp-VPC_override" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundle-VPC_40]", + "lcOwn": "local", + "modTs": "2024-08-03T00:15:53.581-07:00", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-VPC_40" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundle-VPC_103-104_40]", + "lcOwn": "local", + "modTs": "2024-08-03T00:17:52.277-07:00", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-VPC_103-104_40" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-default/rtinfraL2IfPol-[uni/infra/funcprof/accbundle-FEX_VPC1]", + "lcOwn": "local", + "modTs": "2024-08-04T22:13:15.256-07:00", + "status": "", + "tCl": "infraAccBndlGrp", + "tDn": "uni/infra/funcprof/accbundle-FEX_VPC1" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-VLAN_SCOPE_LOCAL/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-N9K_ACCESS3]", + "lcOwn": "local", + "modTs": "2024-07-26T12:45:57.184-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS3" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "childAction": "", + "dn": "uni/infra/l2IfP-VLAN_SCOPE_LOCAL/rtinfraL2IfPol-[uni/infra/funcprof/accportgrp-N9K_ACCESS2]", + "lcOwn": "local", + "modTs": "2024-07-26T12:46:17.802-07:00", + "status": "", + "tCl": "infraAccPortGrp", + "tDn": "uni/infra/funcprof/accportgrp-N9K_ACCESS2" + } + } + }, + { + "infraSubPortBlk": { + "attributes": { + "annotation": "", + "childAction": "", + "descr": "", + "dn": "uni/infra/accportprof-L101/hports-ETH1-30-1-typ-range/subportblk-block2", + "extMngdBy": "", + "fromCard": "1", + "fromPort": "30", + "fromSubPort": "1", + "lcOwn": "local", + "modTs": "2024-08-02T00:52:09.425-07:00", + "monPolDn": "uni/fabric/monfab-default", + "name": "block2", + "nameAlias": "", + "status": "", + "toCard": "1", + "toPort": "30", + "toSubPort": "1", + "uid": "15374", + "userdom": ":all:" + } + } + } +] diff --git a/tests/overlapping_vlan_pools_check/fvAEPg.json b/tests/overlapping_vlan_pools_check/fvAEPg.json new file mode 100644 index 0000000..4a9097b --- /dev/null +++ b/tests/overlapping_vlan_pools_check/fvAEPg.json @@ -0,0 +1,1614 @@ +[ + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "esg-association-contract-present", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG3-1", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-07-26T13:34:50.839-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG3-1", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "17", + "pcTagAllocSrc": "esg", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470836", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-26T13:34:50.839-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM2]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM2", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069568160", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.951-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471062", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "useg", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "immediate", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:30.318-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/vmmp-VMware/dom-F2_DVS]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "triggerSt": "triggerable", + "txId": "11529215046068471010", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG2-1", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-07-26T13:00:53.897-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG2-1", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "49162", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470836", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-26T13:05:17.001-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069567388", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:53:11.603-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM3]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM3", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069566946", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "useg", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "immediate", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-17T13:15:08.207-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/vmmp-VMware/dom-F2_DVS]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "triggerSt": "triggerable", + "txId": "11529215046068471001", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG1-4", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:29.642-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG1-4", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "32775", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470836", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.003-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471045", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-mgmt/ap-AP1/epg-ContainerLab", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:25.792-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "ContainerLab", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16387", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "3047424", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "14987979559889011344", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.779-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-INB_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-INB_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "14987979559889011403", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG4-1", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-07-24T11:26:57.333-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG4-1", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "49161", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470867", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:31.079-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471030", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "useg", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "immediate", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-24T11:26:57.333-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/vmmp-VMware/dom-F2_DVS]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "triggerSt": "triggerable", + "txId": "11529215046068471020", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-common/ap-default/epg-SPAN", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:25.680-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "SPAN", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16386", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2588673", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "1729382256910271252", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:31.283-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-SPAN_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-SPAN_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "1729382256910271351", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG1-3", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:29.462-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG1-3", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16392", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470856", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:31.246-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471036", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG1-1", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-07-24T11:27:32.630-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG1-1", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16394", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470885", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:49:33.133-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM3]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM3", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069566824", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-25T11:35:22.131-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM2]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM2", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069529236", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "useg", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "immediate", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-24T11:26:58.807-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/vmmp-VMware/dom-F2_DVS]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "triggerSt": "triggerable", + "txId": "11529215046068471015", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:31.269-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471038", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG1-2", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:25.890-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG1-2", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "49157", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470877", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-26T12:52:00.991-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM3]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM3", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046069566894", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "useg", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "immediate", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-07-17T11:59:11.798-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/vmmp-VMware/dom-F2_DVS]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "vmmDomP", + "tDn": "uni/vmmp-VMware/dom-F2_DVS", + "tType": "mo", + "triggerSt": "triggerable", + "txId": "11529215046069242524", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + }, + { + "fvRsDomAtt": { + "attributes": { + "annotation": "", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-27T22:00:07.148-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "immediate", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068544300", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG2-2", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:29.283-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG2-2", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16391", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470892", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.929-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471059", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG2-3", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:25.930-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG2-3", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "16390", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470906", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.560-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471055", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + }, + { + "fvAEPg": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "configIssues": "", + "configSt": "applied", + "descr": "", + "dn": "uni/tn-TK/ap-AP1/epg-EPG2-4", + "exceptionTag": "", + "extMngdBy": "", + "floodOnEncap": "disabled", + "fwdCtrl": "", + "hasMcastSource": "no", + "isAttrBasedEPg": "no", + "isSharedSrvMsiteEPg": "no", + "lcOwn": "local", + "matchT": "AtleastOne", + "modTs": "2024-06-25T21:44:26.110-07:00", + "monPolDn": "uni/tn-common/monepg-default", + "name": "EPG2-4", + "nameAlias": "", + "pcEnfPref": "unenforced", + "pcTag": "32774", + "pcTagAllocSrc": "idmanager", + "prefGrMemb": "exclude", + "prio": "unspecified", + "scope": "2490368", + "shutdown": "no", + "status": "", + "triggerSt": "triggerable", + "txId": "11529215046068470899", + "uid": "15374", + "userdom": ":all:" + }, + "children": [ + { + "fvRsDomAtt": { + "attributes": { + "annotation": "orchestrator:terraform", + "apiMode": "mgmt", + "bindingType": "none", + "childAction": "", + "classPref": "encap", + "configIssues": "", + "customEpgName": "", + "delimiter": "", + "encap": "unknown", + "encapMode": "auto", + "epgCos": "Cos0", + "epgCosPref": "disabled", + "extMngdBy": "", + "forceResolve": "yes", + "instrImedcy": "lazy", + "ipamDhcpOverride": "0.0.0.0", + "ipamEnabled": "no", + "ipamGateway": "0.0.0.0", + "lagPolicyName": "", + "lcOwn": "local", + "modTs": "2024-06-25T21:44:32.395-07:00", + "mode": "default", + "monPolDn": "uni/tn-common/monepg-default", + "netflowDir": "both", + "netflowPref": "disabled", + "numPorts": "0", + "portAllocation": "none", + "primaryEncap": "unknown", + "primaryEncapInner": "unknown", + "rType": "mo", + "resImedcy": "lazy", + "rn": "rsdomAtt-[uni/phys-TK_PHYDOM]", + "secondaryEncapInner": "unknown", + "state": "formed", + "stateQual": "none", + "status": "", + "switchingMode": "native", + "tCl": "physDomP", + "tDn": "uni/phys-TK_PHYDOM", + "tType": "mo", + "triggerSt": "not_triggerable", + "txId": "11529215046068471051", + "uid": "15374", + "untagged": "no", + "userdom": ":all:", + "vnetOnly": "no" + } + } + } + ] + } + } +] diff --git a/tests/overlapping_vlan_pools_check/fvIfConn.json b/tests/overlapping_vlan_pools_check/fvIfConn.json new file mode 100644 index 0000000..60f4150 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/fvIfConn.json @@ -0,0 +1,3674 @@ +[ + { + "fvIfConn": { + "attributes": { + "addr": "10.23.239.62/23", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-1/conndef/conn-[unknown]-[10.23.239.62/23]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "10.23.238.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:33:20.240-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.102/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-102/conndef/conn-[unknown]-[9.2.2.102/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.281-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.104/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-104/conndef/conn-[unknown]-[9.2.2.104/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.362-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.112/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-1002/conndef/conn-[unknown]-[9.2.2.112/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.394-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.101/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-101/conndef/conn-[unknown]-[9.2.2.101/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.394-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.111/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-1001/conndef/conn-[unknown]-[9.2.2.111/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.394-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "9.2.2.103/8", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/oob-[uni/tn-mgmt/mgmtp-default/oob-default]/node-103/conndef/conn-[unknown]-[9.2.2.103/8]", + "encap": "unknown", + "extEncap": "unknown", + "gw": "9.0.0.1", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:51.394-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.52.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.1.158.32", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-EIGRP/instP-EPG1]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2052]-[20.52.0.4/24]", + "encap": "vlan-2052", + "extEncap": "vxlan-14909413", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.267-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.52.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.1.158.32", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-EIGRP/instP-EPG1]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2052]-[20.52.0.3/24]", + "encap": "vlan-2052", + "extEncap": "vxlan-14909413", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.834-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/24]/conndef/conn-[vlan-2021]-[0.0.0.0]", + "encap": "vlan-2021", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:40.572-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-2]/node-102/stpathatt-[eth1/2]/conndef/conn-[vlan-2012]-[0.0.0.0]", + "encap": "vlan-2012", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:40.791-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-2]/node-102/stpathatt-[eth1/3]/conndef/conn-[vlan-2012]-[0.0.0.0]", + "encap": "vlan-2012", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:41.473-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/23]/conndef/conn-[vlan-2021]-[0.0.0.0]", + "encap": "vlan-2021", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:45.373-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/1]/conndef/conn-[vlan-2021]-[0.0.0.0]", + "encap": "vlan-2021", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:46.030-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/3]/conndef/conn-[vlan-2021]-[0.0.0.0]", + "encap": "vlan-2021", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:46.473-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/2]/conndef/conn-[vlan-2021]-[0.0.0.0]", + "encap": "vlan-2021", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:46.488-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "useg", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/dyatt-[topology/pod-1/paths-101/pathep-[eth1/24]]/conndef/conn-[vlan-2288]-[0.0.0.0]", + "encap": "vlan-2288", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-17T13:15:08.290-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-2]/node-102/stpathatt-[eth1/1]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-25T14:40:57.306-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-1]/node-101/stpathatt-[eth1/11]/conndef/conn-[vlan-2019]-[0.0.0.0]", + "encap": "vlan-2019", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-26T13:04:36.427-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.200.0.5/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-infra/out-IPN/instP-IPN]/node-1002/stpathatt-[eth1/2]/conndef/conn-[vlan-4]-[20.200.0.5/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.973-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.100.0.5/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-infra/out-IPN/instP-IPN]/node-1001/stpathatt-[eth1/2]/conndef/conn-[vlan-4]-[20.100.0.5/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.973-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.200.0.1/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-infra/out-IPN/instP-IPN]/node-1002/stpathatt-[eth1/1]/conndef/conn-[vlan-4]-[20.200.0.1/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.999-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.100.0.1/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-infra/out-IPN/instP-IPN]/node-1001/stpathatt-[eth1/1]/conndef/conn-[vlan-4]-[20.100.0.1/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.999-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/24]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:35.486-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/3]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.157-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/1]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.740-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/2]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:38.725-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/23]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:39.904-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "useg", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/dyatt-[topology/pod-1/paths-101/pathep-[eth1/24]]/conndef/conn-[vlan-2285]-[0.0.0.0]", + "encap": "vlan-2285", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-24T11:26:58.881-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[eth1/12]/conndef/conn-[vlan-2019]-[0.0.0.0]", + "encap": "vlan-2019", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-26T13:05:50.787-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/stpathatt-[PC_101_1_15]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-02T17:52:04.869-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-104/attEntitypathatt-[N9K_AEP]/conndef/conn-[vlan-2018]-[0.0.0.0]", + "encap": "vlan-2018", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:56:03.126-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-101/attEntitypathatt-[N9K_AEP]/conndef/conn-[vlan-2018]-[0.0.0.0]", + "encap": "vlan-2018", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:56:03.126-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-103/attEntitypathatt-[N9K_AEP]/conndef/conn-[vlan-2018]-[0.0.0.0]", + "encap": "vlan-2018", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:56:03.126-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-1]/node-102/attEntitypathatt-[N9K_AEP]/conndef/conn-[vlan-2018]-[0.0.0.0]", + "encap": "vlan-2018", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:56:03.126-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.200.0.1/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-infra/out-IPN]/node-1002/stpathatt-[eth1/1]/conndef/conn-[vlan-4]-[20.200.0.1/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.981-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.100.0.5/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-infra/out-IPN]/node-1001/stpathatt-[eth1/2]/conndef/conn-[vlan-4]-[20.100.0.5/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.953-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.200.0.5/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-infra/out-IPN]/node-1002/stpathatt-[eth1/2]/conndef/conn-[vlan-4]-[20.200.0.5/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.953-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.100.0.1/30", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-infra/out-IPN]/node-1001/stpathatt-[eth1/1]/conndef/conn-[vlan-4]-[20.100.0.1/30]", + "encap": "vlan-4", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.981-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-4]/node-104/stpathatt-[eth1/2]/conndef/conn-[vlan-2024]-[0.0.0.0]", + "encap": "vlan-2024", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.141-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-4]/node-104/stpathatt-[eth1/3]/conndef/conn-[vlan-2024]-[0.0.0.0]", + "encap": "vlan-2024", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:40.804-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-4]/node-104/stpathatt-[eth1/1]/conndef/conn-[vlan-2024]-[0.0.0.0]", + "encap": "vlan-2024", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:46.913-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-OSPF]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2053]-[20.53.0.4/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.775-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-OSPF]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2053]-[20.53.0.3/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.775-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.51.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.180.176", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-BGP]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2051]-[20.51.0.3/24]", + "encap": "vlan-2051", + "extEncap": "vxlan-15499164", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.801-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.52.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.1.158.32", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-EIGRP]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2052]-[20.52.0.4/24]", + "encap": "vlan-2052", + "extEncap": "vxlan-14909413", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.801-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.52.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.1.158.32", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-EIGRP]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2052]-[20.52.0.3/24]", + "encap": "vlan-2052", + "extEncap": "vxlan-14909413", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.801-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.51.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.180.176", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-BGP]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2051]-[20.51.0.4/24]", + "encap": "vlan-2051", + "extEncap": "vxlan-15499164", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.801-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.1/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-OSPF]/node-101/stpathatt-[PC_101_1_15]/conndef/conn-[vlan-2053]-[20.53.0.1/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T16:33:16.365-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.1.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-TK/out-OSPF]/node-103/stpathatt-[eth1/12]/conndef/conn-[vlan-2053]-[20.53.1.3/24]", + "encap": "vlan-2053", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:44:31.434-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-103/stpathatt-[eth1/1]/conndef/conn-[vlan-2033]-[0.0.0.0]", + "encap": "vlan-2033", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.157-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-102/stpathatt-[eth1/2]/conndef/conn-[vlan-2032]-[0.0.0.0]", + "encap": "vlan-2032", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.511-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-3]/node-103/stpathatt-[eth1/2]/conndef/conn-[vlan-2013]-[0.0.0.0]", + "encap": "vlan-2013", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.715-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-104/stpathatt-[eth1/2]/conndef/conn-[vlan-2034]-[0.0.0.0]", + "encap": "vlan-2034", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:37.319-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-103/stpathatt-[eth1/3]/conndef/conn-[vlan-2033]-[0.0.0.0]", + "encap": "vlan-2033", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:37.541-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-2]/node-102/stpathatt-[eth1/2]/conndef/conn-[vlan-2022]-[0.0.0.0]", + "encap": "vlan-2022", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:37.559-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-3]/node-103/stpathatt-[eth1/3]/conndef/conn-[vlan-2013]-[0.0.0.0]", + "encap": "vlan-2013", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:38.337-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-101/stpathatt-[eth1/3]/conndef/conn-[vlan-2031]-[0.0.0.0]", + "encap": "vlan-2031", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:39.722-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-2]/node-102/stpathatt-[eth1/3]/conndef/conn-[vlan-2022]-[0.0.0.0]", + "encap": "vlan-2022", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:40.315-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-102/stpathatt-[eth1/3]/conndef/conn-[vlan-2032]-[0.0.0.0]", + "encap": "vlan-2032", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:42.108-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-104/stpathatt-[eth1/1]/conndef/conn-[vlan-2034]-[0.0.0.0]", + "encap": "vlan-2034", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:42.980-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-102/stpathatt-[eth1/1]/conndef/conn-[vlan-2032]-[0.0.0.0]", + "encap": "vlan-2032", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:43.433-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-2]/node-102/stpathatt-[eth1/1]/conndef/conn-[vlan-2022]-[0.0.0.0]", + "encap": "vlan-2022", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:43.671-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-103/stpathatt-[eth1/2]/conndef/conn-[vlan-2033]-[0.0.0.0]", + "encap": "vlan-2033", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:44.711-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-3]/node-103/stpathatt-[eth1/1]/conndef/conn-[vlan-2013]-[0.0.0.0]", + "encap": "vlan-2013", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:44.925-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-101/stpathatt-[eth1/1]/conndef/conn-[vlan-2031]-[0.0.0.0]", + "encap": "vlan-2031", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:45.788-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-104/stpathatt-[eth1/3]/conndef/conn-[vlan-2034]-[0.0.0.0]", + "encap": "vlan-2034", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:46.014-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-101/stpathatt-[eth1/2]/conndef/conn-[vlan-2019]-[0.0.0.0]", + "encap": "vlan-2019", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-26T13:35:14.070-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2031]-[0.0.0.0]", + "encap": "vlan-2031", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-02T17:23:54.624-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG3-1]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2031]-[0.0.0.0]", + "encap": "vlan-2031", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-02T17:23:54.624-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.20.20.1/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-mgmt/out-INB_OSPF/instP-ND]/node-101/stpathatt-[eth1/13]/conndef/conn-[vlan-20]-[20.20.20.1/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.957-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-common/ap-default/epg-SPAN]/node-101/stpathatt-[eth1/23]/conndef/conn-[vlan-800]-[0.0.0.0]", + "encap": "vlan-800", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:43.201-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-common/ap-default/epg-SPAN]/node-101/stpathatt-[eth1/11]/conndef/conn-[vlan-800]-[0.0.0.0]", + "encap": "vlan-800", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T12:20:02.217-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-4]/node-104/stpathatt-[eth1/3]/conndef/conn-[vlan-2014]-[0.0.0.0]", + "encap": "vlan-2014", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:36.740-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-101/stpathatt-[eth1/1]/conndef/conn-[vlan-2041]-[0.0.0.0]", + "encap": "vlan-2041", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:37.102-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-4]/node-104/stpathatt-[eth1/2]/conndef/conn-[vlan-2014]-[0.0.0.0]", + "encap": "vlan-2014", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:37.559-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-3]/node-103/stpathatt-[eth1/3]/conndef/conn-[vlan-2023]-[0.0.0.0]", + "encap": "vlan-2023", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:38.141-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-103/stpathatt-[eth1/2]/conndef/conn-[vlan-2043]-[0.0.0.0]", + "encap": "vlan-2043", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:38.541-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-102/stpathatt-[eth1/3]/conndef/conn-[vlan-2042]-[0.0.0.0]", + "encap": "vlan-2042", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:39.272-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-101/stpathatt-[eth1/3]/conndef/conn-[vlan-2041]-[0.0.0.0]", + "encap": "vlan-2041", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:40.119-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-103/stpathatt-[eth1/3]/conndef/conn-[vlan-2043]-[0.0.0.0]", + "encap": "vlan-2043", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:41.247-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-102/stpathatt-[eth1/1]/conndef/conn-[vlan-2042]-[0.0.0.0]", + "encap": "vlan-2042", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:41.262-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-103/stpathatt-[eth1/1]/conndef/conn-[vlan-2043]-[0.0.0.0]", + "encap": "vlan-2043", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:41.655-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-3]/node-103/stpathatt-[eth1/2]/conndef/conn-[vlan-2023]-[0.0.0.0]", + "encap": "vlan-2023", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:42.533-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-102/stpathatt-[eth1/2]/conndef/conn-[vlan-2042]-[0.0.0.0]", + "encap": "vlan-2042", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:42.555-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-104/stpathatt-[eth1/1]/conndef/conn-[vlan-2044]-[0.0.0.0]", + "encap": "vlan-2044", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:44.465-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG1-4]/node-104/stpathatt-[eth1/1]/conndef/conn-[vlan-2014]-[0.0.0.0]", + "encap": "vlan-2014", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:44.696-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-104/stpathatt-[eth1/3]/conndef/conn-[vlan-2044]-[0.0.0.0]", + "encap": "vlan-2044", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:45.392-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-101/stpathatt-[eth1/2]/conndef/conn-[vlan-2041]-[0.0.0.0]", + "encap": "vlan-2041", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:47.155-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG4-1]/node-104/stpathatt-[eth1/2]/conndef/conn-[vlan-2044]-[0.0.0.0]", + "encap": "vlan-2044", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:47.407-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-TK/ap-AP1/epg-EPG2-3]/node-103/stpathatt-[eth1/1]/conndef/conn-[vlan-2011]-[0.0.0.0]", + "encap": "vlan-2011", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-07-25T14:47:41.059-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.20.20.1/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "resPolCont/rtdOutCont/rtdOutDef-[uni/tn-mgmt/out-INB_OSPF]/node-101/stpathatt-[eth1/13]/conndef/conn-[vlan-20]-[20.20.20.1/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:12.940-07:00", + "mode": "regular", + "monPolDn": "", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.51.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.180.176", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-BGP/instP-EPG1]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2051]-[20.51.0.4/24]", + "encap": "vlan-2051", + "extEncap": "vxlan-15499164", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:22.200-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.51.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.180.176", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-BGP/instP-EPG1]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2051]-[20.51.0.3/24]", + "encap": "vlan-2051", + "extEncap": "vxlan-15499164", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.834-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.4/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-OSPF/instP-EPG1]/node-104/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2053]-[20.53.0.4/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:21.771-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-OSPF/instP-EPG1]/node-103/stpathatt-[N9K_VPC_3-4_13]/conndef/conn-[vlan-2053]-[20.53.0.3/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:23.793-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "9000", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.0.1/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "225.0.4.224", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-OSPF/instP-EPG1]/node-101/stpathatt-[PC_101_1_15]/conndef/conn-[vlan-2053]-[20.53.0.1/24]", + "encap": "vlan-2053", + "extEncap": "vxlan-15171524", + "gw": "0.0.0.0", + "ifInstT": "ext-svi", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T16:33:16.395-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "20.53.1.3/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/rtd-[uni/tn-TK/out-OSPF/instP-EPG1]/node-103/stpathatt-[eth1/12]/conndef/conn-[vlan-2053]-[20.53.1.3/24]", + "encap": "vlan-2053", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "sub-interface", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "::", + "mac": "00:22:BD:F8:19:FF", + "mcastAddr": "0.0.0.0", + "modTs": "2024-08-07T21:44:31.463-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-mgmt/ap-AP1/epg-ContainerLab]/node-101/stpathatt-[eth1/23]/conndef/conn-[vlan-21]-[0.0.0.0]", + "encap": "vlan-21", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:35.099-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-mgmt/ap-AP1/epg-ContainerLab]/node-101/stpathatt-[eth1/22]/conndef/conn-[vlan-21]-[0.0.0.0]", + "encap": "vlan-21", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:42.342-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "0.0.0.0", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/fv-[uni/tn-mgmt/ap-AP1/epg-ContainerLab]/node-101/stpathatt-[eth1/24]/conndef/conn-[vlan-21]-[0.0.0.0]", + "encap": "vlan-21", + "extEncap": "unknown", + "gw": "0.0.0.0", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:44:44.121-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.101/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-101/conndef/conn-[vlan-20]-[2.0.0.101/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:52.284-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.102/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-102/conndef/conn-[vlan-20]-[2.0.0.102/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:52.305-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.111/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-1001/conndef/conn-[vlan-20]-[2.0.0.111/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:52.305-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.1/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-1/conndef/conn-[vlan-20]-[2.0.0.1/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:53.486-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.103/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-103/conndef/conn-[vlan-20]-[2.0.0.103/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:53.534-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.112/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-1002/conndef/conn-[vlan-20]-[2.0.0.112/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:54.828-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + }, + { + "fvIfConn": { + "attributes": { + "addr": "2.0.0.104/24", + "auto": "no", + "autostate": "disabled", + "bcastP": "0.0.0.0", + "childAction": "", + "classPref": "encap", + "configurationMode": "static", + "descr": "", + "dn": "uni/epp/inb-[uni/tn-mgmt/mgmtp-default/inb-default]/node-104/conndef/conn-[vlan-20]-[2.0.0.104/24]", + "encap": "vlan-20", + "extEncap": "unknown", + "gw": "2.0.0.254", + "ifInstT": "l3-port", + "ipv6Dad": "enabled", + "isMultiPodDirect": "no", + "lcOwn": "local", + "llAddr": "0.0.0.0", + "mac": "00:00:00:00:00:00", + "mcastAddr": "0.0.0.0", + "modTs": "2024-06-25T21:40:54.932-07:00", + "mode": "regular", + "monPolDn": "uni/tn-common/monepg-default", + "mtu": "inherit", + "name": "", + "nameAlias": "", + "resImedcy": "lazy", + "status": "", + "validState": "not-validated" + } + } + } +] diff --git a/tests/overlapping_vlan_pools_check/infraSetPol_no.json b/tests/overlapping_vlan_pools_check/infraSetPol_no.json new file mode 100644 index 0000000..6118e4a --- /dev/null +++ b/tests/overlapping_vlan_pools_check/infraSetPol_no.json @@ -0,0 +1,38 @@ +[ + { + "infraSetPol": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dampFactor": "1", + "descr": "", + "disableEpDampening": "no", + "dn": "uni/infra/settings", + "domainValidation": "yes", + "enableMoStreaming": "yes", + "enableRemoteLeafDirect": "yes", + "enforceSubnetCheck": "yes", + "extMngdBy": "", + "lcOwn": "local", + "leafOpflexpAuthenticateClients": "yes", + "leafOpflexpUseSsl": "yes", + "modTs": "2024-07-25T11:35:12.291-07:00", + "name": "default", + "nameAlias": "", + "opflexpAuthenticateClients": "no", + "opflexpSslProtocols": "TLSv1.1,TLSv1.2", + "opflexpUseSsl": "yes", + "ownerKey": "", + "ownerTag": "", + "policySyncNodeBringup": "yes", + "reallocateGipo": "no", + "restrictInfraVLANTraffic": "no", + "status": "", + "uid": "0", + "unicastXrEpLearnDisable": "no", + "userdom": ":", + "validateOverlappingVlans": "no" + } + } + } +] diff --git a/tests/overlapping_vlan_pools_check/infraSetPol_yes.json b/tests/overlapping_vlan_pools_check/infraSetPol_yes.json new file mode 100644 index 0000000..a1347a2 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/infraSetPol_yes.json @@ -0,0 +1,38 @@ +[ + { + "infraSetPol": { + "attributes": { + "annotation": "orchestrator:terraform", + "childAction": "", + "dampFactor": "1", + "descr": "", + "disableEpDampening": "no", + "dn": "uni/infra/settings", + "domainValidation": "yes", + "enableMoStreaming": "yes", + "enableRemoteLeafDirect": "yes", + "enforceSubnetCheck": "yes", + "extMngdBy": "", + "lcOwn": "local", + "leafOpflexpAuthenticateClients": "yes", + "leafOpflexpUseSsl": "yes", + "modTs": "2024-07-25T11:35:12.291-07:00", + "name": "default", + "nameAlias": "", + "opflexpAuthenticateClients": "no", + "opflexpSslProtocols": "TLSv1.1,TLSv1.2", + "opflexpUseSsl": "yes", + "ownerKey": "", + "ownerTag": "", + "policySyncNodeBringup": "yes", + "reallocateGipo": "no", + "restrictInfraVLANTraffic": "no", + "status": "", + "uid": "0", + "unicastXrEpLearnDisable": "no", + "userdom": ":", + "validateOverlappingVlans": "yes" + } + } + } +] diff --git a/tests/overlapping_vlan_pools_check/templates/access_policy.j2 b/tests/overlapping_vlan_pools_check/templates/access_policy.j2 new file mode 100644 index 0000000..9bfc983 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/templates/access_policy.j2 @@ -0,0 +1,231 @@ +{% import 'macros.j2' as m %} +[ +{% for node in nodes %} + { + "infraNodeP": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}", "name": "{{ node.name }}" } + } + }, + { + "infraRsAccPortP": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/rsaccPortP-[uni/infra/accportprof-{{ node.ifp_name }}]", + "tCl": "infraAccPortP", + "tDn": "uni/infra/accportprof-{{ node.ifp_name }}" + } + } + }, + { + "infraLeafS": { + "attributes": { "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range", "name": "{{ node.name }}", "type": "range" } + } + }, + { + "infraNodeBlk": { + "attributes": { + "dn": "uni/infra/nprof-{{ node.name }}/leaves-{{ node.name }}-typ-range/nodeblk-{{ node.from }}", + "from_": "{{ node.from }}", + "name": "{{ node.from }}", + "to_": "{{ node.to }}" + } + } + }, + { + "infraAccPortP": { + "attributes": { "dn": "uni/infra/accportprof-{{ node.ifp_name }}", "name": "{{ node.ifp_name }}", "nodeId": "0" } + } + }, +{% endfor %} +{% for port in ports %} + { + "infraHPortS": { + "attributes": { + "descr": "", + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range", + "name": "{{ m.port_name(port.card, port.port, port.subport) }}", + "type": "range" + } + } + }, + { + "{{ 'infraSubPortBlk' if port.subport else 'infraPortBlk' }}": { + "attributes": { + "descr": "", + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range/portblk-{{ m.port_name(port.card, port.port, port.subport) }}", + "fromCard": "{{ port.card }}", + "fromPort": "{{ port.port }}", + {% if port.subport -%} + "fromSubPort": "{{ port.subport }}", + "toSubPort": "{{ port.subport }}", + {%- endif %} + "name": "{{ m.port_name(port.card, port.port, port.subport) }}", + "toCard": "{{ port.card }}", + "toPort": "{{ port.port }}" + } + } + }, + { + "infraRsAccBaseGrp": { + "attributes": { + "dn": "{{ m.ifp_dn(port.ifp, port.fexp) }}/hports-{{ m.port_name(port.card, port.port, port.subport) }}-typ-range/rsaccBaseGrp", + "fexId": "{{ port.fex|default(101) }}", + "tCl": "{{ port.ifpg_class }}", + "tDn": "{{ m.ifpg_dn(port.ifpg_name, port.ifpg_class) }}" + } + } + }, +{% endfor %} +{% for override in override_ports %} + { + "infraHPathS": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}", + "name": "{{ override.node}}_{{ override.path }}" + } + } + }, + { + "infraRsHPathAtt": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}/rsHPathAtt-[{{ m.pathep_dn(1, override.node, override.path) }}]", + "tCl": "fabricPathEp", + "tDn": "{{ m.pathep_dn(1, override.node, override.path) }}" + } + } + }, + { + "infraRsPathToAccBaseGrp": { + "attributes": { + "dn": "uni/infra/hpaths-{{ override.node}}_{{ override.path }}/rspathToAccBaseGrp", + "tCl": "{{ override.ifpg_class }}", + "tDn": "{{ m.ifpg_dn(override.ifpg_name, override.ifpg_class) }}" + } + } + }, +{% endfor %} +{% for ifpg in ifpgs %} + { + "{{ ifpg.class }}": { + "attributes": { + {% if ifpg.class in ["infraAccBndlGrp", "infraFexBndlGrp"] -%} + "lagT": "{{ ifpg.lagT }}", + {%- endif %} + "dn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}", + "name": "{{ ifpg.name }}" + } + } + }, + {% if ifpg.class == "infraFexBndlGrp" %} + { + "infraFexP": { + "attributes": { + "dn": "uni/infra/fexprof-{{ ifpg.name }}", + "fexId": "unspecified", + "name": "{{ ifpg.name }}", + "nodeId": "0" + } + } + }, + {% else %} + { + "infraRsAttEntP": { + "attributes": { + "dn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}/rsattEntP", + "tCl": "infraAttEntityP", + "tDn": "uni/infra/attentp-{{ ifpg.aep }}" + } + } + }, + { + "l2RtL2IfPol": { + "attributes": { + "dn": "uni/infra/l2IfP-{{ ifpg.l2if }}/rtinfraL2IfPol-[{{ m.ifpg_dn(ifpg.name, ifpg.class) }}]", + "tCl": "{{ ifpg.class }}", + "tDn": "{{ m.ifpg_dn(ifpg.name, ifpg.class) }}" + } + } + }, + {% endif %} +{% endfor %} +{% for aep in aeps %} + { + "infraAttEntityP": { + "attributes": { "dn": "uni/infra/attentp-{{ aep }}", "name": "{{ aep }}" } + } + }, +{% endfor %} +{% for domain in domains %} + {% for aep in domain.aeps %} + { + "infraRsDomP": { + "attributes": { + "dn": "uni/infra/attentp-{{ aep }}/rsdomP-[{{ m.domain_dn(domain.name, domain.class) }}]", + "tCl": "{{ domain.class|default("physDomP") }}", + "tDn": "{{ m.domain_dn(domain.name, domain.class) }}" + } + } + }, + {% endfor %} +{% endfor %} +{% for vpool in vpools %} + { + "fvnsVlanInstP": { + "attributes": { + "allocMode": "{{ vpool.mode }}", + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}", + "name": "{{ vpool.name }}" + } + } + }, + {% for vlan in vpool.vlan_ranges %} + { + "fvnsEncapBlk": { + "attributes": { + "allocMode": "{{ vlan.mode|default("inherit") }}", + "descr": "", + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}/from-[vlan-{{ vlan.from }}]-to-[vlan-{{ vlan.to }}]", + "from": "vlan-{{ vlan.from }}", + "name": "", + "role": "external", + "to": "vlan-{{ vlan.to }}" + } + } + }, + {% endfor %} + {% for dom in vpool.domains %} + { + "fvnsRtVlanNs": { + "attributes": { + "dn": "uni/infra/vlanns-[{{ vpool.name }}]-{{ vpool.mode }}/rtinfraVlanNs-[{{ m.domain_dn(dom.name, dom.class) }}]", + "tCl": "{{ dom.class|default("physDomP") }}", + "tDn": "{{ m.domain_dn(dom.name, dom.class) }}" + } + } + }, + {% endfor %} +{% endfor %} + { + "l2IfPol": { + "attributes": { + "descr": "", + "dn": "uni/infra/l2IfP-default", + "name": "default", + "qinq": "disabled", + "vepa": "disabled", + "vlanScope": "global" + } + } + }, + { + "l2IfPol": { + "attributes": { + "descr": "", + "dn": "uni/infra/l2IfP-VLAN_SCOPE_LOCAL", + "name": "VLAN_SCOPE_LOCAL", + "qinq": "disabled", + "vepa": "disabled", + "vlanScope": "portlocal" + } + } + } +] diff --git a/tests/overlapping_vlan_pools_check/templates/fvAEPg.j2 b/tests/overlapping_vlan_pools_check/templates/fvAEPg.j2 new file mode 100644 index 0000000..4c847a3 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/templates/fvAEPg.j2 @@ -0,0 +1,27 @@ +{% import 'macros.j2' as m %} +[ +{% for epg in epgs %} + { + "fvAEPg": { + "attributes": { + "dn": "uni/tn-{{ epg.tenant }}/ap-{{ epg.ap }}/epg-{{ epg.epg }}", + "floodOnEncap": "disabled", + "name": "{{ epg.epg }}" + }, + "children": [ + {% for dom in epg.domains %} + { + "fvRsDomAtt": { + "attributes": { + "rn": "rsdomAtt-[{{ m.domain_dn(dom.name, dom.class) }}]", + "tCl": "{{ dom.class|default("physDomP") }}", + "tDn": "{{ m.domain_dn(dom.name, dom.class) }}" + } + } + }{% if not loop.last -%},{%- endif %} + {% endfor %} + ] + } + }{% if not loop.last -%},{%- endif %} +{% endfor %} +] diff --git a/tests/overlapping_vlan_pools_check/templates/fvIfConn.j2 b/tests/overlapping_vlan_pools_check/templates/fvIfConn.j2 new file mode 100644 index 0000000..cfe4d72 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/templates/fvIfConn.j2 @@ -0,0 +1,19 @@ +{% import 'macros.j2' as m %} +[ +{% for epg in epgs -%} + {% set epg_loop = loop -%} + {% for bind in epg.bindings -%} + {% set bind_loop = loop -%} + {% for node in bind.node.split("-") -%} + {% set node_loop = loop -%} + { + "fvIfConn": { + "attributes": { + "dn": "uni/epp/fv-[uni/tn-{{ epg.tenant }}/ap-{{ epg.ap }}/epg-{{ epg.epg }}]/node-{{ node }}/{{ m.ifconn_type(type=bind.type, node_id=node, pathname=bind.port, fex_id=bind.fex, aep=bind.aep) }}/conndef/conn-[vlan-{{ bind.vlan }}]-[0.0.0.0]" + } + } + }{% if not (epg_loop.last and bind_loop.last and node_loop.last) -%},{%- endif %} + {%- endfor %} + {%- endfor %} +{%- endfor %} +] diff --git a/tests/overlapping_vlan_pools_check/templates/macros.j2 b/tests/overlapping_vlan_pools_check/templates/macros.j2 new file mode 100644 index 0000000..330283b --- /dev/null +++ b/tests/overlapping_vlan_pools_check/templates/macros.j2 @@ -0,0 +1,62 @@ +{% macro ifp_dn(ifp="", fexp="") -%} + {% if ifp -%} + uni/infra/accportprof-{{ ifp }} + {%- else -%} + uni/infra/fexprof-{{ fexp }} + {%- endif %} +{%- endmacro %} + +{% macro ifpg_dn(name, class) -%} + {% if class == "infraAccPortGrp" -%} + uni/infra/funcprof/accportgrp-{{ name }} + {%- elif class == "infraAccBndlGrp" -%} + uni/infra/funcprof/accbundle-{{ name }} + {%- elif class == "infraAccBndlPolGrp" -%} + uni/infra/funcprof/accbundlepolgrp-{{ name }} + {%- elif class == "infraBrkoutPortGrp" -%} + uni/infra/funcprof/brkoutportgrp-{{ name }} + {%- elif class == "infraFexBndlGrp" -%} + uni/infra/fexprof-{{ name }}/fexbundle-{{ name }} + {%- endif %} +{%- endmacro %} + +{% macro port_name(card, port, subport) -%} + {% if subport -%} + ETH{{ card }}-{{ port }}-{{ subport }} + {%- else -%} + ETH{{ card }}-{{ port }} + {%- endif %} +{%- endmacro %} + +{% macro domain_dn(name, class) -%} + {% if class|default("physDomP") == "physDomP" -%} + uni/phys-{{ name }} + {%- elif class|default("physDomP") == "l3extDomP" -%} + uni/l3dom-{{ name }} + {%- elif class|default("physDomP") == "vmmDomP" -%} + uni/vmmp-VMware/dom-{{ name }} + {%- endif %} +{%- endmacro %} + +{% macro pathep_dn(pod, node, path) -%} + {% if node.split("-")|length > 1 %} + {% set n = node.split("-") %} + topology/pod-{{pod}}/protpaths-{{n[0]}}-{{n[1]}}/pathep-[{{path}}] + {%- else -%} + topology/pod-{{pod}}/paths-{{node}}/pathep-[{{path}}] + {%- endif %} +{%- endmacro %} + +{% macro ifconn_type(type, node_id="", pathname="", fex_id="", aep="") -%} + {% if type == "static" and not fex_id -%} + stpathatt-[{{pathname}}] + {%- elif type == "static" and fex_id -%} + extstpathatt-[{{pathname}}]-extchid-{{fex_id}} + {%- elif type == "dynamic" and not fex_id -%} + dyatt-[topology/pod-1/paths-{{node_id}}/pathep-[{{pathname}}]] + {%- elif type == "dynamic" and fex_id -%} + dyatt-[topology/pod-1/paths-{{node_id}}/extpaths-{{fex_id}}/pathep-[{{pathname}}]] + {%- elif type == "aep" -%} + attEntitypathatt-[{{aep}}] + {%- endif %} +{%- endmacro %} diff --git a/tests/overlapping_vlan_pools_check/test_overlapping_vlan_pools_check.py b/tests/overlapping_vlan_pools_check/test_overlapping_vlan_pools_check.py new file mode 100644 index 0000000..d548fc3 --- /dev/null +++ b/tests/overlapping_vlan_pools_check/test_overlapping_vlan_pools_check.py @@ -0,0 +1,1840 @@ +import os +import pytest +import logging +import importlib +import json +from jinja2 import Environment, FileSystemLoader +from helpers.utils import read_data + +script = importlib.import_module("aci-preupgrade-validation-script") + +log = logging.getLogger(__name__) +dir = os.path.dirname(os.path.abspath(__file__)) + +j2_env = Environment(loader=FileSystemLoader("/".join([dir, "templates"]))) +tmpl = { + "infra": j2_env.get_template("access_policy.j2"), + "epg": j2_env.get_template("fvAEPg.j2"), + "ifconn": j2_env.get_template("fvIfConn.j2"), +} + +base_params = { + "nodes": [ + {"name": "L101", "ifp_name": "L101", "from": "101", "to": "101"}, + {"name": "L102", "ifp_name": "L102", "from": "102", "to": "102"}, + {"name": "L103", "ifp_name": "L103", "from": "103", "to": "103"}, + {"name": "L104", "ifp_name": "L104", "from": "104", "to": "104"}, + {"name": "L101-102", "ifp_name": "L101-102", "from": "101", "to": "102"}, + {"name": "L103-104", "ifp_name": "L103-104", "from": "103", "to": "104"}, + ], + "ifpgs": [ + { + "class": "infraAccPortGrp", + "name": "IFPG1", + "aep": "AEP1", + "l2if": "default", + }, + { + "class": "infraAccPortGrp", + "name": "IFPG1_local", + "aep": "AEP1", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccPortGrp", + "name": "IFPG2", + "aep": "AEP2", + "l2if": "default", + }, + { + "class": "infraAccPortGrp", + "name": "IFPG2_local", + "aep": "AEP2", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_PC1", + "aep": "AEP1", + "lagT": "link", + "l2if": "default", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_PC1_local", + "aep": "AEP1", + "lagT": "link", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC1", + "aep": "AEP1", + "lagT": "node", + "l2if": "default", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC1_local", + "aep": "AEP1", + "lagT": "node", + "l2if": "VLAN_SCOPE_LOCAL", + }, + { + "class": "infraAccBndlGrp", + "name": "IFPG_VPC2", + "aep": "AEP2", + "lagT": "node", + "l2if": "default", + }, + { + "class": "infraBrkoutPortGrp", + "name": "system-breakout-25g-4x", + }, + { + "class": "infraFexBndlGrp", + "name": "FEX101", + "lagT": "link", + }, + ], + "aeps": ["AEP1", "AEP2"], +} +params = [ + { + "id": "one_port_multiple_pools", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/24", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "24", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_local", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/24", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "24", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1_local", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_fex", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "fex": "101", + "port": "eth1/24", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "10", + "ifpg_class": "infraFexBndlGrp", + "ifpg_name": "FEX101", + "fex": "101", + }, + { + "fexp": "FEX101", + "card": "1", + "port": "24", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_breakout", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/24/1", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "24", + "ifpg_class": "infraBrkoutPortGrp", + "ifpg_name": "system-breakout-25g-4x", + }, + { + "ifp": "L101", + "card": "1", + "port": "24", + "subport": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_pc", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "IFPG_PC1", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "24", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "25", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_vpc", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "24", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "one_port_multiple_pools_vpc_local", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1_local", + "vlan": "2011", + } + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "24", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1_local", + } + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each_one_local", + "result": script.PASS, + "num_bad_ports": 0, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each_both_local", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each_vpc", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each_vpc_one_local", + "result": script.PASS, + "num_bad_ports": 0, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_one_pool_for_each_vpc_both_local", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_one_local", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_both_local", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_pc", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "IFPG_PC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_pc_one_local", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "IFPG_PC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_pc_one_local2", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "IFPG_PC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1", "AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_pc_both_local", + "result": script.MANUAL, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101", + "port": "IFPG_PC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_PC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc_one_local", + "result": script.MANUAL, + "num_bad_ports": 1, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc_one_local2", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1"]}, + {"name": "PHYDOM2", "aeps": ["AEP1", "AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc_both_local", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1_local", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1_local", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2_local", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc_dy", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "VMMDOM1", "class": "vmmDomP"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "dynamic", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "VMMDOM1", "aeps": ["AEP1", "AEP2"], "class": "vmmDomP"}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "dynamic", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "VMMDOM1", "class": "vmmDomP"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "two_ports_multiple_pools_vpc_aep", + "result": script.FAIL_O, + "num_bad_ports": 2, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "aep", + "aep": "AEP1", + "node": "101-102", + "vlan": "2011", + }, + { + "type": "aep", + "aep": "AEP2", + "node": "101", + "vlan": "2011", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, + { + "id": "multiple_nodes_epgs", + "result": script.FAIL_O, + "num_bad_ports": 8, + "epgs": [ + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG1", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2011", + }, + { + "type": "static", + "node": "101", + "port": "eth1/2", + "vlan": "2011", + }, + { + "type": "static", + "node": "102", + "port": "eth1/2", + "vlan": "2011", + }, + { + "type": "static", + "node": "103", + "port": "eth1/1", + "vlan": "2011", + }, + { + "type": "static", + "node": "103", + "port": "eth1/2", + "vlan": "2011", + }, + ], + }, + { + "tenant": "TN1", + "ap": "AP1", + "epg": "EPG2", + "domains": [{"name": "PHYDOM1"}, {"name": "PHYDOM2"}], + "bindings": [ + { + "type": "static", + "node": "101-102", + "port": "IFPG_VPC1", + "vlan": "2012", + }, + { + "type": "static", + "node": "102", + "port": "eth1/2", + "vlan": "2012", + }, + { + "type": "static", + "node": "103", + "port": "eth1/1", + "vlan": "2012", + }, + { + "type": "static", + "node": "103", + "port": "eth1/2", + "vlan": "2012", + }, + { + "type": "static", + "node": "103-104", + "port": "IFPG_VPC2", + "vlan": "2012", + }, + ], + } + ], + "ports": [ + { + "ifp": "L101-102", + "card": "1", + "port": "1", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC1", + }, + { + "ifp": "L101", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "ifp": "L102", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L103", + "card": "1", + "port": "1", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG1", + }, + { + "ifp": "L103", + "card": "1", + "port": "2", + "ifpg_class": "infraAccPortGrp", + "ifpg_name": "IFPG2", + }, + { + "ifp": "L103-104", + "card": "1", + "port": "3", + "ifpg_class": "infraAccBndlGrp", + "ifpg_name": "IFPG_VPC2", + }, + ], + "domains": [ + {"name": "PHYDOM1", "aeps": ["AEP1", "AEP2"]}, + {"name": "PHYDOM2", "aeps": ["AEP2"]}, + ], + "vpools": [ + { + "name": "VLANPool1", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2050"}], + "domains": [{"name": "PHYDOM1"}], + }, + { + "name": "VLANPool2", + "mode": "static", + "vlan_ranges": [{"from": "2000", "to": "2020"}], + "domains": [{"name": "PHYDOM2"}], + }, + ], + }, +] + + +def input(param): + param.update(base_params) + data = {} + for key in tmpl: + data_str = tmpl[key].render(param) + data[key] = json.loads(data_str) + return ( + { + infraSetPol: read_data(dir, "infraSetPol_no.json"), + infra: data["infra"], + epgs: data["epg"], + ifconns: data["ifconn"], + }, + param["result"], + param["num_bad_ports"], + ) + + +# icurl queries +infraSetPol = "uni/infra/settings.json" +infra = "infraInfra.json" +infra += "?query-target=subtree&target-subtree-class=" +infra += ",".join(script.AciAccessPolicyParser.get_classes()) +ifconns = "fvIfConn.json" +epgs = "fvAEPg.json" +epgs += ( + "?rsp-subtree-include=required&rsp-subtree=children&rsp-subtree-class=fvRsDomAtt" +) + + +@pytest.mark.parametrize( + "icurl_outputs, expected_result, expected_num_bad_ports", + [ + # Validation yes + ( + { + infraSetPol: read_data(dir, "infraSetPol_yes.json"), + infra: read_data(dir, "access_policy.json"), + ifconns: read_data(dir, "fvIfConn.json"), + epgs: read_data(dir, "fvAEPg.json"), + }, + script.PASS, + 0, + ), + # Validation no + ( + { + infraSetPol: read_data(dir, "infraSetPol_no.json"), + infra: read_data(dir, "access_policy.json"), + ifconns: read_data(dir, "fvIfConn.json"), + epgs: read_data(dir, "fvAEPg.json"), + }, + script.MANUAL, + 6, + ), + ] + + [input(param) for param in params], + ids=["validation_yes", "validation_no"] + [param["id"] for param in params], +) +def test_logic(capsys, mock_icurl, expected_result, expected_num_bad_ports): + result = script.overlapping_vlan_pools_check(1, 1) + assert result == expected_result + + captured = capsys.readouterr() + log.debug(captured.out) + lines = [ + x + for x in captured.out.split("\n") + if x.endswith("Outage") or x.endswith("Flood Scope") + ] + assert len(lines) == expected_num_bad_ports diff --git a/tests/requirements-py27.txt b/tests/requirements-py27.txt index 3a181d3..67df4cb 100644 --- a/tests/requirements-py27.txt +++ b/tests/requirements-py27.txt @@ -4,6 +4,9 @@ pexpect == 2.4 # For testing pytest==4.6.11 +jinja2==2.11.3 +pyyaml==5.4.1 + # Depencencies atomicwrites==1.4.1 diff --git a/tests/requirements-py38.txt b/tests/requirements-py38.txt index 64cfeff..4ab0582 100644 --- a/tests/requirements-py38.txt +++ b/tests/requirements-py38.txt @@ -4,6 +4,8 @@ pexpect==4.8.0 # For testing pytest==7.4.0 +jinja2==3.1.4 +pyyaml==6.0.2 # Depencencies exceptiongroup==1.1.2 From 6ebccc33aaa7753e4b449c6ec209c088b5a7a4ee Mon Sep 17 00:00:00 2001 From: tkishida Date: Fri, 16 Aug 2024 23:30:32 -0700 Subject: [PATCH 2/6] doc: Add detailed explanations for overlapping VLAN pools --- docs/docs/validations.md | 245 ++++++++++++++++++++++++++++++++++++++- docs/mkdocs.yml | 6 +- 2 files changed, 248 insertions(+), 3 deletions(-) diff --git a/docs/docs/validations.md b/docs/docs/validations.md index b86c8e7..183fd0e 100644 --- a/docs/docs/validations.md +++ b/docs/docs/validations.md @@ -1362,11 +1362,252 @@ The script checks if all leaf switch nodes are in a vPC pair. The APIC built-in Overlapping VLAN blocks across different VLAN pools may result in some forwarding issues, such as: -* Packet loss due to issues in endpoint learning -* Spanning tree loop due to BPDU forwarding domains +* Packet loss due to issues in endpoint learning with vPC +* STP BPDUs, or any BUM traffic when using Flood-in-Encap, are not flooded to all ports within the same VLAN ID. **These issues may suddenly appear after upgrading your switches** because switches fetch the policies from scratch after an upgrade and may apply the same VLAN ID from a different pool than what was used prior to the upgrade. As a result, the VLAN ID is mapped to a different VXLAN VNID than other switch nodes. This causes the two problems mentioned above. + +!!! Tip "VLAN Pools and VXLAN VNID on switches" + In ACI, multiple VLANs and EPGs can be mapped to the same bridge domain, which serves as the Layer 2 domain. As a result, most Layer 2 forwarding, such as bridging or flooding a packet, uses the VXLAN VNID of the bridge domain. However, each VLAN within the bridge domain is also mapped to a unique VXLAN VNID, distict from that of the bridge domain. This is known as Forwarding Domain (FD) VNID or VLAN VNID, and it's used for special purposes such as: + + * Endpoint synchronization between vPC peer switches. + * Flooding STP BPDUs across switches. + * Flooding BUM (Broadcast, Unknown Unicast, Multicast) traffic across switches when `Flood-in-Encap` is configured on the bridge domain or EPG. + + To prevent the impact for these mechanism, VLAN VNID mapping must be consistent across switches as needed. + + +!!! Tip "How VLAN Pools are tied to the VLAN on switches" + Each switch port can be associated to multiple VLAN pools that may or may not have VLAN ID ranges overlapping with each other. + + ``` mermaid + graph LR + A[Port] --> B[Interface Policy Group] --> C[AEP]; + C[AEP] --> D(Phy Domain A):::dom --> E[VLAN Pool 1]; + C[AEP] --> F(Phy Domain B):::dom --> G[VLAN Pool 2]; + C[AEP] --> H(VMM Domain C):::dom --> G[VLAN Pool 2]; + classDef dom fill:#fff + ``` + + When configuring a switch port (node-101 eth1/1) with VLAN 10 as EPG A, two things are checked: + + 1. Whether node-101 eth1/1 is associated to VLAN 10 via `AEP -> Domain -> VLAN Pool` + 2. Whether EPG A is associated with the same domain + + If the port is associated with multiple domains/VLAN pools as shown above, and EPG A is associated only with `Phy Domain A`, then only `VLAN Pool 1` is available for the port in the context of EPG A, avoiding any overlapping VLAN pool issues. However, if VLAN 10 is not included in `VLAN Pool 1`, it cannot be deployed on the port via EPG A. The same principle applies when deploying a VLAN through AEP binding, as it serves as a shortcut to specify all ports within the AEP. + + This conecpt of domains is crucial in multi-domain tenancy to ensure the tenant/EPG has the appropriate set of ports and VLANs. + + However, if EPG A is associated with both `Phy Domain A` and `Phy Domain B`, the port can use either `VLAN Pool 1` or `VLAN Pool 2` to pull a VLAN. If VLAN 10 is configured in both pools, EPG A and its VLAN 10 are susceptible to an overlapping VLAN pool issue. + + +!!! example "Bad Example 1" + ``` mermaid + graph LR + port["`node-101 + eth1/1`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1 + VLAN 10`"] + + subgraph one [Access Policies] + port --> B[AEP]; + B[AEP] --> C(Domain A):::dom --> vpool1; + B[AEP] --> E(Domain B):::dom --> vpool2; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + In this scenario, VLAN 10 can be pulled from either `VLAN Pool 1` or `VLAN Pool2` because the port (`node-101 eth 1/1`) and the EPG are associated to both pools. And VLAN ID 10 is also configured on both pools. + + As a result, VNID mapping for VLAN 10 on node-101 may become inconsistent after an upgrade or when the switch initializes and downloads configurations from the APICs. + + This can be resolved by associating EPG A to only one of the domains, associating the AEP to only one of the domains, or associating the domains to the same VLAN Pool as shown below. + + **Resolution 1:** + ``` mermaid + graph LR + port["`node-101 + eth1/1`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1 + VLAN 10`"] + + subgraph one [Access Policies] + port --> B[AEP]; + B[AEP] --> C(Domain A):::dom --> vpool1; + B[AEP] --> E(Domain B):::dom --> vpool2; + end + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + + **Resolution 2:** + ``` mermaid + graph LR + port["`node-101 + eth1/1`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1 + VLAN 10`"] + + subgraph one [Access Policies] + port --> B[AEP]; + B[AEP] --> C(Domain A):::dom --> vpool1; + E(Domain B):::dom --> vpool2; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + + **Resolution 3:** + ``` mermaid + graph LR + port["`node-101 + eth1/1`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + X["`EPG A + node-101 eth1/1 + VLAN 10`"] + + subgraph one [Access Policies] + port --> B[AEP]; + B[AEP] --> C(Domain A):::dom --> vpool1; + B[AEP] --> E(Domain B):::dom --> vpool1; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + +!!! example "Bad Example 2" + ``` mermaid + graph LR + port1["`node-101 + eth1/1`"]; + port2["`node-101 + eth1/2`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1-2 + VLAN 10`"] + + subgraph one [Access Policies] + port1 --> aep2[AEP 2] --> C(Domain A):::dom --> vpool1; + port2 --> aep1[AEP 1] --> E(Domain B):::dom --> vpool2; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + In this scenario, VLAN 10 can be pulled from either `VLAN Pool 1` or `VLAN Pool2` from the EPG's perspective. However, each port is associated to only one VLAN pool respectively. + + This is a problem because both ports are on the same switch. Essentially, this VLAN Pool design attempts to map a different VNID for VLAN 10 on eth1/1 and eth1/2 on the same switch, which isn't allowed - there can be only one VLAN 10 per switch except for when using VLAN scope `local`. + + As a result, VNID mapping for VLAN 10 on node-101 may become inconsistent after an upgrade or when the switch initializes and downloads configurations from the APICs. + + This can be resolved by associating AEPs to the same domain or associating the domains to the same VLAN Pool as shown below. + + **Resolution 1** + ``` mermaid + graph LR + port1["`node-101 + eth1/1`"]; + port2["`node-101 + eth1/2`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1-2 + VLAN 10`"] + + subgraph one [Access Policies] + port1 --> aep2[AEP 2] --> C(Domain A):::dom --> vpool1; + port2 --> aep1[AEP 1] --> C(Domain A):::dom + E(Domain B):::dom --> vpool2; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + + **Resolution 2** + ``` mermaid + graph LR + port1["`node-101 + eth1/1`"]; + port2["`node-101 + eth1/2`"]; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + X["`EPG A + node-101 eth1/1-2 + VLAN 10`"] + + subgraph one [Access Policies] + port1 --> aep2[AEP 2] --> C(Domain A):::dom --> vpool1; + port2 --> aep1[AEP 1] --> E(Domain B):::dom --> vpool1; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + ``` + +!!! example "Example: good only for a specific use case" + ``` mermaid + graph LR + port1["`node-101 + eth1/1`"]; + port2["`node-102 + eth1/1`"]:::red; + vpool1["`VLAN Pool 1 + (VLAN 1-20)`"]; + vpool2["`VLAN Pool 2 + (VLAN 10-20)`"]; + X["`EPG A + node-101 eth1/1 + node-102 eth1/1 + VLAN 10`"] + + subgraph one [Access Policies] + port1 --> aep2[AEP 2] --> C(Domain A):::dom --> vpool1; + port2 --> aep1[AEP 1] --> E(Domain B):::dom --> vpool2; + end + X --> C(Domain A):::dom; + X --> E(Domain B):::dom; + classDef dom fill:#fff + classDef red stroke:#f00 + ``` + In this scenario, each port is tied to a different VLAN pool for VLAN 10, but each port is on a different node. This ensures that the VLAN VNID mapping remains consistent within each node even after an upgrade, with no ambiguity about which VLAN pool is used. However, VLAN 10 on each node will map to a different VLAN VNID, which may or may not be your intent. + + Without the Flood-in-Encap feature, VLAN VNIDs act as flooding domains for spanning tree BPDUs. Even if VLAN 10 on node 101 and 102 map to different VLAN VNIDs, regular traffic is forwarded without issues via bridge domain VNID or VRF VNID. + + This VLAN pool design is ideal for keeping the spanning tree domains small, such as in a multi-pod fabric with one STP domain per pod where each pod is physically separate with no L2 connecitivity between them except for the IPN. It helps contain spanning tree issues within a single pod. For instance, if Pod 1 continuously receives STP TCNs due to a malfuncationing device in the external network in Pod 1, the impact of flushing endpoints and causing connectivity issues due to TCNs is contained within that pod, keeping other pods unaffected. + + However, this design is not suitable if you prefer a simpler configuration, if the nodes belong to the same vPC switch pair, or if the VLAN uses the Flood-in-Encap feature. + + It is critical to ensure that there are no overlapping VLAN pools in your fabric unless it is on purpose with the appropriate understanding of VLAN ID and VXLAN ID mapping behind the scene. If you are not sure, consider **Enforce EPG VLAN Validation** under `System > System Settings > Fabric Wide Setting` in the Cisco APIC GUI [available starting with release 3.2(6)], which prevents the most common problematic configuration (two domains containing overlapping VLAN pools being associated to the same EPG). Refer to the following documents to understand how overlapping VLAN pools become an issue and when this scenario might occur: diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 2c2514a..a8c9e16 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -24,7 +24,11 @@ markdown_extensions: pygments_lang_class: true - pymdownx.inlinehilite - pymdownx.snippets - - pymdownx.superfences + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format # emoji - pymdownx.emoji: From e319514dfcff0621b96caaf5bc96ea274bd890d5 Mon Sep 17 00:00:00 2001 From: tkishida Date: Fri, 16 Aug 2024 23:52:29 -0700 Subject: [PATCH 3/6] fix: gitlab-ci with old pip using old python package index --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6a05ec..de14fde 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ test:py27: before_script: # pip 21.0 does not support py2 but the default pip in this container # is too old and fails. Hence the pip version must be 20.3.4. - - pip install --upgrade pip==20.3.4 + - pip install --trusted-host pypi.python.org --upgrade pip==20.3.4 - python --version ; pip --version - pip install virtualenv - virtualenv venv27 From 30b7ba4ac8bd8c4fcd1eaa12f2ec7bbf2ab102a0 Mon Sep 17 00:00:00 2001 From: tkishida Date: Sat, 17 Aug 2024 00:34:45 -0700 Subject: [PATCH 4/6] fix: handle IFPG without AEP --- aci-preupgrade-validation-script.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aci-preupgrade-validation-script.py b/aci-preupgrade-validation-script.py index c1971a6..bbd1893 100644 --- a/aci-preupgrade-validation-script.py +++ b/aci-preupgrade-validation-script.py @@ -836,9 +836,9 @@ def create_port_data(self): "node": node, "fex": fex, "port": port, - "override_ifpg_name": ifpg["name"], + "override_ifpg_name": ifpg.get("name", ""), "vlan_scope": vlan_scope, - "aep_name": aep["name"], + "aep_name": aep.get("name", ""), "domain_dns": [dom["dn"] for dom in doms], }) From 9acf9f3f1517ff5e885a9e784c174a13940c6d77 Mon Sep 17 00:00:00 2001 From: tkishida Date: Sat, 17 Aug 2024 01:52:11 -0700 Subject: [PATCH 5/6] doc: Update doc_url of vnid_mismatch check to github page --- aci-preupgrade-validation-script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aci-preupgrade-validation-script.py b/aci-preupgrade-validation-script.py index bbd1893..1a9feb4 100644 --- a/aci-preupgrade-validation-script.py +++ b/aci-preupgrade-validation-script.py @@ -2172,7 +2172,7 @@ def vnid_mismatch_check(index, total_checks, **kwargs): data = [] mismatch_hits = [] recommended_action = 'Remove any domains with overlapping VLAN Pools from above EPGs, then redeploy VLAN' - doc_url = '"Overlapping VLAN Pool" from Pre-Upgrade Check Lists' + doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#vnid-mismatch' print_title(title, index, total_checks) vlanCktEps = icurl('class', 'vlanCktEp.json?query-target-filter=ne(vlanCktEp.name,"")') From c35079502d3d11018a49088092c7ff04873d0429 Mon Sep 17 00:00:00 2001 From: takishida <38262981+takishida@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:11:03 -0700 Subject: [PATCH 6/6] Fix typo in validations.md --- docs/docs/validations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/validations.md b/docs/docs/validations.md index 183fd0e..b5266a9 100644 --- a/docs/docs/validations.md +++ b/docs/docs/validations.md @@ -1397,7 +1397,7 @@ Overlapping VLAN blocks across different VLAN pools may result in some forwardin If the port is associated with multiple domains/VLAN pools as shown above, and EPG A is associated only with `Phy Domain A`, then only `VLAN Pool 1` is available for the port in the context of EPG A, avoiding any overlapping VLAN pool issues. However, if VLAN 10 is not included in `VLAN Pool 1`, it cannot be deployed on the port via EPG A. The same principle applies when deploying a VLAN through AEP binding, as it serves as a shortcut to specify all ports within the AEP. - This conecpt of domains is crucial in multi-domain tenancy to ensure the tenant/EPG has the appropriate set of ports and VLANs. + This concept of domains is crucial in multi-domain tenancy to ensure the tenant/EPG has the appropriate set of ports and VLANs. However, if EPG A is associated with both `Phy Domain A` and `Phy Domain B`, the port can use either `VLAN Pool 1` or `VLAN Pool 2` to pull a VLAN. If VLAN 10 is configured in both pools, EPG A and its VLAN 10 are susceptible to an overlapping VLAN pool issue. @@ -2212,4 +2212,4 @@ If found, the target version of your upgrade should be a version with a fix for [27]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwb91766 [28]: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-installation-aci-upgrade-downgrade/Cisco-APIC-Installation-ACI-Upgrade-Downgrade-Guide/m-aci-upgrade-downgrade-architecture.html#Cisco_Reference.dita_22480abb-4138-416b-8dd5-ecde23f707b4 [29]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwb86706 -[30]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwf44222 \ No newline at end of file +[30]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwf44222