Cisco ACI Moquery Explained & Examples
What is MOquery in ACI
- Moquery stands for managed object Query. ACI stores the configuration and nodes status using a Management Information Model (MIM), which is represented in a hierarchical Management Information Tree (MIT).
- Every Managed object is an instance of a class, and has a unique distinguished name.
polUni
is the top-level class for all policy definition/resolution objects, and compUni is the top-level class for all compute-related objects.
- Every node, interface, policy, and the endpoint is represented by a Managed Object in ACI.
- moquery can extract the information about the Managed Object (MO) from the MIM/MIT and display it on CLI.
How to identify each Object in ACI MIT:
There are mainly 2 ways to identify an Object:
- The Distinguished Name (DN) uniquely represents any given MO instance.
- The Relative Name (RN) represents the MO locally underneath its parent MO. All objects in the MIT exist under the root object.
- Difference between DN and RN:
dn = {rn}/{rn}/{rn}/{rn}
Example: dn =”sys/ch/lcslot-1/lc/leafport-1”
Distinguished names are directly mapped to URLs. Either the relative name or the distinguished name can be used to access an object, depending on the current location in the MIT.
If you navigate throw the APIC GUI for an object you will find the DN in the URL:
Example:
https://APIC_IP/#bTenants:Legacy_PROD|uni/tn-Legacy_PROD/ap-Legacy_PROD_AP/epg-EPG_WEB
Moquery Basic Syntax
The moquery command have several options in order to retrive objects , class and filter them:
moquery
usage: Command line cousin to visore [-h] [-i HOST] [-p PORT] [-d DN]
[-c KLASS] [-f FILTER] [-a ATTRS]
[-o OUTPUT] [-u USER]
[-x [OPTIONS [OPTIONS ...]]]
- Moquery an Object (DN)
To Query a DN with moquery, we can use the following syntax:
admin@apic1:~> moquery --dn uni/tn-PROD
OR
admin@apic1:~> moquery -d uni/tn-PROD
Example:
APIC-1# moquery -d uni/tn-PROD
Total Objects shown: 1
# fv.Tenant
name : PROD
annotation :
childAction :
descr :
dn : uni/tn-PROD
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:12:00.626+00:00
monPolDn : uni/tn-common/monepg-default
nameAlias :
ownerKey :
ownerTag :
rn : tn-PROD
status :
uid : 15374
- In the output, we can find basically the name of the Object, DN, RN and the UID which is the ID of the user that created the object (15374 is for the admin user).
- name, dn, rn etc represent the attributes of the class associated with the retrieved object.
- A DN (-d) will only show a single object, because it’s just an instance of a class (in our case fv.Tenant class)
- Moquery a class:
To find the class of an object in ACI, we can retrieve it from the DN query output, from the Visiore Tool or even via an easier way from the GUI, in the setting, select “show debug Info”
And you will see the DN and its class of the Object you are navigating at the bottom of the APIC GUI.
Once we identify the class of the MO, we moquery the class which will show up all the Objects of the class (all the DN (instances of the class):
Syntax:
- Example: retrieve all Tenants:
moquery ‑c fvTenant
We can use egrep to specify which output we need focus on:
Example:
^ : means begin with.
In this example, we grep line that starts with “name” or starts with “dn”:
APIC-1# moquery -c fv.Tenant | egrep "^#|^name\ |^dn"
# fv.Tenant
name : common
dn : uni/tn-common
# fv.Tenant
name : Legacy_PROD
dn : uni/tn-Legacy_PROD
# fv.Tenant
name : PROD
dn : uni/tn-PROD
# fv.Tenant
name : mgmt
dn : uni/tn-mgmt
# fv.Tenant
name : infra
dn : uni/tn-infra
# fv.Tenant
name : Cloud
dn : uni/tn-Cloud
- Recap:
So until now, we can query a single Object (or DN which is an instance of a class) via “moquery -d” and we can query the class which will retrieve all the objects instantiated from that specific class via “moquery -c”.
But, is it possible to find all MO for objects of class for a particular object (a parent object)?
Moquery a class for specific parent Object:
- As an example, we can retrieve all BDs for a specific Tenant “PROD”:
APIC-1# moquery -c fvBD -d /uni/tn-PROD
- To make it more interesting, we can query the subnets for a bridge domain:
moquery -c fvSubnet -d /uni/tn-PROD/BD-test1
# fv.Subnet
ip : 9.9.9.9/30
annotation :
childAction :
ctrl :
descr :
dn : uni/tn-PROD/BD-test1/subnet-[9.9.9.9/30]
extMngdBy :
lcOwn : local
modTs : 2022-12-07T11:23:03.431+00:00
monPolDn : uni/tn-common/monepg-default
name :
nameAlias :
preferred : no
rn : subnet-[9.9.9.9/30]
scope : private
status :
uid : 15374
virtual : no
or retrieve all subnets for a specific Tenant PROD:
moquery -c fvSubnet -d /uni/tn-PROD
Example of Query an Access policies
The figure below illustrates the Access policies model and the classes of each of these elements:
One thing to notice is that the links between the objects (parent-child) are also objects.
- Example 1: Query all the Interfaces profiles:
moquery -c infraAccPortP
- Example 2: Query all Interface selectors for a specific interface profile:
Interface profile: Sauvegarde_IntProfile
moquery -c infraHPortS -d uni/infra/accportprof-sauvgarde_mangement_IntProfile
To find the child objects of the interface selector class, we can use the option “-x query-target=children“:
moquery -c infraHPortS -x query-target=children
# infra.PortBlk
name : block2
# infra.RsAccBaseGrp
annotation :
rType : mo
rn : rsaccBaseGrp
state : formed
tCl : infraAccPortGrp
tDn : uni/infra/funcprof/accportgrp-Legacy_1G_PolGrp
tType : mo
uid : 15374
We notice that the interface selector class has 2 child classes: infra.PortBlk and RsAccBaseGrp
- infra.PortBlk: is the class that represents the ports block for an interface selector.
- RsAccBaseGrp: This class represents the relationship between the interface selector and the interface policy group
- Example 3: Query the Interface policy groups for each Interface selector of an Interface profile:
For this, we need to query the linking class between the Interface selector and the Interface Policy group which is “infraRsAccBaseGrp“:
We can retrieve the interface policy group for an interface selector:
moquery -c infraRsAccBaseGrp -d uni/infra/accportprof-sauvgarde_mangement_IntProfile/hports-sauvgarde_management_Intselector-typ-range
# infra.RsAccBaseGrp
annotation :
childAction :
dn : uni/infra/accportprof-sauvgarde_mangement_IntProfile/hports-sauvgarde_management_Intselector-typ-range/rsaccBaseGrp
extMngdBy :
fexId : 101
forceResolve : yes
lcOwn : local
modTs : 2022-11-04T16:01:42.943+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsaccBaseGrp
state : formed
stateQual : none
status :
tCl : infraAccPortGrp
tDn : uni/infra/funcprof/accportgrp-sauvgarde_mgmt
tType : mo
uid : 15374
The linking class naming “infraRsAccBaseGrp“:
- RS: means that the class is a Relationship source,
- In the previous example, we query the Interface selector “sauvgarde_management_Intselector” for its Relationship sources for “AccBaseGrp”.
The interface policy groups retrieved are mentioned in the attributes: target class tcl and target tdn.
In the same way, we can retrieve all the interface policy groups for each Interface selector for an interface profile:
we query the Interface profile “sauvgarde_mangement_IntProfile” for its Relationship sources for “AccBaseGrp”. The interface profile could contain multiple multiple Interface selectors and the interface selector is associated with an interface policy. As a result, the next query will retrieve all interface policy groups for each interface selector of the interface policy group “sauvgarde_mangement_IntProfile”:
moquery -c infraRsAccBaseGrp -d uni/infra/accportprof-sauvgarde_mangement_IntProfile
Following the same logic, we can find the CDP Interface policy for a specific interface policy group:
moquery -c infraRsCdpIfPol -d uni/infra/funcprof/accportgrp-sauvgarde_mgmt
or retrieve the AAEP related to an interface policy group:
moquery -c infraRsAttEntP -d uni/infra/funcprof/accportgrp-sauvgarde_mgmt
Total Objects shown: 1
# infra.RsAttEntP
annotation :
childAction :
dn : uni/infra/funcprof/accportgrp-sauvgarde_mgmt/rsattEntP
extMngdBy :
forceResolve : yes
isUsingConnSel : no
lcOwn : local
modTs : 2022-11-04T16:01:01.460+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsattEntP
state : formed
stateQual : none
status :
tCl : infraAttEntityP
tDn : uni/infra/attentp-Sauvegarde_AEP
tType : mo
uid : 15374
If we have the interface policy group object name (or dn), and we want to query the interface selectors that use that Interface policy group, we can call the class with “rt” Relationship target, which will point back to the interface selector:
Call the class “infraRtAccBaseGrp” for the dn of the interface policy group, which will query the interface selectors:
moquery -c infraRtAccBaseGrp -d uni/infra/funcprof/accportgrp-sauvgarde_mgmt
Total Objects shown: 1
# infra.RtAccBaseGrp
tDn : uni/infra/accportprof-sauvgarde_mangement_IntProfile/hports-sauvgarde_management_Intselector-typ-range
childAction :
dn : uni/infra/funcprof/accportgrp-sauvgarde_mgmt/rtaccBaseGrp-[uni/infra/accportprof-sauvgarde_mangement_IntProfile/hports-sauvgarde_management_Intselector-typ-range]
lcOwn : local
modTs : 2022-11-04T16:01:42.943+00:00
rn : rtaccBaseGrp-[uni/infra/accportprof-sauvgarde_mangement_IntProfile/hports-sauvgarde_management_Intselector-typ-range]
status :
tCl : infraHPortS
Relationship Source and Relationship Target:
In General, For access policies objects, Rs “Relationship Source” is used for querying the linking class in the following direction: Leaf Profile down to the VLAN Pool. As an example, infraRsAccBaseGrp is the child class of the Interface selector that points to the Interface Policy group.
Rt “Relationship Target” does the opposite, it points back to the previous object, (VLAN Pool to Leaf Profile direction). As an example, infraRtAccBaseGrp is the child class of the Interface policy group pointing back to the Interface selectors using it.
- Full Access policies Moquery example:
Let’s try to query all objects from switch profile to the vlan pool:
1- Leaf profile and leaf selector:
We will query for a leaf profile: ASR9K_Leaf_Profile
APIC-1# moquery -d uni/infra/nprof-ASR9K_Leaf_Profile
Total Objects shown: 1
# infra.NodeP
name : ASR9K_Leaf_Profile
annotation :
childAction :
descr :
dn : uni/infra/nprof-ASR9K_Leaf_Profile
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:12:30.683+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : nprof-ASR9K_Leaf_Profile
status :
uid : 15374
- Leaf Selector:
Next, we check the child classes of the interface profile (Leaf Selector):
APIC-1# moquery -x query-target=children -d uni/infra/nprof-ASR9K_Leaf_Profile
Total Objects shown: 1
# infra.LeafS
name : ASR9K_Leaf_Selector
type : range
annotation :
childAction :
descr :
dn : uni/infra/leaves-ASR9K_Leaf_Selector-typ-range
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:12:30.683+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : leaves-ASR9K_Leaf_Selector-typ-range
status :
uid : 15374
Check the Leaf block for the interface selector:
APIC-1# moquery -c infra.NodeBlk -d uni/infra/nprof-ASR9K_Leaf_Profile/leaves-ASR9K_Leaf_Selector-typ-range/
Total Objects shown: 1
# infra.NodeBlk
name : 62f78107576d2558
annotation :
childAction :
descr :
dn : uni/infra/nprof-ASR9K_Leaf_Profile/leaves-ASR9K_Leaf_Selector-typ-range/nodeblk-62f78107576d2558
extMngdBy :
from_ : 101
lcOwn : local
modTs : 2021-03-12T15:12:30.683+00:00
nameAlias :
rn : nodeblk-62f78107576d2558
status :
to_ : 102
uid : 15374
To check all the child classes for the interface profile, which includes the linking to the interface profile classes name, use: moquery -x query-target=children -c infraNodeP
The child classes of the interface profile are:
- infra.NodeBlk: contain the leaf profile nodes block
- infra.RsAccPortP: represent the relationship from the Leaf profile to the interface profiles.
2- Leaf Interface profile and Interface selector:
To find the Interface profile linked to the leaf profile “ASR9K_Leaf_Profile“, we will query the Linking class for the leaf profile to the interface profiles (infra.RsAccPortP):
- Leaf Interface Profile:
APIC-1# moquery -c infra.RsAccPortP -d uni/infra/nprof-ASR9K_Leaf_Profile
Total Objects shown: 1
# infra.RsAccPortP
tDn : uni/infra/accportprof-ASR9K_Int_Profile
annotation :
childAction :
dn : uni/infra/nprof-ASR9K_Leaf_Profile/rsaccPortP-[uni/infra/accportprof-ASR9K_Int_Profile]
extMngdBy :
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:12:30.683+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsaccPortP-[uni/infra/accportprof-ASR9K_Int_Profile]
state : formed
stateQual : none
status :
tCl : infraAccPortP
tType : mo
uid : 15374
- Interface selector:
To query the related Interface selectors, we can simply query for the interface profile children, in our case the interface profile contains a single interface selector:
APIC-1# moquery -d uni/infra/accportprof-ASR9K_Int_Profile -x query-target=children
Total Objects shown: 1
# infra.HPortS
name : ASR9K_Int_Selector
type : range
annotation :
childAction :
descr :
dn : uni/infra/hports-ASR9K_Int_Selector-typ-range
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:06:18.470+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : hports-ASR9K_Int_Selector-typ-range
status :
uid : 15374
To check the child classes for the Interface selector: moquery -c infra.HPortS -x query-target=children
The child classes for the Interface selector are:
- infra.PortBlk: specify the interface block of the interface selector
- infra.RsAccBaseGrp: represent the relationship of the interface selector with the Interface policy group.
In order to check the port block of the interface selector:
- Port blocks:
APIC-1# moquery -c infra.PortBlk -d uni/infra/accportprof-ASR9K_Int_Profile/hports-ASR9K_Int_Selector-typ-range
Total Objects shown: 1
# infra.PortBlk
name : block2
annotation :
childAction :
descr :
dn : uni/infra/accportprof-ASR9K_Int_Profile/hports-ASR9K_Int_Selector-typ-range/portblk-block2
extMngdBy :
fromCard : 1
fromPort : 45
lcOwn : local
modTs : 2021-03-12T15:06:18.470+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
rn : portblk-block2
status :
toCard : 1
toPort : 45
uid : 15374
3- Interface Policy Group:
For this, we need to query the relationship class from the Interface selector the interface policy group: infra.RsAccBaseGrp
APIC-1# moquery -c infra.RsAccBaseGrp -d uni/infra/accportprof-ASR9K_Int_Profile/hports-ASR9K_Int_Selector-typ-range
Total Objects shown: 1
# infra.RsAccBaseGrp
annotation :
childAction :
dn : uni/infra/accportprof-ASR9K_Int_Profile/hports-ASR9K_Int_Selector-typ-range/rsaccBaseGrp
extMngdBy :
fexId : 101
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:06:18.470+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsaccBaseGrp
state : formed
stateQual : none
status :
tCl : infraAccBndlGrp
tDn : uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp
tType : mo
uid : 15374
Moquery Interface policy group and its children classes:
APIC-1# moquery -d uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp
# infra.AccBndlGrp
name : ASR9K_Int_PolGrp
annotation :
childAction :
descr :
dn : uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp
extMngdBy :
lagT : node
lcOwn : local
modTs : 2021-03-12T14:50:53.023+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : accbundle-ASR9K_Int_PolGrp
status :
uid : 15374
-------------- children (AAEP, CDP , LLDP etc , and linking to the AAEP ---------
APIC-1# moquery -c infra.AccBndlGrp -x query-target=children
Check the relation class Interface Policy group to the AAEP:
APIC-1# moquery -d uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp -x query-target=children
Total Objects shown: 1
# infra.RsAttEntP
annotation :
childAction :
dn : uni/infra/funcprof/rsattEntP
extMngdBy :
forceResolve : yes
isUsingConnSel : no
lcOwn : local
modTs : 2021-03-12T14:50:53.023+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsattEntP
state : formed
stateQual : none
status :
tCl : infraAttEntityP
tDn : uni/infra/attentp-ASR9K_AAEP
tType : mo
uid : 15374
4- AAEP:
we will query for the linking class that we discovered previously for the dn of the Interface policy group:
APIC-1# moquery -c infra.RsAttEntP -d uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp
Total Objects shown: 1
# infra.RsAttEntP
annotation :
childAction :
dn : uni/infra/funcprof/accbundle-ASR9K_Int_PolGrp/rsattEntP
extMngdBy :
forceResolve : yes
isUsingConnSel : no
lcOwn : local
modTs : 2021-03-12T14:50:53.023+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsattEntP
state : formed
stateQual : none
status :
tCl : infraAttEntityP
tDn : uni/infra/attentp-ASR9K_AAEP
tType : mo
uid : 15374
To query the AAEP, just moquery to the target dn (tdn) of the relationship class output:
APIC-1# moquery -d uni/infra/attentp-ASR9K_AAEP
Total Objects shown: 1
# infra.AttEntityP
name : ASR9K_AAEP
annotation :
childAction :
configIssues :
descr :
dn : uni/infra/attentp-ASR9K_AAEP
extMngdBy :
lcOwn : local
modTs : 2021-03-12T14:42:24.124+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : attentp-ASR9K_AAEP
status :
uid : 15374
Check the linking class AAEP the physical domain:
APIC-1# moquery -c infra.RsDomP -d uni/infra/attentp-ASR9K_AAEP | more
Total Objects shown: 2
# infra.RsDomP
tDn : uni/l3dom-ASR9K_L3Domain
annotation :
childAction :
dn : uni/infra/attentp-ASR9K_AAEP/rsdomP-[uni/l3dom-ASR9K_L3Domain]
extMngdBy :
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:17:18.241+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsdomP-[uni/l3dom-ASR9K_L3Domain]
state : formed
stateQual : none
status :
tCl : l3extDomP
tType : mo
uid : 15374
# infra.RsDomP
tDn : uni/phys-ASR9K_Phy_Domain
annotation :
childAction :
dn : uni/infra/attentp-ASR9K_AAEP/rsdomP-[uni/phys-ASR9K_Phy_Domain]
extMngdBy :
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:17:26.167+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsdomP-[uni/phys-ASR9K_Phy_Domain]
state : missing-target
stateQual : none
status :
tCl : physDomP
tType : mo
uid : 15374
We can also check from the output of children query on the AAEP:
APIC-1# moquery -d uni/infra/attentp-ASR9K_AAEP -x query-target=children
Total Objects shown: 1
# infra.RsDomP
tDn : uni/l3dom-ASR9K_L3Domain
annotation :
childAction :
dn : uni/infra/rsdomP-[uni/l3dom-ASR9K_L3Domain]
extMngdBy :
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:17:18.241+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsdomP-[uni/l3dom-ASR9K_L3Domain]
state : formed
stateQual : none
status :
tCl : l3extDomP
tType : mo
uid : 15374
5- Domain and VLAN Pool:
- Domain:
we can from the previous output that the physical domain state is missing but we can query the L3Domain:
APIC-1# moquery -d uni/l3dom-ASR9K_L3Domain
Total Objects shown: 1
# l3ext.DomP
name : ASR9K_L3Domain
annotation :
childAction :
configIssues :
dn : uni/l3dom-ASR9K_L3Domain
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:17:17.941+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : l3dom-ASR9K_L3Domain
status :
targetDscp : unspecified
uid : 15374
Domain children:
moquery -c l3ext.DomP -x query-target=children | more
Total Objects shown: 14
# extnw.RtL3DomAtt
tDn : uni/tn-common/out-ASR_9K_L3OUT
childAction :
dn : uni/l3dom-ASR9K_L3Domain/rtl3extL3DomAtt-[uni/tn-common/out-ASR_9K_L3OUT]
lcOwn : local
modTs : 2021-03-12T15:37:36.246+00:00
rn : rtl3extL3DomAtt-[uni/tn-common/out-ASR_9K_L3OUT]
status :
tCl : l3extOut
# infra.RsVlanNs
annotation :
childAction :
dn : uni/l3dom-ASR9K_L3Domain/rsvlanNs
extMngdBy :
forceResolve : yes
lcOwn : local
modTs : 2021-03-12T15:17:18.005+00:00
monPolDn : uni/fabric/monfab-default
rType : mo
rn : rsvlanNs
state : formed
stateQual : none
status :
tCl : fvnsVlanInstP
tDn : uni/infra/vlanns-[ASR9K_VLANPool]-static
tType : mo
uid : 15374
- VLAN Pool:
APIC-1# moquery -d uni/infra/vlanns-ASR9K_VLANPool-static
Total Objects shown: 1
# fvns.VlanInstP
name : ASR9K_VLANPool
allocMode : static
annotation :
childAction :
configIssues :
descr : Vlan Pool de l interco ACI et ASR9k
dn : uni/infra/vlanns-[ASR9K_VLANPool]-static
extMngdBy :
lcOwn : local
modTs : 2021-03-12T14:40:55.920+00:00
monPolDn : uni/fabric/monfab-default
nameAlias :
ownerKey :
ownerTag :
rn : vlanns-[ASR9K_VLANPool]-static
status :
uid : 15374
- VLANs block:
via:
APIC-1# moquery -c fvns.EncapBlk -d uni/infra/vlanns-ASR9K_VLANPool-static -x query-target=children
Total Objects shown: 1
# fvns.EncapBlk
from : vlan-148
to : vlan-148
allocMode : static
annotation :
childAction :
descr :
dn : uni/infra/vlanns-[ASR9K_VLANPool]-static/from-[vlan-148]-to-[vlan-148]
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:38:03.386+00:00
monPolDn : uni/fabric/monfab-default
name :
nameAlias :
rn : from-[vlan-148]-to-[vlan-148]
role : external
status :
uid : 15374
Or via:
APIC-1# moquery -c fvns.EncapBlk -d uni/infra/vlanns-ASR9K_VLANPool-static
Total Objects shown: 1
# fvns.EncapBlk
from : vlan-148
to : vlan-148
allocMode : static
annotation :
childAction :
descr :
dn : uni/infra/vlanns-[ASR9K_VLANPool]-static/from-[vlan-148]-to-[vlan-148]
extMngdBy :
lcOwn : local
modTs : 2021-03-12T15:38:03.386+00:00
monPolDn : uni/fabric/monfab-default
name :
nameAlias :
rn : from-[vlan-148]-to-[vlan-148]
role : external
status :
uid : 15374
References:
[1] Cisco.com
[2] Chris Welsh (aka RedNectar):
Good work. And thanks for acknowledging my diagram. It would be nice if you could also add a link to https://rednectar.net/2020/04/09/moquery-ciscos-mysterious-obscure-aci-query-utility/
Thanks for reminding, fixed.
Also, you gave me the chance to thank you for all the good work on Cisco community and your blogs.