Exemple #1
0
def createServers(handle, hosts, org):
    print "Creating Kubernetes Service Profiles"
    from ucsmsdk.ucsmethodfactory import ls_instantiate_n_named_template
    from ucsmsdk.ucsbasetype import DnSet, Dn

    for i, s in enumerate(hosts):
        dn_set = DnSet()
        dn = Dn()
        sp_name = s["name"]
        dn.attr_set("value",sp_name)
        dn_set.child_add(dn)
        elem = ls_instantiate_n_named_template(cookie=handle.cookie, 
            dn=org + "/ls-Kubernetes", 
            in_error_on_existing="true", 
            in_name_set=dn_set,     
            in_target_org=org, 
            in_hierarchical="false")
        try:
            mo_list = handle.process_xml_elem(elem)
        except UcsException as err:
            if err.error_code == "105":
                print "\t" + sp_name + " already exists."
            else:
                return 1, err.error_descr
    return 0, ""
Exemple #2
0
    def create_server(handle, template, host_name, org):
        """
        Create a new service profile from a template that already exist.
        """

        err, msg = UCSServer.check_org(template, org)
        if err != 0:
            return 1, msg


        from ucsmsdk.ucsmethodfactory import ls_instantiate_n_named_template
        from ucsmsdk.ucsbasetype import DnSet, Dn
        dn_set = DnSet()
        dn = Dn()
        dn.attr_set("value", host_name)
        dn_set.child_add(dn)
        elem = ls_instantiate_n_named_template(
            cookie=handle.cookie, dn=template, in_error_on_existing="true", 
            in_name_set=dn_set, in_target_org=org, in_hierarchical="false"
        )

        try: 
            handle.process_xml_elem(elem)
        except UcsException as err:
            if err.error_code == "105":
                print "\tSP {0} already exists.".format(host_name)
            else:
                return 1, err.error_descr
        return 0, None
def sp_create_from_template(handle,
                            naming_prefix,
                            name_suffix_starting_number,
                            number_of_instance,
                            sp_template_name,
                            in_error_on_existing="true",
                            parent_dn="org-root"):
    """
    This method instantiate Service profile from a template.

    Args:
        handle (UcsHandle)
        org_name (string): Name of the organization
        naming_prefix (string): Suffix name of service profile.
        name_suffix_starting_number (string): Starting Number for Suffix
        number_of_instance (string): Total number of instances to be created.
        sp_template_name (string): SP template name.
        in_error_on_existing (string): "true" or "false"
        parent_dn (string): Parent of Org.

    Returns:
        None or List of LsServer Objects

    Raises:
        ValueError: If LsServer is not present

    Example:
        sp_create_from_template(handle, org_name="sample-org",
                     naming_prefix="sample_sp",name_suffix_starting_number="1",
                     number_of_instance="3",sp_template_name="sample_temp",
                     in_error_on_existing="true")

    """

    from ucsmsdk.ucsmethodfactory import ls_instantiate_n_named_template
    from ucsmsdk.ucsbasetype import DnSet, Dn

    sp_template_dn = parent_dn + "/ls-" + sp_template_name
    mo = handle.query_dn(sp_template_dn)
    if not mo:
        raise ValueError("SP template does not exist.")

    dn_set = DnSet()
    for num in range(
            int(name_suffix_starting_number),
            int(number_of_instance) + int(name_suffix_starting_number)):
        dn = Dn()
        sp_name = naming_prefix + str(num)
        dn.attr_set("value", sp_name)
        dn_set.child_add(dn)

    elem = ls_instantiate_n_named_template(
        cookie=handle.cookie,
        dn=sp_template_dn,
        in_error_on_existing=in_error_on_existing,
        in_name_set=dn_set,
        in_target_org=parent_dn)
    return handle.process_xml_elem(elem)
