def configure_lan_connectivity(ucs, module, dn):
    from ucsmsdk.mometa.vnic.VnicLanConnPolicy import VnicLanConnPolicy
    from ucsmsdk.mometa.vnic.VnicEther import VnicEther
    from ucsmsdk.mometa.vnic.VnicIScsiLCP import VnicIScsiLCP
    from ucsmsdk.mometa.vnic.VnicVlan import VnicVlan

    if not module.check_mode:
        try:
            # create if mo does not already exist
            mo = VnicLanConnPolicy(
                parent_mo_or_dn=module.params['org_dn'],
                name=module.params['name'],
                descr=module.params['description'],
            )

            if module.params.get('vnic_list'):
                for vnic in module.params['vnic_list']:
                    if vnic['state'] == 'absent':
                        child_dn = dn + '/ether-' + vnic['name']
                        mo_1 = ucs.login_handle.query_dn(child_dn)
                        if mo_1:
                            ucs.login_handle.remove_mo(mo_1)
                    else:  # state == 'present'
                        mo_1 = VnicEther(
                            addr='derived',
                            parent_mo_or_dn=mo,
                            name=vnic['name'],
                            adaptor_profile_name=vnic['adapter_policy'],
                            nw_templ_name=vnic['vnic_template'],
                            order=vnic['order'],
                        )

            if module.params.get('iscsi_vnic_list'):
                for iscsi_vnic in module.params['iscsi_vnic_list']:
                    if iscsi_vnic['state'] == 'absent':
                        child_dn = dn + '/iscsi-' + iscsi_vnic['name']
                        mo_1 = ucs.login_handle.query_dn(child_dn)
                        if mo_1:
                            ucs.login_handle.remove_mo(mo_1)
                    else:  # state == 'present'
                        mo_1 = VnicIScsiLCP(
                            parent_mo_or_dn=mo,
                            name=iscsi_vnic['name'],
                            adaptor_profile_name=iscsi_vnic[
                                'iscsi_adapter_policy'],
                            vnic_name=iscsi_vnic['overlay_vnic'],
                            addr=iscsi_vnic['mac_address'],
                        )
                        VnicVlan(
                            parent_mo_or_dn=mo_1,
                            vlan_name=iscsi_vnic['vlan_name'],
                        )

            ucs.login_handle.add_mo(mo, True)
            ucs.login_handle.commit()
        except Exception as e:  # generic Exception handling because SDK can throw a variety of exceptions
            ucs.result['msg'] = "setup error: %s " % str(e)
            module.fail_json(**ucs.result)

    ucs.result['changed'] = True
Ejemplo n.º 2
0
def add_vnic_iscsi(handle,
                   parent_dn,
                   name,
                   addr="derived",
                   admin_host_port="ANY",
                   admin_vcon="any",
                   stats_policy_name="default",
                   admin_cdn_name="",
                   switch_id="A",
                   pin_to_group_name="",
                   vnic_name="",
                   qos_policy_name="",
                   adaptor_profile_name="",
                   ident_pool_name="",
                   order="unspecified",
                   nw_templ_name="",
                   vlan_name="default"):
    """
    Adds iSCSI vNIC to LAN Connectivity Policy

    Args:
        handle (UcsHandle)
        parent_dn (string): dn of VnicLanConnPolicy
        name (string): iSCSI name
        addr (string): address
        admin_host_port (number): admin host port
        admin_vcon (string): ["1", "2", "3", "4", "any"]
        stats_policy_name (string): stats policy name
        admin_cdn_name (string): admin cdn name
        switch_id (string): ["A", "A-B", "B", "B-A", "NONE"]
        pin_to_group_name (string): pin to group name
        vnic_name (string): vnic name
        qos_policy_name (string): qos policy name
        adaptor_profile_name (string): adaptor profile name
        ident_pool_name (string): ident pool name
        order (string):["unspecified"], ["0-256"]
        nw_templ_name (string): network template name
        vlan_name (string): vlan name

    Returns:
        VnicIScsiLCP: Managed Object

    Raises:
        ValueError: If VnicLanConnPolicy object is not present

    Example:
        add_vnic_iscsi(handle, name="sample-vnic-iscsi",
                    parent_dn="org-root/lan-conn-pol-samp_conn_pol")

    """

    from ucsmsdk.mometa.vnic.VnicIScsiLCP import VnicIScsiLCP
    from ucsmsdk.mometa.vnic.VnicVlan import VnicVlan

    obj = handle.query_dn(parent_dn)
    if obj:
        mo = VnicIScsiLCP(parent_mo_or_dn=obj,
                          addr=addr,
                          admin_host_port=admin_host_port,
                          admin_vcon=admin_vcon,
                          stats_policy_name=stats_policy_name,
                          admin_cdn_name=admin_cdn_name,
                          switch_id=switch_id,
                          pin_to_group_name=pin_to_group_name,
                          vnic_name=vnic_name,
                          qos_policy_name=qos_policy_name,
                          adaptor_profile_name=adaptor_profile_name,
                          ident_pool_name=ident_pool_name,
                          order=order,
                          nw_templ_name=nw_templ_name,
                          name=name)

        VnicVlan(parent_mo_or_dn=mo, name="", vlan_name=vlan_name)

        handle.add_mo(mo)
        handle.commit()
        return mo
    else:
        raise ValueError(parent_dn + " MO is not available")
Ejemplo n.º 3
0
def add_vnic_iscsi(handle, parent_dn, name, addr="derived", admin_host_port="ANY",
                     admin_vcon="any", stats_policy_name="default", admin_cdn_name="",
                     switch_id="A", pin_to_group_name="", vnic_name="", qos_policy_name="",
                     adaptor_profile_name="", ident_pool_name="", order="unspecified",
                     nw_templ_name="", vlan_name="default"):

    """
    Adds iSCSI vNIC to LAN Connectivity Policy

    Args:
        handle
        parent_dn
        name
        addr
        admin_host_port
        admin_vcon
        stats_policy_name
        admin_cdn_name
        switch_id
        pin_to_group_name
        vnic_name
        qos_policy_name
        adaptor_profile_name
        ident_pool_name
        order
        nw_templ_name
        vlan_name

    Returns:
        None

    Example:

    """

    from ucsmsdk.mometa.vnic.VnicIScsiLCP import VnicIScsiLCP
    from ucsmsdk.mometa.vnic.VnicVlan import VnicVlan

    obj = handle.query_dn(parent_dn)
    if obj:
        mo_1 = VnicIScsiLCP(parent_mo_or_dn=obj,
                            addr=addr,
                            admin_host_port=admin_host_port,
                            admin_vcon=admin_vcon,
                            stats_policy_name=stats_policy_name,
                            admin_cdn_name=admin_cdn_name,
                            switch_id=switch_id,
                            pin_to_group_name=pin_to_group_name,
                            vnic_name=vnic_name,
                            qos_policy_name=qos_policy_name,
                            adaptor_profile_name=adaptor_profile_name,
                            ident_pool_name=ident_pool_name,
                            order=order,
                            nw_templ_name=nw_templ_name,
                            name=name)

        mo_1_1 = VnicVlan(parent_mo_or_dn=mo_1, name="", vlan_name=vlan_name)

        handle.add_mo(mo_1)
        handle.commit()
    else:
        log.info(parent_dn + " MO is not available")