Beispiel #1
0
def convert_dn_to_cobra(dn):
    # Taken from https://gist.github.com/mtimm/7c238d1c682a684867fd
    from cobra.mit.naming import Dn
    imports = []
    cobra_dn = Dn.fromString(dn)
    parentMoOrDn = "''"
    dn_dict = OrderedDict()
    for rn in cobra_dn.rns:
        rn_str = str(rn)
        dn_dict[rn_str] = {}
        dn_dict[rn_str]['namingVals'] = tuple(rn.namingVals)
        dn_dict[rn_str]['moClassName'] = rn.meta.moClassName
        dn_dict[rn_str]['className'] = rn.meta.className
        dn_dict[rn_str]['parentMoOrDn'] = parentMoOrDn
        parentMoOrDn = rn.meta.moClassName
    code = []

    dn_dict.popitem()

    for arn in dn_dict.items():
        if len(arn[1]['namingVals']) > 0:
            nvals_str = ", " + ", ".join(
                map(lambda x: "'{0}'".format(str(x)), arn[1]['namingVals']))
        else:
            nvals_str = ""
        code.append("{0} = {1}({2}{3})".format(arn[1]['moClassName'],
                                               arn[1]['className'],
                                               arn[1]['parentMoOrDn'],
                                               nvals_str))
        package = '.'.join(arn[1]['className'].split('.')[0:-1])
        imports.append(package)
    return arn[1]['moClassName'], imports, '\n'.join(code)
Beispiel #2
0
def convert_dn_to_cobra(dn):
    # Taken from https://gist.github.com/mtimm/7c238d1c682a684867fd
    from cobra.mit.naming import Dn
    cobra_dn = Dn.fromString(dn)
    parentMoOrDn = "''"
    dn_dict = OrderedDict()
    for rn in cobra_dn.rns:
        rn_str = str(rn)
        dn_dict[rn_str] = {}
        dn_dict[rn_str]['namingVals'] = tuple(rn.namingVals)
        dn_dict[rn_str]['moClassName'] = rn.meta.moClassName
        dn_dict[rn_str]['className'] = rn.meta.className
        dn_dict[rn_str]['parentMoOrDn'] = parentMoOrDn
        parentMoOrDn = rn.meta.moClassName
    code = []
    dn_dict.popitem()
    for arn in dn_dict.items():
        if len(arn[1]['namingVals']) > 0:
            nvals_str = ", '" + ", ".join(map(str, arn[1]['namingVals'])) + "'"
        else:
            nvals_str = ""
        code.append("{0} = {1}({2}{3})".format(arn[1]['moClassName'],
                                         arn[1]['className'],
                                         arn[1]['parentMoOrDn'],
                                         nvals_str))
    return arn[1]['moClassName'], '\n'.join(code)
Beispiel #3
0
def convert_dn_to_cobra(dn_str):
    """Convert an ACI distinguished name to ACI Python SDK (cobra) code."""
    cobra_dn = Dn.fromString(dn_str)
    parent_mo_or_dn = "''"
    dn_dict = OrderedDict()
    for rname in cobra_dn.rns:
        rn_str = str(rname)
        dn_dict[rn_str] = {}
        dn_dict[rn_str]['namingVals'] = tuple(rname.namingVals)
        dn_dict[rn_str]['moClassName'] = rname.meta.moClassName
        dn_dict[rn_str]['className'] = rname.meta.className
        dn_dict[rn_str]['parentMoOrDn'] = parent_mo_or_dn
        parent_mo_or_dn = rname.meta.moClassName
    cobra_str = ""
    for arn in dn_dict.items():
        if len(arn[1]['namingVals']) > 0:
            nvals = [str(val) for val in arn[1]['namingVals']]
            nvals_str = ", '" + ", ".join(nvals) + "'"
        else:
            nvals_str = ""
        cobra_str += "    # {0} = {1}({2}{3})\n".format(arn[1]['moClassName'],
                                                        arn[1]['className'],
                                                        arn[1]['parentMoOrDn'],
                                                        nvals_str)
    return cobra_str
Beispiel #4
0
def get_leaf_prof_dn_by_nodeid(leaf_id):
    cq = ClassQuery('infraNodeBlk')
    result = moDir.query(cq)
    my_results = []

    for key in result:
        if int(key.from_) <= int(leaf_id) <= int(key.to_):
            child = Dn.fromString(format(key.dn))
            my_results.append(format(child.getAncestor(2)))
    return my_results
