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)
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)
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)
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)
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)
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)
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)
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()