Example #1
0
 def delete(self, id):
     cmdline = create_cmdline(Id=id)
     result = powershell.execute('Get-Tag %s'
                                 ' | Tee-Object -Variable tag' % cmdline)
     if not result:
         raise KeyError, 'Tag not found'
     powershell.execute('Remove-Tag -TagObject $tag')
Example #2
0
 def delete(self, id):
     filter = create_filter(datacenterid=id)
     result = powershell.execute('Select-DataCenter | %s'
                                 ' | Tee-Object -Variable dc' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-DataCenter -DataCenterId $dc.DataCenterId')
Example #3
0
 def delete(self, id):
     cmdline = create_cmdline(Id=id)
     result = powershell.execute('Get-Tag %s'
                                 ' | Tee-Object -Variable tag' % cmdline)
     if not result:
         raise KeyError, 'Tag not found'
     powershell.execute('Remove-Tag -TagObject $tag')
Example #4
0
 def delete(self, id):
     filter = create_filter(datacenterid=id)
     result = powershell.execute('Select-DataCenter | %s'
                                 ' | Tee-Object -Variable dc' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-DataCenter -DataCenterId $dc.DataCenterId')
Example #5
0
 def delete(self, id):
     filter = create_filter(vmid=id)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-Vm -VmId $vm.VmId')
Example #6
0
def template_object(name):
    """Return the template ID for a template name."""
    filter = create_filter(name=name)
    result = powershell.execute('Select-Template | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Template not found'
    powershell.execute('$template = Select-Template | %s' % filter)
    return '$template'
Example #7
0
 def update(self, id, input):
     cmdline = create_cmdline(Id=id)
     result = powershell.execute('Get-Tag %s'
                                 ' | Tee-Object -Variable tag' % cmdline)
     if not result:
         raise KeyError, 'Tag not found'
     setattr = create_setattr('tag', **input)
     result = powershell.execute('%s; Update-Tag -TagObject $tag' % setattr)
     return result[0]
Example #8
0
 def update(self, id, input):
     cmdline = create_cmdline(Id=id)
     result = powershell.execute('Get-Tag %s'
                                 ' | Tee-Object -Variable tag' % cmdline)
     if not result:
         raise KeyError, 'Tag not found'
     setattr = create_setattr('tag', **input)
     result = powershell.execute('%s; Update-Tag -TagObject $tag' % setattr)
     return result[0]
Example #9
0
 def list(self, vm, **args):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         return
     filter = create_filter(**args)
     result = powershell.execute('$vm.GetDiskImages() | %s' % filter)
     return result
Example #10
0
 def list(self, vm, **args):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         return
     filter = create_filter(**args)
     result = powershell.execute('$vm.GetNetworkAdapters() | %s' % filter)
     return result
Example #11
0
 def update(self, id, input):
     filter = create_filter(vmid=id)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     updates = create_setattr('vm', **input)
     powershell.execute(updates)
     result = powershell.execute('Update-Vm -VmObject $vm')
     return result[0]
Example #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
     cmdline = create_cmdline(**input)
     powershell.execute('Set-VmTicket -VmObject $vm %s' % cmdline)
     url = mapper.url_for(collection='vm', action='show', id=vm)
     return url
Example #13
0
 def update(self, id, input):
     filter = create_filter(datacenterid=id)
     result = powershell.execute('Select-DataCenter | %s'
                                 ' | Tee-Object -Variable dc' % filter)
     if len(result) != 1:
         raise KeyError
     updates = create_setattr('dc', **input)
     powershell.execute(updates)
     result = powershell.execute('Update-DataCenter -DataCenterObject $dc')
     return result[0]
Example #14
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
Example #15
0
 def update(self, id, input):
     filter = create_filter(datacenterid=id)
     result = powershell.execute('Select-DataCenter | %s'
                                 ' | Tee-Object -Variable dc' % filter)
     if len(result) != 1:
         raise KeyError
     updates = create_setattr('dc', **input)
     powershell.execute(updates)
     result = powershell.execute('Update-DataCenter -DataCenterObject $dc')
     return result[0]
Example #16
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]
Example #17
0
 def show(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         return
     filter = create_filter(snapshotid=id)
     result = powershell.execute('$vm.GetDiskImages() | %s' % filter)
     if not result:
         return
     return result[0]
Example #18
0
 def show(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         return
     filter = create_filter(id=id)
     result = powershell.execute('$vm.GetNetworkAdapters() | %s' % filter)
     if len(result) != 1:
         return
     return result[0]
Example #19
0
 def show(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         return
     filter = create_filter(snapshotid=id)
     result = powershell.execute('$vm.GetDiskImages() | %s' % filter)
     if not result:
         return
     return result[0]
Example #20
0
 def delete(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     filter = create_filter(snapshotid=id)
     result = powershell.execute('$vm.GetDiskImages() | %s'
                                 ' | Tee-Object -Variable disk' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-Disk -DiskId $disk.SnapshotId -VmId $vm.VmId')
Example #21
0
 def delete(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     filter = create_filter(id=id)
     result = powershell.execute('$vm.GetNetworkAdapters() | %s'
                                 ' | Tee-Object -Variable nic' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-NetworkAdapter -VmObject $vm '
                        ' -NetworkAdapter $nic')
Example #22
0
 def delete(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     filter = create_filter(id=id)
     result = powershell.execute('$vm.GetNetworkAdapters() | %s'
                                 ' | Tee-Object -Variable nic' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute('Remove-NetworkAdapter -VmObject $vm '
                        ' -NetworkAdapter $nic')
Example #23
0
 def delete(self, vm, id):
     filter = create_filter(vmid=vm)
     result = powershell.execute('Select-Vm | %s'
                                 ' | Tee-Object -Variable vm' % filter)
     if len(result) != 1:
         raise KeyError
     filter = create_filter(snapshotid=id)
     result = powershell.execute('$vm.GetDiskImages() | %s'
                                 ' | Tee-Object -Variable disk' % filter)
     if len(result) != 1:
         raise KeyError
     powershell.execute(
         'Remove-Disk -DiskId $disk.SnapshotId -VmId $vm.VmId')
Example #24
0
def create_powershell(username, password, domain):
    """Create a powershell object."""
    powershell = PowerShell()
    auth = { 'username': username, 'domain': domain, 'password': password }
    if hasattr(sys, 'isapidllhandle'):
        powershell.start(**auth)
        powershell.execute('Login-User')
    else:
        powershell.start()
        powershell.execute('Login-User %s' % create_cmdline(**auth))
    result = powershell.execute('Get-Version')
    version = tuple(map(int, (result[0][i] for i in (
                        'Major', 'Minor', 'Build', 'Revision'))))
    powershell.version = version
    return powershell
Example #25
0
def cluster_name(id):
    """Retur the cluster name for a given ID."""
    filter = create_filter(clusterid=id)
    result =powershell.execute('Select-Cluster | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Cluster not found.'
    return result[0]['Name']
Example #26
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]
Example #27
0
 def list(self, dc, **args):
     filter = create_filter(DataCenterId=dc)
     result = powershell.execute("Get-ISOImages -DataCenterId %s" % dc)
     isos = []
     for iso in result:
         isos.append({"name": iso})
     return isos
Example #28
0
def template_name(id):
    """Retur the template name for a given ID."""
    filter = create_filter(templateid=id)
    result =powershell.execute('Select-Template | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Template not found.'
    return result[0]['Name']
Example #29
0
def cluster_id(name):
    """Return the cluster ID for a cluster name."""
    filter = create_filter(name=name)
    result =powershell.execute('Select-Cluster | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Cluster not found.'
    return result[0]['ClusterID']
Example #30
0
def host_id(name):
    """Return the host ID for a host name."""
    filter = create_filter(name=name)
    result = powershell.execute('Select-Host | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Host not found.'
    return result[0]['HostID']
Example #31
0
 def list(self, dc, **args):
     filter = create_filter(DataCenterId=dc)
     result = powershell.execute('Get-ISOImages -DataCenterId %s' % dc)
     isos = []
     for iso in result:
         isos.append({'name': iso})
     return isos
Example #32
0
def pool_id(name):
    """Return the pool ID for a pool name."""
    filter = create_filter(name=name)
    result = powershell.execute('Select-VmPool | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Pool not found.'
    return result[0]['PoolID']
Example #33
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]
Example #34
0
 def show(self, id):
     cmdline = create_cmdline(CommandTaskIdList=id)
     # XXX: this does not work yet. Finding out more info on
     # Get-TasksStatus.
     result = powershell.execute('Get-TasksStatus %s' % cmdline)
     if len(result) != 1:
         raise KeyError
     return result[0]
Example #35
0
 def detach_from_object(self, type, id, tag):
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         return
     filter = create_filter(TagId=tag)
     result = powershell.execute('Get-Tags %s | %s | Tee-Object'
                                 ' -Variable tag' % (cmdline, filter))
     if not result:
         raise KeyError, 'No such tag'
     powershell.execute('Detach-Tag -TagObject $tag %s' % cmdline)
Example #36
0
 def detach_from_object(self, type, id, tag):
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         return
     filter = create_filter(TagId=tag)
     result = powershell.execute('Get-Tags %s | %s | Tee-Object'
                                ' -Variable tag' % (cmdline, filter))
     if not result:
         raise KeyError, 'No such tag'
     powershell.execute('Detach-Tag -TagObject $tag %s' % cmdline)
Example #37
0
 def attach_to_object(self, type, id, input):
     cmdline = create_cmdline(**input)
     result = powershell.execute('Get-Tag %s | Tee-Object -Variable tag' %
                                 cmdline)
     if not result:
         raise KeyError
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         return
     result = powershell.execute('Attach-Tag -TagObject $tag %s' % cmdline)
     return result[0]
Example #38
0
 def attach_to_object(self, type, id, input):
     cmdline = create_cmdline(**input)
     result = powershell.execute('Get-Tag %s | Tee-Object -Variable tag'
                                  % cmdline)
     if not result:
         raise KeyError
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         return
     result = powershell.execute('Attach-Tag -TagObject $tag %s' % cmdline)
     return result[0]
Example #39
0
def host_name(id, cluster):
    """Retur the host name for a given ID."""
    if id in ('-1', None):
        return
    filter = create_filter(hostid=id, hostclusterid=cluster)
    result = powershell.execute('Select-Host | %s' % filter)
    if len(result) != 1:
        return
    return result[0]['Name']
Example #40
0
def pool_name(id):
    """Retur the pool name for a given ID."""
    if id == -1:
        return None
    filter = create_filter(poolid=id)
    result =powershell.execute('Select-VmPool | %s' % filter)
    if len(result) != 1:
        raise KeyError, 'Pool not found.'
    return result[0]['Name']
Example #41
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]
Example #42
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]
Example #43
0
 def show_for_object(self, type, id):
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         raise KeyError
     result = powershell.execute('Get-Tags %s' % cmdline)
     return result
Example #44
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]
Example #45
0
 def show_for_object(self, type, id):
     if type == 'vms':
         cmdline = create_cmdline(VmId=id)
     elif type == 'hosts':
         cmdline = create_cmdline(HostId=id)
     elif type == 'users':
         cmdline = create_cmdline(UserId=id)
     elif type == 'clusters':
         cmdline = create_cmdline(ClusterId=id)
     else:
         raise KeyError
     result = powershell.execute('Get-Tags %s' % cmdline)
     return result
Example #46
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]
Example #47
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]