def func(args, config): # Get VMware vmware = get_vmware(args, config) if args.ds_sum_prefixes: vmware.summarize_cluster_datastores(args.cluster_name, args.ds_prefix) else: vmware.get_cluster_datastores(args.cluster_name, args.ds_prefix)
def func(args, config): # Normalize args.vm_name = args.vm_name.lower() # Get VMware vmware = get_vmware(args, config) # Get disks vmware.get_disks(args.vm_name)
def func(args, config): # Normalize args.vm_name = args.vm_name.lower() # Confirm if raw_input('\nConfirm deletion by re-typing VM name: ') != args.vm_name: print 'Confirmation failed, canceled' return # ASSERT: Confirmed # Get VMware vmware = get_vmware(args, config) # Destroy VM vmware.destroy(args.vm_name)
def func(args, config): # Normalize and get VMware vm_name = args.vm_name.lower() vmware = get_vmware(args, config) # Get current compute memory_mb, cpus = vmware.get_compute(vm_name) # Get the new memory count want_memory_mb = memory_mb if args.memory_add: want_memory_mb += args.memory_add * 1024 elif args.memory_set: want_memory_mb = args.memory_set * 1024 # Get the new CPU count want_cpus = cpus if args.cpus_add: want_cpus += args.cpus_add elif args.cpus_set: want_cpus = args.cpus_set # Change compute if we have to if (memory_mb != want_memory_mb) or (want_cpus != cpus): try: vmware.set_compute(vm_name, want_memory_mb, want_cpus) except Exception as err: print err print '' print 'Hint: Hot plug may be disabled or limited (see: http://kb.vmware.com/kb/2008405)' return # Always print status print('CPUs: {}'.format(want_cpus)) print('Memory: {:.1f}GB'.format(want_memory_mb / 1024))
def func(args, config): # Normalize some arguments args.vm_name = args.vm_name.lower() args.domain = args.domain.lower() # Check if we have a datastore if not any((args.ds_name, args.ds_prefix)): raise CLIException( 'Require to specify datastore using either --ds or --ds_prefix') # Get IP address from name if not provided if not args.ip: args.ip = repr( socket.gethostbyname('{}.{}'.format(args.vm_name, args.domain)))[1:-1] # Make sure IP address isn't used if not args.force and os.system('ping -c1 -W1 {} > /dev/null 2>&1'.format( args.ip)) == 0: raise CLIException( 'IP address {} is responding to ping, use --force to ignore ping response' .format(args.ip)) # Get network settings net_settings = None for n, s in config['networks'].iteritems(): if IPAddress(args.ip) not in IPNetwork(n): continue net_settings = s net_settings['subnet'] = str(IPNetwork(n).netmask) break # Check if settings set if not net_settings: raise CLIException( 'Network for {} not configured in kaslan.yaml'.format(args.ip)) # Check if all settings are given if not all(k in net_settings for k in ('subnet', 'gateway', 'dns')): raise CLIException( 'Network for {} missing settings in kaslan.yaml'.format(args.ip)) # Get template name from alias if not args.no_template_alias: try: template_name = config['templates'][args.template] except KeyError: CLIException( 'Template {} is not configured in kaslan.yaml, use --no-template-alias to force' .format(args.template)) else: template_name = args.template # Get VMware vmware = get_vmware(args, config) if not args.ds_name: args.ds_name = vmware.choose_a_datastore(args.cluster_name, args.ds_prefix, args.ds_prov_limit, args.ds_vm_limit) print 'Using datastore {}...'.format(args.ds_name) # Perform the clone vmware.clone(template_name=template_name, **dict(vars(args).items() + net_settings.items()))
def func(args, config): # Normalize some arguments args.vm_name = args.vm_name.lower() args.domain = args.domain.lower() # Check if we have a datastore if not any((args.ds_name, args.ds_prefix)): raise CLIException('Require to specify datastore using either --ds or --ds_prefix') # Get IP address from name if not provided if not args.ip: args.ip = repr(socket.gethostbyname('{}.{}'.format(args.vm_name, args.domain)))[1:-1] # Make sure IP address isn't used if not args.force and os.system('ping -c1 -W1 {} > /dev/null 2>&1'.format(args.ip)) == 0: raise CLIException('IP address {} is responding to ping, use --force to ignore ping response'.format(args.ip)) # Get network settings net_settings = None for n, s in config['networks'].iteritems(): if IPAddress(args.ip) not in IPNetwork(n): continue net_settings = s net_settings['subnet'] = str(IPNetwork(n).netmask) break # Check if settings set if not net_settings: raise CLIException('Network for {} not configured in kaslan.yaml'.format(args.ip)) # Check if all settings are given if not all(k in net_settings for k in ('subnet', 'gateway', 'dns')): raise CLIException('Network for {} missing settings in kaslan.yaml'.format(args.ip)) # Get template name from alias if not args.no_template_alias: try: template_name = config['templates'][args.template] except KeyError: CLIException('Template {} is not configured in kaslan.yaml, use --no-template-alias to force'.format(args.template)) else: template_name = args.template # Get VMware vmware = get_vmware(args, config) if not args.ds_name: args.ds_name = vmware.choose_a_datastore( args.cluster_name, args.ds_prefix, args.ds_prov_limit, args.ds_vm_limit ) print 'Using datastore {}...'.format(args.ds_name) # Perform the clone vmware.clone( template_name=template_name, **dict(vars(args).items() + net_settings.items()) )