def create(self, input): cmdline = create_cmdline(**input) result = powershell.execute('Add-Tag %s' % cmdline) url = mapper.url_for(collection='tags', action='show', id=result[0]['TagID']) return url, result[0]
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: raise KeyError # With RHEVM-2.1, when adding a disk with Add-Disk, the new SnapshotId # is not returned. Therefore we need to compare disk images before and # after to conclude what our new SnapshotId is. On RHEVM-2.2 the # SnapshotId seems to be returned. result = powershell.execute('$vm.GetDiskImages()') old = set((disk['SnapshotId'] for disk in result)) create = {'DiskSize': input.pop('DiskSize')} cmdline = create_cmdline(**create) updates = create_setattr('disk', **input) powershell.execute('$disk = New-Disk %s; %s' % (cmdline, updates)) if powershell.version >= (2, 2): vmref = '-VmObject $vm' else: vmref = '-VmId $vm.VmId' if input.get('VolumeType') == 'Preallocated': result = powershell.execute( 'Add-Disk -DiskObject $disk %s -Async' % vmref) tasks = powershell.execute('Get-LastCommandTasks') async = True else: result = powershell.execute('Add-Disk -DiskObject $disk %s' % vmref) async = False result = powershell.execute('$vm.GetDiskImages()') new = set((disk['SnapshotId'] for disk in result)) diskid = (new - old).pop() filter = create_filter(snapshotid=diskid) result = powershell.execute('$vm.GetDiskImages() | %s' % filter) if async: response.status = http.ACCEPTED url = mapper.url_for(collection='tasks', action='show', id=tasks[0]['TaskId']) response.set_header('Link', '<%s>; rel=status' % url) url = mapper.url_for(collection=self.name, action='show', id=result[0]['SnapshotId'], vm=vm) return url, result[0]
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: return cmdline = create_cmdline(**input) powershell.execute('Set-VmTicket -VmObject $vm %s' % cmdline) url = mapper.url_for(collection='vm', action='show', id=vm) return url
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: raise KeyError # With RHEVM-2.1, when adding a disk with Add-Disk, the new SnapshotId # is not returned. Therefore we need to compare disk images before and # after to conclude what our new SnapshotId is. On RHEVM-2.2 the # SnapshotId seems to be returned. result = powershell.execute('$vm.GetDiskImages()') old = set((disk['SnapshotId'] for disk in result)) create = { 'DiskSize': input.pop('DiskSize') } cmdline = create_cmdline(**create) updates = create_setattr('disk', **input) powershell.execute('$disk = New-Disk %s; %s' % (cmdline, updates)) if powershell.version >= (2, 2): vmref = '-VmObject $vm' else: vmref = '-VmId $vm.VmId' if input.get('VolumeType') == 'Preallocated': result = powershell.execute('Add-Disk -DiskObject $disk %s -Async' % vmref) tasks = powershell.execute('Get-LastCommandTasks') async = True else: result = powershell.execute('Add-Disk -DiskObject $disk %s' % vmref) async = False result = powershell.execute('$vm.GetDiskImages()') new = set((disk['SnapshotId'] for disk in result)) diskid = (new - old).pop() filter = create_filter(snapshotid=diskid) result = powershell.execute('$vm.GetDiskImages() | %s' % filter) if async: response.status = http.ACCEPTED url = mapper.url_for(collection='tasks', action='show', id=tasks[0]['TaskId']) response.set_header('Link', '<%s>; rel=status' % url) url = mapper.url_for(collection=self.name, action='show', id=result[0]['SnapshotId'], vm=vm) return url, result[0]
def create(self, input): props = ('Name', 'TemplateObject', 'HostClusterId', 'VmType') args = dict(((prop, input.pop(prop)) for prop in props)) cmdline = create_cmdline(**args) result = powershell.execute('$vm = Add-VM %s' % cmdline) updates = create_setattr('vm', **input) powershell.execute(updates) result = powershell.execute('Update-Vm -VmObject $vm') url = mapper.url_for(collection=self.name, action='show', id=result[0]['VmId']) return url, result[0]
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: raise KeyError cmdline = create_cmdline(**input) result = powershell.execute('Add-NetworkAdapter -VmObject $vm %s' % cmdline) # On RHEV-M 2.1, i get weird output from Add-NetworkAdapter.. This is # not equal to the output of $vm.GetNetworkAdapters(). Re-fetch the # object again. filter = create_filter(name=input['InterfaceName']) # This is unique result = powershell.execute('$vm.GetNetworkAdapters() | %s' % filter) url = mapper.url_for(collection=self.name, action='show', id=result[0]['Id'],vm=vm) return url, result[0]
def create(self, input): cargs = { 'Name': input.pop('Name'), 'DataCenterType': input.pop('Type') } cmdline = create_cmdline(**cargs) # XXX: setting CompatibilityVersion needs improvement if powershell.version >= (2, 2): powershell.execute('$dc = Select-DataCenter' ' | Select-Object -First 1') compat = '-CompatibilityVersion $dc.CompatibilityVersion' else: compat = '' powershell.execute('$dc = Add-DataCenter %s %s' % (compat, cmdline)) updates = create_setattr('dc', **input) powershell.execute(updates) result = powershell.execute('Update-DataCenter -DataCenterObject $dc') url = mapper.url_for(collection=self.name, action='show', id=result[0]['DataCenterId']) return url, result[0]
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: raise KeyError cmdline = create_cmdline(**input) result = powershell.execute('Add-NetworkAdapter -VmObject $vm %s' % cmdline) # On RHEV-M 2.1, i get weird output from Add-NetworkAdapter.. This is # not equal to the output of $vm.GetNetworkAdapters(). Re-fetch the # object again. filter = create_filter(name=input['InterfaceName']) # This is unique result = powershell.execute('$vm.GetNetworkAdapters() | %s' % filter) url = mapper.url_for(collection=self.name, action='show', id=result[0]['Id'], vm=vm) return url, result[0]
def create(self, vm, input): filter = create_filter(vmid=vm) result = powershell.execute('Select-Vm | %s' ' | Tee-Object -Variable vm' % filter) if len(result) != 1: return command = input.pop('command') if command == 'start': cmdline = create_cmdline(**input) result = powershell.execute('Start-Vm -VmId $vm.VmId %s' % cmdline) elif command == 'stop': powershell.execute('Stop-Vm -VmObject $vm') elif command == 'shutdown': powershell.execute('Shutdown-Vm -VmObject $vm') elif command == 'suspend': powershell.execute('Suspend-Vm -VmObject $vm') elif command == 'migrate': cmdline = create_cmdline(**input) powershell.execute('Migrate-Vm -VmObject $vm %s' % cmdline) url = mapper.url_for(collection=self.name, action='show', id=result[0]['VmId']) return url, result[0]
def create(self, input): self.books.append(input) url = mapper.url_for(collection=self.name, action='show', id=input['id']) return url