def sp_create_from_template(handle,
                            naming_prefix,
                            name_suffix_starting_number,
                            number_of_instance,
                            sp_template_name,
                            in_error_on_existing="true",
                            parent_dn="org-root"):
    """
    This method instantiate Service profile from a template.

    Args:
        handle (UcsHandle)
        org_name (string): Name of the organization
        naming_prefix (string): Suffix name of service profile.
        name_suffix_starting_number (string): Starting Number for Suffix
        number_of_instance (string): Total number of instances to be created.
        sp_template_name (string): SP template name.
        in_error_on_existing (string): "true" or "false"
        parent_dn (string): Parent of Org.

    Returns:
        None or List of LsServer Objects

    Raises:
        ValueError: If LsServer is not present

    Example:
        sp_create_from_template(handle, org_name="sample-org",
                     naming_prefix="sample_sp",name_suffix_starting_number="1",
                     number_of_instance="3",sp_template_name="sample_temp",
                     in_error_on_existing="true")

    """

    from ucsmsdk.ucsmethodfactory import ls_instantiate_n_named_template
    from ucsmsdk.ucsbasetype import DnSet, Dn

    sp_template_dn = parent_dn + "/ls-" + sp_template_name
    mo = handle.query_dn(sp_template_dn)
    if not mo:
        raise ValueError("SP template does not exist.")

    dn_set = DnSet()
    for num in range(int(name_suffix_starting_number),
                     int(number_of_instance) +
                     int(name_suffix_starting_number)):
        dn = Dn()
        sp_name = naming_prefix + str(num)
        dn.attr_set("value", sp_name)
        dn_set.child_add(dn)

    elem = ls_instantiate_n_named_template(
        cookie=handle.cookie,
        dn=sp_template_dn,
        in_error_on_existing=in_error_on_existing,
        in_name_set=dn_set,
        in_target_org=parent_dn)
    return handle.process_xml_elem(elem)
Exemple #5
0
def main():
    handle = UcsHandle("192.168.254.200","ucspe","ucspe", secure=False)
    handle.login()

    # Query Blades that are unassociated
    print("\n\n=== Query Based on Class Name with Filter equal to")
    filter = "(oper_state,'unassociated',type='eq')".format(BLADE_MODEL)
    blades = handle.query_classid("computeBlade",filter_str=filter)
    print("***Found {} Blades".format(len(blades)))

    # Error Check for available blades
    if len(blades) < NUM_SP:
        error = "There are only {} blades left to associate, and you asked for {} Servers to be generated".format(len(blades),NUM_SP)
        raise NameError(error)
        
    # Setup Variable for SP Templates to be deployed
    dn_set = DnSet()
    for i in range(1, NUM_SP+1):
        dn = Dn()
        sp_name = "SP{}".format(str(i))
        dn.attr_set("value", sp_name)
        dn_set.child_add(dn)

    # Build XML Object to submit to the API
    templates = ls_instantiate_n_named_template(
        cookie=handle.cookie,
        dn="org-root/ls-globotemplate",
        in_target_org="org-root",
        in_error_on_existing="false",
        in_name_set=dn_set
        )

    # Send XML Object to xml process handler
    sp_list = handle.process_xml_elem(templates)

    # Loop through each created sp, and associate them to blades
    i = 0
    while i < len(sp_list):
        sp = sp_list[i]
        blade = blades[i]

        # Print SP and Blade Combination
        print(sp.dn,blade.dn)

        # Get Binding Object
        mo = LsBinding(
            parent_mo_or_dn=sp.dn,
            pn_dn=blade.dn,
            restrict_migration="no"
            )
        
        # Add MO Binding Object to handler
        handle.add_mo(mo,modify_present=True)
        i=i+1

    # Bundle the SP Associates
    handle.commit()
def create_sp_from_template():
    import ucsmsdk.ucsmethodfactory as mf
    from ucsmsdk.ucsbasetype import DnSet, Dn

    dn_set = DnSet()
    dn_set.child_add(Dn(value="sp_from_template1"))
    dn_set.child_add(Dn(value="sp_from_template2"))
    xml_element = mf.ls_instantiate_n_named_template(
        cookie=handle.cookie,
        dn="org-root/ls-test_sp_template",
        in_error_on_existing="true",
        in_name_set=dn_set,
        in_target_org="org-root",
        in_hierarchical="YesOrNo.FALSE")
    mo_list = handle.process_xml_element(xml_element)

    return mo_list
