示例#1
0
    def test_060_attach_disk_to_vm_in_vapp(self):
        logged_in_org = self.client.get_org()
        org = Org(self.client, resource=logged_in_org)
        vdc_resource = org.get_vdc(self.config['vcd']['vdc'])
        vdc = VDC(self.client, resource=vdc_resource)
        assert self.config['vcd']['vdc'] == vdc.get_resource().get('name')

        vapp_resource = vdc.get_vapp(self.config['vcd']['vapp'])
        assert self.config['vcd']['vapp'] == vapp_resource.get('name')
        vapp = VApp(self.client, resource=vapp_resource)

        disk = vdc.get_disk(self.config['vcd']['idisk_name'])

        result = vapp.attach_disk_to_vm(disk_href=disk.get('href'),
                                        vm_name=self.config['vcd']['vm'])
        task = self.client.get_task_monitor().wait_for_status(
                            task=result,
                            timeout=60,
                            poll_frequency=2,
                            fail_on_statuses=None,
                            expected_target_statuses=[
                                TaskStatus.SUCCESS,
                                TaskStatus.ABORTED,
                                TaskStatus.ERROR,
                                TaskStatus.CANCELED],
                            callback=None)
        assert task.get('status') == TaskStatus.SUCCESS.value
示例#2
0
    def test_030_get_disk_by_name(self):
        logged_in_org = self.client.get_org()
        org = Org(self.client, resource=logged_in_org)
        vdc_resource = org.get_vdc(self.config['vcd']['vdc'])
        vdc = VDC(self.client, resource=vdc_resource)

        fetched_disk = vdc.get_disk(name=self.config['vcd']['idisk_name'])

        assert fetched_disk is not None
        assert fetched_disk.get('name') == self.config['vcd']['idisk_name']
示例#3
0
文件: disk.py 项目: vmware/vca-cli
def info(ctx, name):
    try:
        restore_session(ctx, vdc_required=True)
        client = ctx.obj['client']
        vdc_href = ctx.obj['profiles'].get('vdc_href')
        vdc = VDC(client, href=vdc_href)
        name, id = extract_name_and_id(name)
        disk = vdc.get_disk(name=name, disk_id=id)
        stdout(disk_to_dict(disk), ctx)
    except Exception as e:
        stderr(e, ctx)
示例#4
0
    def test_040_get_disk_by_id(self):
        logged_in_org = self.client.get_org()
        org = Org(self.client, resource=logged_in_org)
        vdc_resource = org.get_vdc(self.config['vcd']['vdc'])
        vdc = VDC(self.client, resource=vdc_resource)

        disks = vdc.get_disks()
        assert len(disks) > 0

        fetched_disk = vdc.get_disk(disk_id=disks[0].get('id'))
        assert fetched_disk is not None
示例#5
0
    def test_050_change_idisk_owner(self):
        logged_in_org = self.client.get_org()
        org = Org(self.client, resource=logged_in_org)
        vdc_resource = org.get_vdc(self.config['vcd']['vdc'])
        vdc = VDC(self.client, resource=vdc_resource)

        user_resource = org.get_user(
            self.config['vcd']['idisk_new_owner_name'])

        vdc.change_disk_owner(name=self.config['vcd']['idisk_name'],
                              user_href=user_resource.get('href'))

        disk_resource = vdc.get_disk(self.config['vcd']['idisk_name'])
        new_user = disk_resource.Owner.User.get('name')

        assert self.config['vcd']['idisk_new_owner_name'] == new_user
示例#6
0
文件: vapp.py 项目: vmware/vca-cli
def detach(ctx, vapp_name, vm_name, disk_name):
    try:
        restore_session(ctx, vdc_required=True)
        client = ctx.obj['client']
        vdc_href = ctx.obj['profiles'].get('vdc_href')
        vdc = VDC(client, href=vdc_href)

        disk_name, disk_id = extract_name_and_id(disk_name)
        disk = vdc.get_disk(name=disk_name, disk_id=disk_id)

        vapp_resource = vdc.get_vapp(vapp_name)
        vapp = VApp(client, resource=vapp_resource)

        task = vapp.detach_disk_from_vm(
            disk_href=disk.get('href'), vm_name=vm_name)
        stdout(task, ctx)
    except Exception as e:
        stderr(e, ctx)
class Disk(VcdAnsibleModule):
    def __init__(self, **kwargs):
        super(Disk, self).__init__(**kwargs)
        logged_in_org = self.client.get_org()
        self.org = Org(self.client, resource=logged_in_org)
        vdc = self.org.get_vdc(self.params.get('vdc'))
        self.vdc = VDC(self.client, href=vdc.get('href'))

    def manage_states(self):
        state = self.params.get('state')
        if state == 'present':
            return self.create()

        if state == 'absent':
            return self.delete()

        if state == 'update':
            return self.update()

    def create(self):
        disk_name = self.params.get('disk_name')
        disk_id = self.params.get('disk_id')
        size = self.params.get('size')
        description = self.params.get('description')
        storage_profile = self.params.get('storage_profile')
        bus_type = self.params.get('bus_type')
        bus_sub_type = self.params.get('bus_sub_type')
        iops = self.params.get('iops')
        response = dict()
        response['changed'] = False

        try:
            self.vdc.get_disk(name=disk_name, disk_id=disk_id)
        except EntityNotFoundException:
            create_disk_task = self.vdc.create_disk(name=disk_name,
                                                    size=size,
                                                    bus_type=bus_type,
                                                    bus_sub_type=bus_sub_type,
                                                    description=description,
                                                    iops=iops,
                                                    storage_profile_name=storage_profile)
            self.execute_task(create_disk_task.Tasks.Task[0])
            response['msg'] = 'Disk {} has been created.'.format(disk_name)
            response['changed'] = True
        else:
            response['warnings'] = "Disk {} is already present.".format(disk_name)

        return response

    def update(self):
        disk_name = self.params.get('disk_name')
        disk_id = self.params.get('disk_id')
        new_disk_name = self.params.get('new_disk_name')
        new_size = self.params.get('new_size')
        new_description = self.params.get('new_description')
        new_storage_profile = self.params.get('new_storage_profile')
        new_iops = self.params.get('new_iops')
        response = dict()
        response['changed'] = False

        update_disk_task = self.vdc.update_disk(name=disk_name,
                                                disk_id=disk_id,
                                                new_name=new_disk_name,
                                                new_size=new_size,
                                                new_iops=new_iops,
                                                new_description=new_description,
                                                new_storage_profile_name=new_storage_profile)
        self.execute_task(update_disk_task)
        response['msg'] = 'Disk {} has been updated.'.format(disk_name)
        response['changed'] = True

        return response

    def delete(self):
        disk_name = self.params.get('disk_name')
        disk_id = self.params.get('disk_id')
        response = dict()
        response['changed'] = False

        try:
            self.vdc.get_disk(name=disk_name, disk_id=disk_id)
        except EntityNotFoundException:
            response['warnings'] = "Disk {} is not present.".format(disk_name)
        else:
            delete_disk_task = self.vdc.delete_disk(name=disk_name,
                                                    disk_id=disk_id)
            self.execute_task(delete_disk_task)
            response['msg'] = 'Disk {} has been deleted.'.format(disk_name)
            response['changed'] = True

        return response