def count(cls, args): """ Count all objects """ inspector = VSDKInspector(args.version) name = Utils.get_singular_name(args.name) instance = inspector.get_vsdk_instance(name) session = inspector.get_user_session(args) parent = inspector.get_vsdk_parent(args.parent_infos, session.user) classname = instance.__class__.__name__[2:] plural_classname = Utils.get_plural_name(classname) fetcher_name = Utils.get_python_name(plural_classname) try: fetcher = getattr(parent, fetcher_name) except: if parent.rest_name == 'me': parent_name = 'Root' error_message = '%s failed to found children %s. Maybe you forgot to specify the parent using `--in [parent] [ID]` syntax ?' % (parent_name, fetcher_name) else: parent_name = parent.rest_name error_message = '%s failed to found children %s. You can use command `vsd objects -c %s` to list all possible parents' % (parent_name, fetcher_name, fetcher_name) Printer.raise_error(error_message) (fetcher, parent, count) = fetcher.count(filter=args.filter) if not args.json: Printer.success('%s %s have been retrieved' % (count, instance.rest_resource_name)) Printer.output({instance.rest_resource_name: count}, fields=[instance.rest_resource_name], json=args.json)
def create(cls, args): """ Create an object """ inspector = VSDKInspector(args.version) name = Utils.get_singular_name(args.name) instance = inspector.get_vsdk_instance(name) session = inspector.get_user_session(args) parent = inspector.get_vsdk_parent(args.parent_infos, session.user) attributes = cls._get_attributes(args.params) cls._fill_instance_with_attributes(instance, attributes) try: (instance, connection) = parent.create_child(instance) except Exception, e: Printer.raise_error('Cannot create %s:\n%s' % (name, e))
def _internal_assign(cls, args, method): """ Execute method to list final assignation Returns: (nb_affected_objects, assigned_objects_name, assigned_objects_ids, parent_name, parent_id) """ inspector = VSDKInspector(args.version) name = Utils.get_singular_name(args.name) object_class = inspector.get_vsdk_class(name) object_type = object_class() session = inspector.get_user_session(args) resource = inspector.get_vsdk_parent(args.parent_infos, session.user) classname = object_class.__name__[2:] plural_classname = Utils.get_plural_name(classname) fetcher_name = Utils.get_python_name(plural_classname) try: fetcher = getattr(resource, fetcher_name) except: if resource.rest_name == 'me': resource_name = 'Root' error_message = '%s failed to found children %s.' % (resource_name, fetcher_name) Printer.raise_error(error_message) (fetcher, resource, current_objects) = fetcher.fetch() if current_objects is None: current_objects = [] (final_objects, nb_affected_objects) = method(object_class, args.ids, current_objects) try: (references, connection) = resource.assign(final_objects, object_class) except Exception, e: Printer.raise_error('Cannot assign %s:\n%s' % (name, e))