Exemple #7
0
def main():
    handle = UcsHandle("192.168.254.200", "ucspe", "ucspe", secure=False)
    handle.login()

    # Setup Variable for SP Templates to be deployed
    dn_set = DnSet()
    for i in range(1, NUM_SP + 1):
        dn = Dn()
        sp_name = "SP{}".format(str(i))
        dn.attr_set("value", sp_name)
        dn_set.child_add(dn)

    # Build XML Object to submit to the API
    templates = ls_instantiate_n_named_template(cookie=handle.cookie,
                                                dn="org-root/ls-globotemplate",
                                                in_target_org="org-root",
                                                in_error_on_existing="false",
                                                in_name_set=dn_set)

    # Send XML Object to xml process handler
    mo_list = handle.process_xml_elem(templates)

    for mo in mo_list:
        print(mo.dn)
Exemple #8
0
def sp_create_from_template(ucs_handle,
                            naming_prefix,
                            name_suffix_starting_number,
                            number_of_instance,
                            sp_template_name,
                            in_error_on_existing="true",
                            parent_dn="org-root"):
    """
    This method instantiate Service profile from a template.

    Args:
        ucs_handle (ucs_handle)
        naming_prefix (string): Suffix name of service profile.
        name_suffix_starting_number (string): Starting Number for Suffix
        number_of_instance (string): Total number of instances to be created.
        sp_template_name (string): SP template name.
        in_error_on_existing (string): "true" or "false"
        parent_dn (string): Org dn in which service profile template resides.

    Returns:
        None or List of LsServer Objects

    Raises:
        ValueError: If LsServer is not present

    Example:
        sp_create_from_template(ucs_handle, naming_prefix="sample_sp",
                                name_suffix_starting_number="1",
                                number_of_instance="3",
                                sp_template_name="sample_temp",
                                in_error_on_existing="true",
                                parent_dn="org-root/ls-org_sample")

    """

    import os

    from ucsmsdk.ucsmethodfactory import ls_instantiate_n_named_template
    from ucsmsdk.ucsbasetype import DnSet, Dn

    mo = None
    org_dn = parent_dn
    while mo is None:
        sp_template_dn = org_dn + "/ls-" + sp_template_name
        mo = ucs_handle.query_dn(sp_template_dn)
        if mo:
            break
        elif not mo and org_dn == 'org-root':
            raise ValueError("SP template does not exist.")
        org_dn = os.path.dirname(org_dn)

    dn_set = DnSet()
    for num in range(int(name_suffix_starting_number),
                     int(number_of_instance) +
                     int(name_suffix_starting_number)):
        dn = Dn()
        sp_name = naming_prefix + str(num)
        dn.attr_set("value", sp_name)
        dn_set.child_add(dn)

    elem = ls_instantiate_n_named_template(
        cookie=ucs_handle.cookie,
        dn=sp_template_dn,
        in_error_on_existing=in_error_on_existing,
        in_name_set=dn_set,
        in_target_org=parent_dn)
    return ucs_handle.process_xml_elem(elem)
