def get_all_objs(self, content, types, confine_to_datacenter=True): """ Wrapper around get_all_objs to set datacenter context """ objects = get_all_objs(content, types) if confine_to_datacenter: if hasattr(objects, 'items'): # resource pools come back as a dictionary for k, v in objects.items(): parent_dc = get_parent_datacenter(k) if parent_dc.name != self.dc_name: objects.pop(k, None) else: # everything else should be a list objects = [x for x in objects if get_parent_datacenter(x).name == self.dc_name] return objects
def get_all_objs(self, content, types, confine_to_datacenter=True): """ Wrapper around get_all_objs to set datacenter context """ objects = get_all_objs(content, types) if confine_to_datacenter: if hasattr(objects, 'items'): # resource pools come back as a dictionary for k, v in tuple(objects.items()): parent_dc = get_parent_datacenter(k) if parent_dc.name != self.dc_name: del objects[k] else: # everything else should be a list objects = [x for x in objects if get_parent_datacenter(x).name == self.dc_name] return objects
def sanitize_network_params(self): network_list = [] valid_state = ['new', 'present', 'absent'] if len(self.params['networks']) != 0: for network in self.params['networks']: if 'state' not in network or network['state'].lower() not in valid_state: self.module.fail_json(msg="Network adapter state not specified or invalid: '%s', valid values: " "%s" % (network.get('state', ''), valid_state)) # add new network adapter but no name specified if network['state'].lower() == 'new' and 'name' not in network and 'vlan' not in network: self.module.fail_json(msg="Please specify at least network name or VLAN name for adding new network adapter.") if network['state'].lower() == 'new' and 'mac' in network: self.module.fail_json(msg="networks.mac is used for vNIC reconfigure, but networks.state is set to 'new'.") if network['state'].lower() == 'present' and 'mac' not in network and 'label' not in network and 'device_type' not in network: self.module.fail_json(msg="Should specify 'mac', 'label' or 'device_type' parameter to reconfigure network adapter") if 'connected' in network: if not isinstance(network['connected'], bool): self.module.fail_json(msg="networks.connected parameter should be boolean.") if network['state'].lower() == 'new' and not network['connected']: network['start_connected'] = False if 'start_connected' in network: if not isinstance(network['start_connected'], bool): self.module.fail_json(msg="networks.start_connected parameter should be boolean.") if network['state'].lower() == 'new' and not network['start_connected']: network['connected'] = False # specified network does not exist if 'name' in network and not self.network_exists_by_name(network['name']): self.module.fail_json(msg="Network '%(name)s' does not exist." % network) elif 'vlan' in network: objects = get_all_objs(self.content, [vim.dvs.DistributedVirtualPortgroup]) dvps = [x for x in objects if to_text(get_parent_datacenter(x).name) == to_text(self.params['datacenter'])] for dvp in dvps: if hasattr(dvp.config.defaultPortConfig, 'vlan') and \ isinstance(dvp.config.defaultPortConfig.vlan.vlanId, int) and \ str(dvp.config.defaultPortConfig.vlan.vlanId) == str(network['vlan']): network['name'] = dvp.config.name break if 'dvswitch_name' in network and \ dvp.config.distributedVirtualSwitch.name == network['dvswitch_name'] and \ dvp.config.name == network['vlan']: network['name'] = dvp.config.name break if dvp.config.name == network['vlan']: network['name'] = dvp.config.name break else: self.module.fail_json(msg="VLAN '%(vlan)s' does not exist." % network) if 'device_type' in network and network['device_type'] not in list(self.nic_device_type.keys()): self.module.fail_json(msg="Device type specified '%s' is invalid. " "Valid types %s " % (network['device_type'], list(self.nic_device_type.keys()))) if ('mac' in network and not is_mac(network['mac'])) or \ ('manual_mac' in network and not is_mac(network['manual_mac'])): self.module.fail_json(msg="Device MAC address '%s' or manual set MAC address %s is invalid. " "Please provide correct MAC address." % (network['mac'], network['manual_mac'])) network_list.append(network) return network_list
def generate_http_access_url(self, file_path): # e.g., file_path is like this format: [datastore0] test_vm/test_vm-1.png # from file_path generate URL url_path = None if not file_path: return url_path path = "/folder/%s" % quote(file_path.split()[1]) params = dict(dsName=file_path.split()[0].strip('[]')) if not self.is_vcenter(): datacenter = 'ha-datacenter' else: datacenter = get_parent_datacenter( self.current_vm_obj).name.replace('&', '%26') params['dcPath'] = datacenter url_path = "https://%s%s?%s" % (self.params['hostname'], path, urlencode(params)) return url_path