Beispiel #1
0
def do_host_lvg_delete(cc, args):
    """Delete a Local Volume Group."""

    # Get the ihost object
    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
    ilvg = ilvg_utils._find_ilvg(cc, ihost, args.lvm_vg_name)

    try:
        cc.ilvg.delete(ilvg.uuid)
    except exc.HTTPNotFound:
        raise exc.CommandError('Local Volume Group delete failed: host %s: '
                               'lvg %s' %
                               (args.hostnameorid, args.lvm_vg_name))
Beispiel #2
0
def do_host_lvg_modify(cc, args):
    """Modify the attributes of a Local Volume Group."""

    # Get all the fields from the command arguments
    field_list = [
        'hostnameorid', 'lvgnameoruuid', 'instance_backing',
        'concurrent_disk_operations', 'lvm_type'
    ]
    fields = dict((k, v) for (k, v) in vars(args).items()
                  if k in field_list and not (v is None))

    all_caps_list = [
        'instance_backing', 'concurrent_disk_operations', 'lvm_type'
    ]
    integer_fields = ['concurrent_disk_operations']
    requested_caps_dict = {}

    for cap in all_caps_list:
        if cap in fields:
            try:
                if cap in integer_fields:
                    requested_caps_dict[cap] = int(fields[cap])
                else:
                    requested_caps_dict[cap] = fields[cap]
            except ValueError:
                raise exc.CommandError('{0} value {1} is invalid'.format(
                    cap, fields[cap]))

    # Get the ihost object
    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)

    # Get the volume group
    lvg = ilvg_utils._find_ilvg(cc, ihost, args.lvgnameoruuid)

    # format the arguments
    patch = []
    patch.append({
        'path': '/capabilities',
        'value': jsonutils.dumps(requested_caps_dict),
        'op': 'replace'
    })

    # Update the volume group attributes
    try:
        ilvg = cc.ilvg.update(lvg.uuid, patch)
    except exc.HTTPNotFound:
        raise exc.CommandError("ERROR: Local Volume Group update failed: "
                               "host %s volume group %s : update %s" %
                               (args.hostnameorid, args.lvgnameoruuid, patch))

    _print_ilvg_show(ilvg)
Beispiel #3
0
def do_host_pv_add(cc, args):
    """Add a Physical Volume."""

    field_list = ['disk_or_part_uuid']

    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
    ilvg = ilvg_utils._find_ilvg(cc, ihost, args.lvgname)

    fields = {}
    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in field_list and not (v is None))
    fields.update(user_specified_fields)

    fields['ihost_uuid'] = ihost.uuid
    fields['ilvg_uuid'] = ilvg.uuid

    idisk = idisk_utils._find_disk(cc, ihost,
                                   args.device_name_path_uuid)
    if idisk:
        fields['disk_or_part_uuid'] = idisk.uuid
        fields['pv_type'] = 'disk'
    else:
        partition = partition_utils._find_partition(cc, ihost,
                                                    args.device_name_path_uuid)
        if partition:
            fields['disk_or_part_uuid'] = partition.uuid
            fields['pv_type'] = 'partition'

    if not idisk and not partition:
        raise exc.CommandError("No disk or partition found on host \'%s\' "
                               "by device path or uuid %s" %
                               (ihost.hostname, args.device_name_path_uuid))

    try:
        ipv = cc.ipv.create(**fields)
    except exc.HTTPNotFound:
        raise exc.CommandError("Physical volume creation failed: host %s: "
                               "fields %s" % (args.hostnameorid, fields))

    suuid = getattr(ipv, 'uuid', '')
    try:
        ipv = cc.ipv.get(suuid)
    except exc.HTTPNotFound:
        raise exc.CommandError("Created physical volume UUID not found: "
                               "%s" % suuid)

    _print_ipv_show(ipv)
Beispiel #4
0
def do_host_lvg_show(cc, args):
    """Show Local Volume Group attributes."""
    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
    ilvg = ilvg_utils._find_ilvg(cc, ihost, args.lvgnameoruuid)
    _print_ilvg_show(ilvg)