def test_required_params(request, params, msg, fake_ansible_module): """ Test if required params are correct or not""" fake_ansible_module.params = params with pytest.raises(FailJsonException): vmware_module_utils.connect_to_api(fake_ansible_module) assert fake_ansible_module.fail_json.called_once() assert msg in fake_ansible_module.fail_json.call_args[1]['msg']
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict(vmk_name=dict(required=True, type='str'), ip_address=dict(required=True, type='str'), subnet_mask=dict(required=True, type='str'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') vmk_name = module.params['vmk_name'] ip_address = module.params['ip_address'] subnet_mask = module.params['subnet_mask'] try: content = connect_to_api(module, False) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed = configure_vmkernel_ip_address(host_system, vmk_name, ip_address, subnet_mask) module.exit_json(changed=changed) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(target_id=dict(required=True, type='int'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') content = connect_to_api(module) host = find_hostsystem(content) target_lun_uuid = {} scsilun_canonical = {} # Associate the scsiLun key with the canonicalName (NAA) for scsilun in host.config.storageDevice.scsiLun: scsilun_canonical[scsilun.key] = scsilun.canonicalName # Associate target number with LUN uuid for target in host.config.storageDevice.scsiTopology.adapter[0].target: for lun in target.lun: target_lun_uuid[target.target] = lun.scsiLun module.exit_json(changed=False, canonical=scsilun_canonical[target_lun_uuid[module.params['target_id']]])
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(vmk_name=dict(required=True, type='str'), ip_address=dict(required=True, type='str'), subnet_mask=dict(required=True, type='str'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') vmk_name = module.params['vmk_name'] ip_address = module.params['ip_address'] subnet_mask = module.params['subnet_mask'] try: content = connect_to_api(module, False) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed = configure_vmkernel_ip_address(host_system, vmk_name, ip_address, subnet_mask) module.exit_json(changed=changed) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def __init__(self, module): self.module = module self.content = connect_to_api(self.module) self.local_user_name = self.module.params['local_user_name'] self.local_user_password = self.module.params['local_user_password'] self.local_user_description = self.module.params['local_user_description'] self.state = self.module.params['state']
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(cluster_uuid=dict(required=False, type='str'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') new_cluster_uuid = module.params['cluster_uuid'] try: content = connect_to_api(module, False) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed, result, cluster_uuid = create_vsan_cluster( host_system, new_cluster_uuid) module.exit_json(changed=changed, result=result, cluster_uuid=cluster_uuid) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict(change_hostname_to=dict(required=True, type='str'), domainname=dict(required=True, type='str'), dns_servers=dict(required=True, type='list'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') change_hostname_to = module.params['change_hostname_to'] domainname = module.params['domainname'] dns_servers = module.params['dns_servers'] try: content = connect_to_api(module) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed = configure_dns(host_system, change_hostname_to, domainname, dns_servers) module.exit_json(changed=changed) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def __init__(self, module): self.module = module self.dvs_portgroup = None self.switch_name = self.module.params['switch_name'] self.portgroup_name = self.module.params['portgroup_name'] self.vlan_id = self.module.params['vlan_id'] self.num_ports = self.module.params['num_ports'] self.portgroup_type = self.module.params['portgroup_type'] self.dv_switch = None self.state = self.module.params['state'] self.vlan_trunk = self.module.params['vlan_trunk'] self.security_promiscuous = self.module.params['network_policy']['promiscuous'] self.security_forged_transmits = self.module.params['network_policy']['forged_transmits'] self.security_mac_changes = self.module.params['network_policy']['mac_changes'] self.policy_block_override = self.module.params['port_policy']['block_override'] self.policy_ipfix_override = self.module.params['port_policy']['ipfix_override'] self.policy_live_port_move = self.module.params['port_policy']['live_port_move'] self.policy_network_rp_override = self.module.params['port_policy']['network_rp_override'] self.policy_port_config_reset_at_disconnect = self.module.params['port_policy']['port_config_reset_at_disconnect'] self.policy_security_override = self.module.params['port_policy']['security_override'] self.policy_shaping_override = self.module.params['port_policy']['shaping_override'] self.policy_traffic_filter_override = self.module.params['port_policy']['traffic_filter_override'] self.policy_uplink_teaming_override = self.module.params['port_policy']['uplink_teaming_override'] self.policy_vendor_config_override = self.module.params['port_policy']['vendor_config_override'] self.policy_vlan_override = self.module.params['port_policy']['vlan_override'] self.content = connect_to_api(module)
def __init__(self, module): if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi module required') self.module = module self.params = module.params self.content = connect_to_api(self.module)
def main(): spec = vmware_argument_spec() spec.update(dict( esxi_hostname=dict(required=True), vsan=dict(required=False, choices=['ensureObjectAccessibility', 'evacuateAllData', 'noAction']), evacuate=dict(required=False, type='bool', default=False), timeout=dict(required=False, default=0, type='int'), state=dict(required=False, default='present', choices=['present', 'absent']))) module = AnsibleModule(argument_spec=spec) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') content = connect_to_api(module) host = find_hostsystem_by_name(content, module.params['esxi_hostname']) if not host: module.fail_json( msg='Host not found in vCenter') if module.params['state'] == 'present': result = EnterMaintenanceMode(module, host) elif module.params['state'] == 'absent': result = ExitMaintenanceMode(module, host) module.exit_json(**result)
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(target_id=dict(required=True, type='int'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') content = connect_to_api(module) host = find_hostsystem(content) target_lun_uuid = {} scsilun_canonical = {} # Associate the scsiLun key with the canonicalName (NAA) for scsilun in host.config.storageDevice.scsiLun: scsilun_canonical[scsilun.key] = scsilun.canonicalName # Associate target number with LUN uuid for target in host.config.storageDevice.scsiTopology.adapter[0].target: for lun in target.lun: target_lun_uuid[target.target] = lun.scsiLun module.exit_json(changed=False, canonical=scsilun_canonical[target_lun_uuid[ module.params['target_id']]])
def __init__(self, module): if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi module required') self.module = module self.params = module.params self.content = connect_to_api(self.module)
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(change_hostname_to=dict(required=True, type='str'), domainname=dict(required=True, type='str'), dns_servers=dict(required=True, type='list'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') change_hostname_to = module.params['change_hostname_to'] domainname = module.params['domainname'] dns_servers = module.params['dns_servers'] try: content = connect_to_api(module) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed = configure_dns(host_system, change_hostname_to, domainname, dns_servers) module.exit_json(changed=changed) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(cluster_uuid=dict(required=False, type='str'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') new_cluster_uuid = module.params['cluster_uuid'] try: content = connect_to_api(module, False) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed, result, cluster_uuid = create_vsan_cluster(host_system, new_cluster_uuid) module.exit_json(changed=changed, result=result, cluster_uuid=cluster_uuid) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict(datacenter=dict(default=None, type='str'), cluster=dict(default=None, type='str'), folder=dict(type='str', default='/vm'), vm_id=dict(required=True, type='str'), vm_id_type=dict(default='vm_name', type='str', choices=['inventory_path', 'uuid', 'dns_name', 'vm_name']), vm_username=dict(required=False, type='str'), vm_password=dict(required=False, type='str', no_log=True), vm_shell=dict(required=True, type='str'), vm_shell_args=dict(default=" ", type='str'), vm_shell_env=dict(default=None, type='list'), vm_shell_cwd=dict(default=None, type='str'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False, required_if=[['vm_id_type', 'inventory_path', ['folder']]], ) if not HAS_PYVMOMI: module.fail_json(changed=False, msg='pyvmomi is required for this module') try: p = module.params datacenter_name = p['datacenter'] cluster_name = p['cluster'] folder = p['folder'] content = connect_to_api(module) datacenter = None if datacenter_name: datacenter = find_datacenter_by_name(content, datacenter_name) if not datacenter: module.fail_json(changed=False, msg="datacenter not found") cluster = None if cluster_name: cluster = find_cluster_by_name(content, cluster_name, datacenter) if not cluster: module.fail_json(changed=False, msg="cluster not found") if p['vm_id_type'] == 'inventory_path': vm = find_vm_by_id(content, vm_id=p['vm_id'], vm_id_type="inventory_path", folder=folder) else: vm = find_vm_by_id(content, vm_id=p['vm_id'], vm_id_type=p['vm_id_type'], datacenter=datacenter, cluster=cluster) if not vm: module.fail_json(msg='VM not found') msg = execute_command(content, vm, p['vm_username'], p['vm_password'], p['vm_shell'], p['vm_shell_args'], p['vm_shell_env'], p['vm_shell_cwd']) module.exit_json(changed=True, uuid=vm.summary.config.uuid, msg=msg) except vmodl.RuntimeFault as runtime_fault: module.fail_json(changed=False, msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(changed=False, msg=method_fault.msg) except Exception as e: module.fail_json(changed=False, msg=str(e))
def __init__(self, module): self.module = module self.content = connect_to_api(self.module) self.local_user_name = self.module.params['local_user_name'] self.local_user_password = self.module.params['local_user_password'] self.local_user_description = self.module.params[ 'local_user_description'] self.state = self.module.params['state']
def __init__(self, module): self.module = module self.esxi_hostname = module.params['esxi_hostname'] self.pg_name = module.params['pg_name'] self.promiscuous_mode = module.params['promiscuous_mode'] self.mac_address_changes = module.params['mac_address_changes'] self.forged_transmits = module.params['forged_transmits'] self.content = connect_to_api(module)
def main(): argument_spec = vmware_argument_spec() argument_spec.update(cluster_name=dict(required=True, type='str'), fetch_from_cache=dict(required=False, type='bool')) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) if not HAS_PYVMOMI: module.fail_json(msg=missing_required_lib('PyVmomi'), exception=PYVMOMI_IMP_ERR) if not HAS_VSANPYTHONSDK: module.fail_json( msg=missing_required_lib('vSAN Management SDK for Python'), exception=VSANPYTHONSDK_IMP_ERR) if not HAS_PYVMOMIJSON: module.fail_json( msg= 'The installed version of pyvmomi lacks JSON output support; need pyvmomi>6.7.1' ) try: si, content = connect_to_api(module, True, True) except Exception as e: module.fail_json(msg=e.msg) client_stub = si._GetStub() ssl_context = client_stub.schemeArgs.get('context') cluster = find_cluster_by_name(content, module.params['cluster_name']) if not cluster: module.fail_json(msg="Failed to find cluster %s" % module.params['cluster_name']) apiVersion = vsanapiutils.GetLatestVmodlVersion(module.params['hostname']) vcMos = vsanapiutils.GetVsanVcMos(client_stub, context=ssl_context, version=apiVersion) vsanClusterHealthSystem = vcMos['vsan-cluster-health-system'] try: clusterHealth = vsanClusterHealthSystem.VsanQueryVcClusterHealthSummary( cluster=cluster, fetchFromCache=module.params['fetch_from_cache']) except vmodl.fault.NotFound as not_found: module.fail_json(msg=not_found.msg) except vmodl.fault.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) health = json.dumps(clusterHealth, cls=VmomiSupport.VmomiJSONEncoder, sort_keys=True, strip_dynamic=True) module.exit_json(changed=False, vsan_health_info=health)
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict( vm_name=dict(required=True, aliases=['vm'], type='str'), destination_host=dict(required=True, aliases=['destination'], type='str'), ) ) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) if not HAS_PYVMOMI: module.fail_json(msg='pyVmomi is required for this module') content = connect_to_api(module=module) vm_object = find_vm_by_name(content=content, vm_name=module.params['vm_name']) host_object = find_hostsystem_by_name(content=content, hostname=module.params['destination_host']) # Setup result result = { 'changed': False } # Check if we could find the VM or Host if not vm_object: module.fail_json(msg='Cannot find virtual machine') if not host_object: module.fail_json(msg='Cannot find host') # Make sure VM isn't already at the destination if vm_object.runtime.host.name == module.params['destination_host']: module.exit_json(**result) if not module.check_mode: # Migrate VM and get Task object back task_object = migrate_vm(vm_object=vm_object, host_object=host_object) # Wait for task to complete wait_for_task(task_object) # If task was a success the VM has moved, update running_host and complete module if task_object.info.state == vim.TaskInfo.State.success: vm_object = find_vm_by_name(content=content, vm_name=module.params['vm_name']) result['running_host'] = vm_object.runtime.host.name result['changed'] = True module.exit_json(**result) else: if task_object.info.error is None: module.fail_json(msg='Unable to migrate VM due to an error, please check vCenter') else: module.fail_json(msg='Unable to migrate VM due to an error: %s' % task_object.info.error) else: # If we are in check mode return a result as if move was performed result['running_host'] = module.params['destination_host'] result['changed'] = True module.exit_json(**result)
def __init__(self, module): if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi module required') self.module = module self.params = module.params self.content = connect_to_api(self.module) self.cache = PyVmomiCache(self.content, dc_name=self.params['datacenter'])
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict( vm_name=dict(required=True, aliases=['vm'], type='str'), destination_host=dict(required=True, aliases=['destination'], type='str'), ) ) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) if not HAS_PYVMOMI: module.fail_json(msg='pyVmomi is required for this module') content = connect_to_api(module=module) vm_object = find_vm_by_name(content=content, vm_name=module.params['vm_name']) host_object = find_hostsystem_by_name(content=content, hostname=module.params['destination_host']) # Setup result result = { 'changed': False } # Check if we could find the VM or Host if not vm_object: module.fail_json(msg='Cannot find virtual machine') if not host_object: module.fail_json(msg='Cannot find host') # Make sure VM isn't already at the destination if vm_object.runtime.host.name == module.params['destination_host']: module.exit_json(**result) if not module.check_mode: # Migrate VM and get Task object back task_object = migrate_vm(vm_object=vm_object, host_object=host_object) # Wait for task to complete wait_for_task(task_object) # If task was a success the VM has moved, update running_host and complete module if task_object.info.state == vim.TaskInfo.State.success: vm_object = find_vm_by_name(content=content, vm_name=module.params['vm_name']) result['running_host'] = vm_object.runtime.host.name result['changed'] = True module.exit_json(**result) else: if task_object.info.error is None: module.fail_json(msg='Unable to migrate VM due to an error, please check vCenter') else: module.fail_json(msg='Unable to migrate VM due to an error: %s' % task_object.info.error) else: # If we are in check mode return a result as if move was performed result['running_host'] = module.params['destination_host'] result['changed'] = True module.exit_json(**result)
def __init__(self, module): self.module = module self.host_system = None self.migrate_switch_name = self.module.params['migrate_switch_name'] self.migrate_portgroup_name = self.module.params['migrate_portgroup_name'] self.device = self.module.params['device'] self.esxi_hostname = self.module.params['esxi_hostname'] self.current_portgroup_name = self.module.params['current_portgroup_name'] self.current_switch_name = self.module.params['current_switch_name'] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.host_system = None self.migrate_switch_name = self.module.params['migrate_switch_name'] self.migrate_portgroup_name = self.module.params['migrate_portgroup_name'] self.device = self.module.params['device'] self.esxi_hostname = self.module.params['esxi_hostname'] self.current_portgroup_name = self.module.params['current_portgroup_name'] self.current_switch_name = self.module.params['current_switch_name'] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.dvs = None self.switch_name = self.module.params['switch_name'] self.datacenter_name = self.module.params['datacenter_name'] self.mtu = self.module.params['mtu'] self.uplink_quantity = self.module.params['uplink_quantity'] self.discovery_proto = self.module.params['discovery_proto'] self.discovery_operation = self.module.params['discovery_operation'] self.state = self.module.params['state'] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.dvs = None self.switch_name = self.module.params['switch_name'] self.datacenter_name = self.module.params['datacenter_name'] self.mtu = self.module.params['mtu'] self.uplink_quantity = self.module.params['uplink_quantity'] self.discovery_proto = self.module.params['discovery_proto'] self.discovery_operation = self.module.params['discovery_operation'] self.state = self.module.params['state'] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.datacenter_name = module.params['datacenter_name'] self.cluster_name = module.params['cluster_name'] self.esxi_hostname = module.params['esxi_hostname'] self.esxi_username = module.params['esxi_username'] self.esxi_password = module.params['esxi_password'] self.state = module.params['state'] self.cluster = None self.host = None self.content = connect_to_api(module)
def __init__(self, module): self.host_system = None self.content = None self.vss = None self.module = module self.switch_name = module.params['switch_name'] self.number_of_ports = module.params['number_of_ports'] self.nic_name = module.params['nic_name'] self.mtu = module.params['mtu'] self.state = module.params['state'] self.content = connect_to_api(self.module)
def __init__(self, module): self.module = module self.cluster_name = module.params['cluster_name'] self.datacenter_name = module.params['datacenter_name'] self.enable_drs = module.params['enable_drs'] self.enable_ha = module.params['enable_ha'] self.enable_vsan = module.params['enable_vsan'] self.desired_state = module.params['state'] self.datacenter = None self.cluster = None self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.dvs_portgroup = None self.switch_name = self.module.params['switch_name'] self.portgroup_name = self.module.params['portgroup_name'] self.vlan_id = self.module.params['vlan_id'] self.num_ports = self.module.params['num_ports'] self.portgroup_type = self.module.params['portgroup_type'] self.dv_switch = None self.state = self.module.params['state'] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.cluster_name = module.params['cluster_name'] self.datacenter_name = module.params['datacenter_name'] self.enable_drs = module.params['enable_drs'] self.enable_ha = module.params['enable_ha'] self.enable_vsan = module.params['enable_vsan'] self.desired_state = module.params['state'] self.datacenter = None self.cluster = None self.content = connect_to_api(module)
def _connect(self): """Connect to vcenter and return content.""" try: return vmware.connect_to_api(self.module) except socket.gaierror as ex: logging.critical('connection error\n%s', ex) except vim.fault.InvalidLogin as ex: logging.critical('authentication error\n%s', ex.msg) except AttributeError: logging.error('error connecting to vcenter') sys.exit(1)
def __init__(self, module): self.host_system = None self.content = None self.vss = None self.module = module self.switch = module.params['switch'] self.number_of_ports = module.params['number_of_ports'] self.nics = module.params['nics'] self.mtu = module.params['mtu'] self.state = module.params['state'] self.content = connect_to_api(self.module)
def __init__(self, module): self.content = connect_to_api(module) self.module = module self.params = module.params self.mf_file = '' self.ovf_dir = '' # set read device content chunk size to 2 MB self.chunk_size = 2 * 2**20 # set lease progress update interval to 15 seconds self.lease_interval = 15 self.facts = {'device_files': []}
def __init__(self, module): self.module = module self.dv_switch = None self.uplink_portgroup = None self.host = None self.dv_switch = None self.nic = None self.content = connect_to_api(self.module) self.state = self.module.params['state'] self.switch_name = self.module.params['switch_name'] self.esxi_hostname = self.module.params['esxi_hostname'] self.vmnics = self.module.params['vmnics']
def main(): argument_spec = vmware_argument_spec() module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') content = connect_to_api(module) data = all_facts(content) module.exit_json(changed=False, ansible_facts=data)
def __init__(self, module): self.module = module self.datacenter_name = module.params['datacenter_name'] self.cluster_name = module.params['cluster_name'] self.esxi_hostname = module.params['esxi_hostname'] self.esxi_username = module.params['esxi_username'] self.esxi_password = module.params['esxi_password'] self.state = module.params['state'] self.dc = None self.cluster = None self.host = None self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.name = module.params["name"] self.method = module.params["method"] self.datacenter = module.params["datacenter"] self.path = module.params["path"] self.compute_resource = module.params["compute_resource"] self.resource_pool = module.params["resource_pool"] self.datastore = module.params["datastore"] self.folder = module.params["folder"] self.disk_type = module.params["disk_type"] self.content = connect_to_api(module)
def __init__(self, module): self.module = module self.dv_switch = None self.uplink_portgroup = None self.host = None self.dv_switch = None self.nic = None self.content = connect_to_api(self.module) self.state = self.module.params['state'] self.switch_name = self.module.params['switch_name'] self.esxi_hostname = self.module.params['esxi_hostname'] self.vmnics = self.module.params['vmnics']
def __init__(self, module): if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi module required') self.module = module self.params = module.params self.si = None self.content = connect_to_api(self.module) self.configspec = None self.change_detected = False self.customspec = None self.current_vm_obj = None self.cache = PyVmomiCache(self.content, dc_name=self.params['datacenter'])
def sanitize_params(self): ''' this method is used to verify user provided parameters ''' self.vm_obj = self.get_vm() if self.vm_obj is None: vm_id = self.vm_uuid or self.vm_name or self.moid self.module.fail_json( msg="Failed to find the VM/template with %s" % vm_id) # connect to destination VC self.destination_content = connect_to_api( self.module, hostname=self.destination_vcenter, username=self.destination_vcenter_username, password=self.destination_vcenter_password, port=self.destination_vcenter_port, validate_certs=self.destination_vcenter_validate_certs) # Check if vm name already exists in the destination VC vm = find_vm_by_name(content=self.destination_content, vm_name=self.params['destination_vm_name']) if vm: self.module.exit_json( changed=False, msg="A VM with the given name already exists") datastore_name = self.params['destination_datastore'] datastore_cluster = find_obj(self.destination_content, [vim.StoragePod], datastore_name) if datastore_cluster: # If user specified datastore cluster so get recommended datastore datastore_name = self.get_recommended_datastore( datastore_cluster_obj=datastore_cluster) # Check if get_recommended_datastore or user specified datastore exists or not self.destination_datastore = find_datastore_by_name( content=self.destination_content, datastore_name=datastore_name) if self.destination_datastore is None: self.module.fail_json(msg="Destination datastore not found.") self.destination_host = find_hostsystem_by_name( content=self.destination_content, hostname=self.params['destination_host']) if self.destination_host is None: self.module.fail_json(msg="Destination host not found.") if self.params['destination_resource_pool']: self.destination_resource_pool = find_resource_pool_by_name( content=self.destination_content, resource_pool_name=self.params['destination_resource_pool']) else: self.destination_resource_pool = self.destination_host.parent.resourcePool
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict(portgroup_name=dict(required=True, type='str'), ip_address=dict(required=True, type='str'), subnet_mask=dict(required=True, type='str'), mtu=dict(required=False, type='int'), enable_vsan=dict(required=False, type='bool'), enable_vmotion=dict(required=False, type='bool'), enable_mgmt=dict(required=False, type='bool'), enable_ft=dict(required=False, type='bool'), vswitch_name=dict(required=True, type='str'), vlan_id=dict(required=True, type='int'))) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') port_group_name = module.params['portgroup_name'] ip_address = module.params['ip_address'] subnet_mask = module.params['subnet_mask'] mtu = module.params['mtu'] enable_vsan = module.params['enable_vsan'] enable_vmotion = module.params['enable_vmotion'] enable_mgmt = module.params['enable_mgmt'] enable_ft = module.params['enable_ft'] vswitch_name = module.params['vswitch_name'] vlan_id = module.params['vlan_id'] try: content = connect_to_api(module) host = get_all_objs(content, [vim.HostSystem]) if not host: module.fail_json(msg="Unable to locate Physical Host.") host_system = host.keys()[0] changed = create_vmkernel_adapter(host_system, port_group_name, vlan_id, vswitch_name, ip_address, subnet_mask, mtu, enable_vsan, enable_vmotion, enable_mgmt, enable_ft) module.exit_json(changed=changed) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def __init__(self, module): self.module = module self.datacenter_name = module.params["datacenter"] self.cluster_name = module.params["cluster"] self.folder = module.params["folder"] self.vm_id = module.params["vm_id"] self.vm_id_type = module.params["vm_id_type"] self.vm_username = module.params["vm_username"] self.vm_password = module.params["vm_password"] self.vm_shell = module.params["vm_shell"] self.vm_shell_args = module.params["vm_shell_args"] self.check_interval = module.params["check_interval"] self.time_out = module.params["time_out"] self.content = connect_to_api(module)
def __init__(self, module): if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi module required') self.datacenter = None self.folders = None self.foldermap = { 'fvim_by_path': {}, 'path_by_fvim': {}, 'path_by_vvim': {}, 'paths': {}, 'uuids': {} } self.module = module self.params = module.params self.content = connect_to_api(self.module)
def __init__(self, module): self.si = connect_to_api(module) self.module = module self.params = module.params self.datastore = None self.datacenter = None self.resource_pool = None self.network_mappings = [] self.ovf_descriptor = None self.tar = None self.lease = None self.import_spec = None self.entity = None
def __init__(self, module): self.module = module self.datacenter = module.params['datacenter'] self.cluster = module.params['cluster'] self.folder = module.params['folder'] self.hostname = module.params['hostname'] self.username = module.params['username'] self.password = module.params['password'] self.state = module.params['state'] self.dc_obj = None self.cluster_obj = None self.host_obj = None self.folder_obj = None self.folder_name = None self.folder_expanded = None self.folder_full_path = [] self.content = connect_to_api(module)
def main(): argument_spec = vmware_argument_spec() module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') try: content = connect_to_api(module) _virtual_machines = get_all_virtual_machines(content) module.exit_json(changed=False, virtual_machines=_virtual_machines) except vmodl.RuntimeFault as runtime_fault: module.fail_json(msg=runtime_fault.msg) except vmodl.MethodFault as method_fault: module.fail_json(msg=method_fault.msg) except Exception as e: module.fail_json(msg=str(e))
def __init__(self, module): self.module = module self.datacenter = module.params['datacenter'] self.cluster = module.params['cluster'] self.resource_pool = module.params['resource_pool'] self.hostname = module.params['hostname'] self.username = module.params['username'] self.password = module.params['password'] self.state = module.params['state'] self.mem_shares = module.params['mem_shares'] self.mem_limit = module.params['mem_limit'] self.mem_reservation = module.params['mem_reservation'] self.mem_expandable_reservations = module.params['cpu_expandable_reservations'] self.cpu_shares = module.params['cpu_shares'] self.cpu_limit = module.params['cpu_limit'] self.cpu_reservation = module.params['cpu_reservation'] self.cpu_expandable_reservations = module.params['cpu_expandable_reservations'] self.dc_obj = None self.cluster_obj = None self.host_obj = None self.resource_pool_obj = None self.content = connect_to_api(module)
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict( datacenter_name=dict(required=True, type='str'), state=dict(default='present', choices=['present', 'absent'], type='str') ) ) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') context = connect_to_api(module) state = module.params.get('state') if state == 'present': create_datacenter(context, module) if state == 'absent': destroy_datacenter(context, module)
def main(): argument_spec = vmware_argument_spec() argument_spec.update(dict( labels=dict(type='dict', default=dict(source='ansible')), license=dict(type='str', required=True), state=dict(type='str', default='present', choices=['absent', 'present']), )) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, ) license = module.params['license'] state = module.params['state'] # FIXME: This does not seem to work on vCenter v6.0 labels = [] for k in module.params['labels']: kv = vim.KeyValue() kv.key = k kv.value = module.params['labels'][k] labels.append(kv) result = dict( changed=False, diff=dict(), ) if not HAS_PYVMOMI: module.fail_json(msg='pyvmomi is required for this module') content = connect_to_api(module) lm = content.licenseManager result['licenses'] = list_keys(lm.licenses) if module._diff: result['diff']['before'] = '\n'.join(result['licenses']) + '\n' if state == 'present' and license not in result['licenses']: result['changed'] = True if module.check_mode: result['licenses'].append(license) else: lm.AddLicense(license, labels) # Automatically assign to current vCenter, if needed key = find_key(lm.licenses, license) if content.about.name in key.name: try: lam = lm.licenseAssignmentManager lam.UpdateAssignedLicense(entity=content.about.instanceUuid, licenseKey=license) except: module.warn('Could not assign "%s" (%s) to vCenter.' % (license, key.name)) result['licenses'] = list_keys(lm.licenses) if module._diff: result['diff']['after'] = '\n'.join(result['licenses']) + '\n' elif state == 'absent' and license in result['licenses']: # Check if key is in use key = find_key(lm.licenses, license) if key.used > 0: module.fail_json(msg='Cannot remove key "%s", still in use %s time(s).' % (license, key.used)) result['changed'] = True if module.check_mode: result['licenses'].remove(license) else: lm.RemoveLicense(license) result['licenses'] = list_keys(lm.licenses) if module._diff: result['diff']['after'] = '\n'.join(result['licenses']) + '\n' module.exit_json(**result)
def __init__(self, module): self.module = module self.content = connect_to_api(module) self.vm = None self.vm_name = module.params['vm_name'] self.dvportgroup_name = module.params['dvportgroup_name']