Exemple #9
0
def run(job, resource, *args, **kwargs):
    username = conn.username
    password = conn.password

    organization = "{{ organization }}"
    service_profile_template = "{{ service_profile_template }}"
    create_sp_from_sp_template = "{{ create_sp_from_sp_template }}"
    service_profile_name = "{{ service_profile_name }}"
    service_profile_description = "{{ service_profile_description }}"
    use_blade_servers = "{{ use_blade_servers }}"
    chassis = "{{ chassis }}"
    ucs_server_dn = "{{ ucs_server_dn }}"
    ucs_rack_server = "{{ rack_server }}"
    mac_pool_name = "{{ mac_pool_name }}"

    service_profile_server_dn, _ = CustomField.objects.get_or_create(
        name="service_profile_server_dn",
        label="Service Profile Server DN",
        type="STR",
        show_on_servers=True)

    handler.login()
    ucs_event_handler = UcsEventHandle(handler)

    # create SP in an org
    set_progress(f"Creating service profile named {service_profile_name}")
    if create_sp_from_sp_template == "True":
        dn_set = ucscbasetype.DnSet()
        dn_set.child_add(Dn(value=f"{service_profile_name}"))

        xml_element = mf.ls_instantiate_n_named_template(
            cookie=handler.cookie,
            dn=service_profile_template,
            in_error_on_existing="true",
            in_name_set=dn_set,
            in_target_org=organization)
        handler.process_xml_elem(xml_element)
    else:
        mo = LsServer(parent_mo_or_dn=organization,
                      vmedia_policy_name="",
                      ext_ip_state="none",
                      bios_profile_name="",
                      mgmt_fw_policy_name="",
                      agent_policy_name="",
                      mgmt_access_policy_name="",
                      dynamic_con_policy_name="",
                      kvm_mgmt_policy_name="",
                      sol_policy_name="",
                      uuid="0",
                      descr=service_profile_description,
                      stats_policy_name="default",
                      policy_owner="local",
                      ext_ip_pool_name="ext-mgmt",
                      boot_policy_name="",
                      usr_lbl="",
                      host_fw_policy_name="",
                      vcon_profile_name="",
                      ident_pool_name="",
                      src_templ_name="",
                      local_disk_policy_name="",
                      scrub_policy_name="",
                      power_policy_name="default",
                      maint_policy_name="",
                      name=service_profile_name,
                      resolve_remote="yes")
        mo_1 = LsbootDef(parent_mo_or_dn=mo,
                         descr="",
                         reboot_on_update="no",
                         adv_boot_order_applicable="no",
                         policy_owner="local",
                         enforce_vnic_name="yes",
                         boot_mode="legacy")
        mo_1_1 = LsbootStorage(parent_mo_or_dn=mo_1, order="1")
        mo_1_1_1 = LsbootLocalStorage(parent_mo_or_dn=mo_1_1, )
        mo_1_1_1_1 = LsbootDefaultLocalImage(parent_mo_or_dn=mo_1_1_1,
                                             order="1")
        mo_2 = VnicEther(parent_mo_or_dn=mo,
                         nw_ctrl_policy_name="",
                         name="eth0",
                         admin_host_port="ANY",
                         admin_vcon="any",
                         stats_policy_name="default",
                         admin_cdn_name="",
                         switch_id="A",
                         pin_to_group_name="",
                         mtu="1500",
                         qos_policy_name="",
                         adaptor_profile_name="",
                         ident_pool_name=mac_pool_name,
                         order="unspecified",
                         nw_templ_name="",
                         addr="derived")
        mo_2_1 = VnicEtherIf(parent_mo_or_dn=mo_2,
                             default_net="yes",
                             name="default")
        mo_3 = VnicFcNode(parent_mo_or_dn=mo,
                          ident_pool_name="",
                          addr="pool-derived")
        handler.add_mo(mo)

    # Associate a server to a service profile.
    if use_blade_servers == "True":
        set_progress(
            f"Associating service profile {service_profile_name} with {ucs_server_dn}"
        )
        mo = LsBinding(
            parent_mo_or_dn=f"{organization}/ls-{service_profile_name}",
            pn_dn=ucs_server_dn,
            restrict_migration="no")
    else:
        set_progress(
            f"Associating service profile {service_profile_name} with {ucs_rack_server}"
        )
        mo = LsBinding(
            parent_mo_or_dn=f"{organization}/ls-{service_profile_name}",
            pn_dn=ucs_rack_server,
            restrict_migration="no")

    handler.add_mo(mo)
    handler.commit()
    mo = handler.query_dn(f"{organization}/ls-{service_profile_name}")

    # Save the service profile dn
    resource.service_profile_server_dn = f"{organization}/ls-{service_profile_name}"
    resource.name = service_profile_name
    resource.save()

    return "SUCCESS", f"Created service profile named {service_profile_name}", ""