Beispiel #5
0
def get_int_prof_by_leaf_prof(parm):
    cq = ClassQuery('infraRsAccPortP')
    my_result = []
    result = moDir.query(cq)
    for key in result:
        # temp = format(key.dn)  # this is a string
        child = Dn.fromString(format(key.dn))
        parent = format(child.getAncestor(1))
        if parent == parm:
            my_result.append(key.tDn)
    return my_result
Beispiel #6
0
def get_policygroup_type(parm):
    pg_class = Dn.fromString(parm)

    if format(pg_class.moClass
              ) == "<class 'cobra.modelimpl.infra.accbndlgrp.AccBndlGrp'>":
        is_bundle = True
        return is_bundle
    elif format(pg_class.moClass
                ) == "<class 'cobra.modelimpl.infra.accportgrp.AccPortGrp'>":
        is_bundle = False
        return is_bundle
Beispiel #7
0
def getAncestorDnStrFromDnString(md, input, level):

    fvAEPg_dnStr = str(Dn.fromString(input).getAncestor(level))

    tq = TraceQuery(fvAEPg_dnStr, 'fvBD')
    tq.subtree = 'children'
    fvBD = md.query(tq)[0]

    bd = tDnToBdCtx(str(fvBD.dn), 'BD')
    ctx = tDnToBdCtx((fvBD.rsctx._childObjects[None].tDn), 'ctx')
    if bd and ctx: return bd, ctx
    else: return 'na', 'na'
Beispiel #8
0
def getAncestorDnStrFromDnString(md, input, level):

    fvAEPg_dnStr = str(Dn.fromString(input).getAncestor(level))

    tq = TraceQuery(fvAEPg_dnStr, 'fvBD')
    tq.subtree = 'children'
    fvBD = md.query(tq)[0]

    bd=tDnToBdCtx(str(fvBD.dn),'BD')
    ctx=tDnToBdCtx((fvBD.rsctx._childObjects[None].tDn),'ctx')
    if bd and ctx: return bd,ctx
    else: return 'na','na'
Beispiel #9
0
    def _parentDn(self):
        """Get the Dn for the parent of this Mo.

        Initializes the parent Dn if it wasn't initilized yet.

        Returns:
          cobra.mit.naming.Dn: The Dn of the parent of this Mo.
        """
        if self.__parentDn is None:
            # This attribute is defined in BaseMo
            # pylint:disable=attribute-defined-outside-init
            self.__parentDn = Dn.fromString(self.__parentDnStr)
        return self.__parentDn
Beispiel #10
0
    def _parentDn(self):
        """Get the Dn for the parent of this Mo.

        Initializes the parent Dn if it wasn't initilized yet.

        Returns:
          cobra.mit.naming.Dn: The Dn of the parent of this Mo.
        """
        if self.__parentDn is None:
            # This attribute is defined in BaseMo
            # pylint:disable=attribute-defined-outside-init
            self.__parentDn = Dn.fromString(self.__parentDnStr)
        return self.__parentDn
Beispiel #11
0
def get_pg_and_portblock_by_int_prof_from_port_id(parm1, parm2):
    temp = parm2.split("/")
    port = temp[1]
    req = moDir.lookupByClass("infraPortBlk", parentDn=parm1)
    my_result = []
    for key in req:
        if int(key.fromPort) <= int(port) <= int(key.toPort):
            # temp = format(key.dn)
            my_result.append(format(key.dn))
            child = Dn.fromString(format(key.dn))
            parent = format(child.getAncestor(
                1))  # here I got the port selector DN as a string
            # print self.parent
            req2 = moDir.lookupByClass(
                "infraRsAccBaseGrp",
                parentDn=parent)  # here I get the Policy group DN
            for pg in req2:
                my_result.append(format(pg.tDn))
                return my_result
 def _parentDn(self):
     if self.__parentDn is None:
         self.__parentDn = Dn.fromString(self.__parentDnStr)
     return self.__parentDn
Beispiel #13
0
 def _parentDn(self):
     if self.__parentDn is None:
         self.__parentDn = Dn.fromString(self.__parentDnStr)
     return self.__parentDn