def __create_vimobj_ref(self, vc_href, pg_moref, pg_type): """Creates the VimObjectRef.""" vim_object_ref = E_VMEXT.VimObjectRef() vim_object_ref.append(E_VMEXT.VimServerRef(href=vc_href)) vim_object_ref.append(E_VMEXT.MoRef(pg_moref)) vim_object_ref.append(E_VMEXT.VimObjectType(pg_type)) return vim_object_ref
def create_provider_vdc(self, vim_server_name, resource_pool_names, storage_profiles, pvdc_name, is_enabled=None, description=None, highest_hw_vers=None, vxlan_network_pool=None, nsxt_manager_name=None): """Create a Provider Virtual Datacenter. :param str vim_server_name: vim_server_name (VC name). :param list resource_pool_names: list of resource_pool_names. :param list storage_profiles: (list): list of storageProfile names. :param str pvdc_name: name of PVDC to be created. :param bool is_enabled: flag, True to enable and False to disable. :param str description: description of pvdc. :param str highest_hw_vers: highest supported hw version number. :param str vxlan_network_pool: name of vxlan_network_pool. :param str nsxt_manager_name: name of nsx-t manager. :return: an object containing vmext:VMWProviderVdc XML element that represents the new provider VDC. :rtype: lxml.objectify.ObjectifiedElement """ vc_record = self.get_vcenter(vim_server_name) vc_href = vc_record.get('href') rp_morefs = self.get_resource_pool_morefs(vc_href, resource_pool_names) vmw_prov_vdc_params = E_VMEXT.VMWProviderVdcParams(name=pvdc_name) if description is not None: vmw_prov_vdc_params.append(E.Description(description)) resource_pool_refs = E_VMEXT.ResourcePoolRefs() for rp_moref in rp_morefs: vim_object_ref = E_VMEXT.VimObjectRef() vim_object_ref.append(E_VMEXT.VimServerRef(href=vc_href)) vim_object_ref.append(E_VMEXT.MoRef(rp_moref)) vim_object_ref.append(E_VMEXT.VimObjectType('RESOURCE_POOL')) resource_pool_refs.append(vim_object_ref) vmw_prov_vdc_params.append(resource_pool_refs) vmw_prov_vdc_params.append(E_VMEXT.VimServer(href=vc_href)) if vxlan_network_pool is not None: network_pool_rec = self.get_ref_by_name(ResourceType.NETWORK_POOL, vxlan_network_pool) vx_href = network_pool_rec.get('href') vmw_prov_vdc_params.append(E_VMEXT.VxlanNetworkPool(href=vx_href)) if nsxt_manager_name is not None: nsxt_manager_rec = self.get_ref_by_name(ResourceType.NSXT_MANAGER, nsxt_manager_name) nsxt_href = nsxt_manager_rec.get('href') vmw_prov_vdc_params.append( E_VMEXT.NsxTManagerReference(href=nsxt_href)) if highest_hw_vers is not None: vmw_prov_vdc_params.append( E_VMEXT.HighestSupportedHardwareVersion(highest_hw_vers)) if is_enabled is not None: vmw_prov_vdc_params.append(E_VMEXT.IsEnabled(is_enabled)) for storage_profile in storage_profiles: vmw_prov_vdc_params.append(E_VMEXT.StorageProfile(storage_profile)) random_username_suffix = uuid.uuid4().hex default_user = '******' + random_username_suffix[:8] default_pwd = 'PWD' + random_username_suffix[:8] vmw_prov_vdc_params.append(E_VMEXT.DefaultPassword(default_pwd)) vmw_prov_vdc_params.append(E_VMEXT.DefaultUsername(default_user)) return self.client.post_linked_resource( self.extension.get_resource(), rel=RelationType.ADD, media_type=EntityType.PROVIDER_VDC_PARAMS.value, contents=vmw_prov_vdc_params)
def create_external_network(self, name, vim_server_name, port_group_names, gateway_ip, netmask, ip_ranges, description=None, primary_dns_ip=None, secondary_dns_ip=None, dns_suffix=None): """Create an external network. :param str name: name of external network to be created. :param str vim_server_name: VIM server_name (VC name). :param list port_group_names: list of port group names. :param str gateway_ip: IP address of the gateway of the new network. :param str netmask: Netmask of the gateway. :param list ip_ranges: list of IP ranges used for static pool allocation in the network. For example, [192.168.1.2-192.168.1.49, 192.168.1.100-192.168.1.149]. :param str description: description of external network. :param str primary_dns_ip: IP address of primary DNS server. :param str secondary_dns_ip: IP address of secondary DNS Server. :param str dns_suffix: DNS suffix. :return: an object containing vmext:VMWExternalNetwork XML element that represents the new external network. :rtype: lxml.objectify.ObjectifiedElement """ vc_record = self.get_vcenter(vim_server_name) vc_href = vc_record.get('href') pg_morefs = self.get_port_group_morefs(port_group_names) vmw_external_network = E_VMEXT.VMWExternalNetwork(name=name) if description is not None: vmw_external_network.append(E.Description(description)) config = E.Configuration() ip_scopes = E.IpScopes() ip_scope = E.IpScope() ip_scope.append(E.IsInherited(False)) ip_scope.append(E.Gateway(gateway_ip)) ip_scope.append(E.Netmask(netmask)) if primary_dns_ip is not None: ip_scope.append(E.Dns1(primary_dns_ip)) if secondary_dns_ip is not None: ip_scope.append(E.Dns2(secondary_dns_ip)) if dns_suffix is not None: ip_scope.append(E.DnsSuffix(dns_suffix)) e_ip_ranges = E.IpRanges() for ip_range in ip_ranges: e_ip_range = E.IpRange() ip_range_token = ip_range.split('-') e_ip_range.append(E.StartAddress(ip_range_token[0])) e_ip_range.append(E.EndAddress(ip_range_token[1])) e_ip_ranges.append(e_ip_range) ip_scope.append(e_ip_ranges) ip_scopes.append(ip_scope) config.append(ip_scopes) config.append(E.FenceMode(FenceMode.ISOLATED.value)) vmw_external_network.append(config) vim_port_group_refs = E_VMEXT.VimPortGroupRefs() for pg_moref in pg_morefs: vim_object_ref = E_VMEXT.VimObjectRef() vim_object_ref.append(E_VMEXT.VimServerRef(href=vc_href)) vim_object_ref.append(E_VMEXT.MoRef(pg_moref[0])) vim_object_ref.append(E_VMEXT.VimObjectType(pg_moref[1])) vim_port_group_refs.append(vim_object_ref) vmw_external_network.append(vim_port_group_refs) return self.client.post_linked_resource( self.extension.get_resource(), rel=RelationType.ADD, media_type=EntityType.EXTERNAL_NETWORK.value, contents=vmw_external_network)
def create_provider_vdc(self, vim_server_name, resource_pool_names, storage_profiles, pvdc_name, is_enabled=None, description=None, highest_hw_vers=None, vxlan_network_pool=None): """Create a Provider Virtual Datacenter. :param: vim_server_name: (str): vim_server_name (VC name). :param: resource_pool_names: (list): list of resource_pool_names. :param: storage_profiles: (list): list of storageProfile namespace. :param: pvdc_name: (str): name of PVDC to be created. :param: is_enabled: (boolean): enable flag. :param: description: (str): description of pvdc. :param: highest_hw_vers: (str): highest supported hw vers number. :param: vxlan_network_pool: (str): name of vxlan_network_pool. :return: A :class:lxml.objectify.StringElement object describing the : new provider VDC. """ vc_record = self.get_vcenter(vim_server_name) vc_href = vc_record.get('href') rp_morefs = self.get_resource_pool_morefs(vim_server_name, vc_href, resource_pool_names) vmw_prov_vdc_params = E_VMEXT.VMWProviderVdcParams(name=pvdc_name) if description is not None: vmw_prov_vdc_params.append(E.Description(description)) resource_pool_refs = E_VMEXT.ResourcePoolRefs() for rp_moref in rp_morefs: vim_object_ref = E_VMEXT.VimObjectRef() vim_object_ref.append(E_VMEXT.VimServerRef(href=vc_href)) vim_object_ref.append(E_VMEXT.MoRef(rp_moref)) vim_object_ref.append(E_VMEXT.VimObjectType('RESOURCE_POOL')) resource_pool_refs.append(vim_object_ref) vmw_prov_vdc_params.append(resource_pool_refs) vmw_prov_vdc_params.append(E_VMEXT.VimServer(href=vc_href)) if vxlan_network_pool is not None: vxlan_network_pool_record = self.get_vxlan_network_pool( vxlan_network_pool) vx_href = vxlan_network_pool_record.get('href') vmw_prov_vdc_params.append(E_VMEXT.VxlanNetworkPool( href=vx_href)) if highest_hw_vers is not None: vmw_prov_vdc_params.append( E_VMEXT.HighestSupportedHardwareVersion(highest_hw_vers)) if is_enabled is not None: vmw_prov_vdc_params.append(E_VMEXT.IsEnabled(is_enabled)) for storage_profile in storage_profiles: vmw_prov_vdc_params.append(E_VMEXT.StorageProfile( storage_profile)) random_username_suffix = uuid.uuid4().hex default_user = '******' + random_username_suffix[:8] default_pwd = 'PWD' + random_username_suffix[:8] vmw_prov_vdc_params.append(E_VMEXT.DefaultPassword(default_pwd)) vmw_prov_vdc_params.append(E_VMEXT.DefaultUsername(default_user)) return self.client.post_linked_resource(self.extension.get_resource(), rel=RelationType.ADD, media_type=EntityType. PROVIDER_VDC_PARAMS.value, contents=vmw_prov_vdc_params)