Exemplo n.º 1
0
 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]
Exemplo n.º 2
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]
Exemplo n.º 3
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
Exemplo n.º 4
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
Exemplo n.º 5
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]
Exemplo n.º 6
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]
Exemplo n.º 7
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]
Exemplo n.º 8
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]
Exemplo n.º 9
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]
Exemplo n.º 10
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]
Exemplo n.º 11
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]
Exemplo n.º 12
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]
Exemplo n.º 13
0
 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]
Exemplo n.º 14
0
 def create(self, input):
     self.books.append(input)
     url = mapper.url_for(collection=self.name,
                          action='show',
                          id=input['id'])
     return url