示例#1
0
def do_create(cs, args):
    """Creates a new migration process"""
    try:
        properties = _extract_dict(args.properties)
    except Exception:
        raise exceptions.CommandError("Unable to convert properties to dict: "
                                      "%s" % params)

    resource = utils.find_cloud_resource(cs, args.resource)
    destination = utils.find_cloud(cs, args.destination, type='destination')

    if destination.type != "destination":
        raise exceptions.CommandError("No destination cloud exist with %s." %
                                      args.destination)

    kwargs = {'name': args.name,
              'description': args.description,
              'resource': resource.id,
              'destination': destination.id,
              'properties': properties}

    migration = cs.migrations.create(**kwargs)
    info = dict()
    info.update(migration._info)
    info['properties'] = _dict_to_string(info['properties'])

    utils.print_dict(info)
示例#2
0
def do_resource_list(cs, args):
    """Get resources list"""
    source_id = None
    if args.source:
        source_ref = utils.find_cloud(cs, args.source, type='source')
        source_id = source_ref.id

    search_opts = {
        'name': args.name,
        'type': args.type,
        'cloud_id': source_id,
        'type': args.type
    }
    field_titles = []
    if args.fields:
        for field_title in args.fields.split(','):
            field_titles.append(field_title)

    resources = cs.resources.list(search_opts=search_opts,
                                  marker=args.marker,
                                  limit=args.limit,
                                  sort=args.sort)
    if field_titles:
        key_list = ['ID'] + field_titles
    else:
        key_list = ['ID', 'Name', 'Type', 'cloud']
    if args.sort:
        sortby_index = None
    else:
        sortby_index = 0
    utils.print_list(resources, key_list, exclude_unavailable=True,
                     sortby_index=sortby_index)
示例#3
0
def _cloud_update(cs, args, type=None):
    cloud = utils.find_cloud(cs, args.cloud, type=type)
    if type and type != cloud.type:
        raise exceptions.CommandError("No %s cloud exist with %s." %
                                      (type, args.cloud))
    updates = {}
    if args.name:
        updates['name'] = args.name
    if args.driver:
        updates['driver'] = args.driver
    if args.capabilities:
        capabilities = _extract_list(args.capabilities)
        updates['capabilities'] = capabilities
    if args.params:
        try:
            params = _extract_dict(args.params)
        except Exception:
            raise exceptions.CommandError("Unable to convert params to "
                                          "dict: %s" % args.params)
        updates['params'] = params

    if not updates:
        raise exceptions.CommandError("Nothing to update.")
    result = cloud.update(**updates)

    info = dict()
    info.update(result._info)
    info['params'] = _dict_to_string(info['params'])
    info['capabilities'] = _list_to_string(info['capabilities'])
    if info['type'] == 'destination':
        info['properties'] = _extract_props(info['properties'])
    utils.print_dict(info)
示例#4
0
def _cloud_show(cs, args, type=None):
    info = dict()
    cloud = utils.find_cloud(cs, args.cloud, type=type)

    if type and type != cloud.type:
        raise exceptions.CommandError("No %s cloud exist with %s." %
                                      (type, args.cloud))
    info.update(cloud._info)
    info['params'] = _dict_to_string(info['params'])
    info['capabilities'] = _list_to_string(info['capabilities'])
    if info['type'] == 'destination':
        info['properties'] = _extract_props(info['properties'])

    utils.print_dict(info)
示例#5
0
def _cloud_disable(cs, args, type=None):
    cloud = utils.find_cloud(cs, args.cloud, type=type)
    if type and type != cloud.type:
        raise exceptions.CommandError("No %s cloud exist with %s." %
                                      (type, args.cloud))
    if cloud.enabled is False:
        raise exceptions.CommandError("Cloud already disabled.")
    result = cloud.disable()
    info = dict()
    info.update(result._info)
    info['params'] = _dict_to_string(info['params'])
    info['capabilities'] = _list_to_string(info['capabilities'])
    if info['type'] == 'destination':
        info['properties'] = _extract_props(info['properties'])
    utils.print_dict(info)
示例#6
0
def do_properties_fetch(cs, args):
    """Fetches properties from one or more Clouds."""
    clouds = []
    if args.cloud:
        for c in args.cloud:
            try:
                cloud = utils.find_cloud(cs, c, type='destination')

                if cloud.type != 'destination':
                    raise exceptions.CommandError("No destination cloud exist "
                                                  "with name or ID %s." % c)
                clouds.append(cloud.id)
            except Exception as e:
                print("Failed to fetch properties from the Cloud %s. "
                      "Reason: %s" % (c, e))
    cs.clouds.properties_update(clouds)
示例#7
0
def do_resource_fetch(cs, args):
    """Fetches resources from one or more Clouds."""
    clouds = []
    if args.cloud:
        for c in args.cloud:
            try:
                cloud = utils.find_cloud(cs, c, type='source')

                if cloud.type != 'source':
                    raise exceptions.CommandError("No source cloud exist with "
                                                  "name or ID %s." % c)
                clouds.append(cloud.id)
            except Exception as e:
                print("Failed to fetch resources from the Cloud %s. "
                      "Reason: %s" % (c, e))
    cs.clouds.fetch(clouds)
示例#8
0
def _cloud_delete(cs, cloud, type=None):
    cloud = utils.find_cloud(cs, cloud, type=type)
    if type and type != cloud.type:
        raise exceptions.CommandError("No %s cloud exist with %s." %
                                      (type, cloud))
    cloud.delete()