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, ""
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)
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
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)
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)
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}", ""