Example #1
0
    def run(self):
        org_name = self.get_option("org")
        env_name = self.get_option("environment")
        sys_name = self.get_option("name")
        sys_uuid = self.get_option("uuid")
        keyname = self.get_option("keyname")
        new_value = self.get_option("value")

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.update_custom_info("system", system["id"], keyname, new_value)

        ident = sys_uuid if sys_uuid else sys_name

        if response is not None:
            print _("Successfully updated Custom Information [ %(keyname)s ] for System [ %(ident)s ]") % {
                "keyname": keyname,
                "ident": ident,
            }
        else:
            print _("Could not update Custom Information [ %(keyname)s ] for System [ %(ident)s ]") % {
                "keyname": keyname,
                "ident": ident,
            }
Example #2
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        install = self.get_option('install')
        remove = self.get_option('remove')
        update = self.get_option('update')
        install_groups = self.get_option('install_groups')
        remove_groups = self.get_option('remove_groups')

        task = None

        if env_name is None:
            self.printer.set_header(_("Package Information for System [ %(sys_name)s ] in Org [ %(org_name)s ]") \
                % {'sys_name':sys_name, 'org_name':org_name})
        else:
            self.printer.set_header(_("Package Information for System [ %(sys_name)s ] " \
                "in Environment [ %(env_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name, 'env_name':env_name, 'org_name':org_name})

        system = get_system(org_name, sys_name, env_name, sys_uuid)
        system_id = system['uuid']

        if install:
            task = self.api.install_packages(system_id, install)
        if remove:
            task = self.api.remove_packages(system_id, remove)
        if update:
            if update == '--all':
                update_packages = []
            else:
                update_packages = update
            task = self.api.update_packages(system_id, update_packages)
        if install_groups:
            task = self.api.install_package_groups(system_id, install_groups)
        if remove_groups:
            task = self.api.remove_package_groups(system_id, remove_groups)

        if task:
            uuid = task["uuid"]
            print (_("Performing remote action [ %s ]... ") % uuid)
            task = SystemAsyncTask(task)
            run_spinner_in_bg(wait_for_async_task, [task])

            return evaluate_remote_action(task)

        packages = self.api.packages(system_id)

        batch_add_columns(self.printer, {'name': _("Name")}, {'vendor': _("Vendor")}, \
            {'version': _("Version")}, {'release': _("Release")}, {'arch': _("Arch")}, \
            show_with=printer.VerboseStrategy)
        self.printer.add_column('name_version_release_arch', _("Name_Version_Release_Arch"), \
            show_with=printer.GrepStrategy, \
            item_formatter=lambda p: "%s-%s-%s.%s" % (p['name'], p['version'], p['release'], p['arch']))

        self.printer.print_items(packages)

        return os.EX_OK
Example #3
0
    def run(self):
        org_name = self.get_option("org")
        env_name = self.get_option("environment")
        sys_name = self.get_option("name")
        sys_uuid = self.get_option("uuid")

        if env_name is None:
            self.printer.set_header(
                _("System Facts For System [ %s ] in Org [ %s ]") % (sys_name if sys_name else sys_uuid, org_name)
            )
        else:
            self.printer.set_header(
                _("System Facts For System [ %s ] in Environment [ %s ] in Org [ %s ]") % (sys_name, env_name, org_name)
            )

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        facts_hash = system["facts"]
        facts_tuples_sorted = [(k, facts_hash[k]) for k in sorted(facts_hash.keys())]
        for k, v in facts_tuples_sorted:
            self.printer.add_column(k)
            system[k] = v

        self.printer.print_item(system)

        return os.EX_OK
Example #4
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        new_name = self.get_option('new_name')
        new_description = self.get_option('description')
        new_location = self.get_option('location')
        new_release = self.get_option('release')
        new_sla = self.get_option('sla')

        system = get_system(org_name, sys_name, env_name)
        system_uuid = system['uuid']

        updates = {}
        if new_name: updates['name'] = new_name
        if new_description: updates['description'] = new_description
        if new_location: updates['location'] = new_location
        if new_release: updates['releaseVer'] = new_release
        if new_sla: updates['serviceLevel'] = new_sla

        response = self.api.update(system_uuid, updates)

        test_record(response,
                    _("Successfully updated system [ %s ]") % system['name'],
                    _("Could not update system [ %s ]") % system['name'])
Example #5
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        install = self.get_option('install')
        remove = self.get_option('remove')
        update = self.get_option('update')
        install_groups = self.get_option('install_groups')
        remove_groups = self.get_option('remove_groups')

        task = None

        if env_name is None:
            self.printer.set_header(_("Package Information for System [ %(sys_name)s ] in Org [ %(org_name)s ]") \
                % {'sys_name':sys_name, 'org_name':org_name})
        else:
            self.printer.set_header(_("Package Information for System [ %(sys_name)s ] " \
                "in Environment [ %(env_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name, 'env_name':env_name, 'org_name':org_name})

        system = get_system(org_name, sys_name, env_name, sys_uuid)
        system_id = system['uuid']

        if install:
            task = self.api.install_packages(system_id, install)
        if remove:
            task = self.api.remove_packages(system_id, remove)
        if update:
            if update == '--all':
                update_packages = []
            else:
                update_packages = update
            task = self.api.update_packages(system_id, update_packages)
        if install_groups:
            task = self.api.install_package_groups(system_id, install_groups)
        if remove_groups:
            task = self.api.remove_package_groups(system_id, remove_groups)

        if task:
            uuid = task["uuid"]
            print(_("Performing remote action [ %s ]... ") % uuid)
            task = SystemAsyncTask(task)
            run_spinner_in_bg(wait_for_async_task, [task])

            return evaluate_remote_action(task)

        packages = self.api.packages(system_id)

        batch_add_columns(self.printer, {'name': _("Name")}, {'vendor': _("Vendor")}, \
            {'version': _("Version")}, {'release': _("Release")}, {'arch': _("Arch")}, \
            show_with=printer.VerboseStrategy)
        self.printer.add_column('name_version_release_arch', _("Name_Version_Release_Arch"), \
            show_with=printer.GrepStrategy, \
            item_formatter=lambda p: "%s-%s-%s.%s" % (p['name'], p['version'], p['release'], p['arch']))

        self.printer.print_items(packages)

        return os.EX_OK
Example #6
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        if env_name is None:
            self.printer.set_header(_("System Facts For System [ %(sys_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name if sys_name else sys_uuid, 'org_name':org_name})
        else:
            self.printer.set_header(_("System Facts For System [ %(sys_name)s ] " \
                "in Environment [ %(env_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name, 'env_name':env_name, 'org_name':org_name})

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        facts_hash = system['facts']
        facts_tuples_sorted = [(k, facts_hash[k]) for k in sorted(facts_hash.keys())]
        for k, v in facts_tuples_sorted:
            self.printer.add_column(k)
            system[k] = v

        self.printer.print_item(system)

        return os.EX_OK
Example #7
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        new_name = self.get_option('new_name')
        new_description = self.get_option('description')
        new_location = self.get_option('location')
        new_release = self.get_option('release')
        new_sla = self.get_option('sla')

        system = get_system(org_name, sys_name, env_name)
        system_uuid = system['uuid']

        updates = {}
        if new_name: updates['name'] = new_name
        if new_description: updates['description'] = new_description
        if new_location: updates['location'] = new_location
        if new_release: updates['releaseVer'] = new_release
        if new_sla: updates['serviceLevel'] = new_sla

        response = self.api.update(system_uuid, updates)

        test_record(response,
            _("Successfully updated system [ %s ]") % system['name'],
            _("Could not update system [ %s ]") % system['name']
        )
Example #8
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        if env_name is None:
            self.printer.set_header(_("System Facts For System [ %(sys_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name if sys_name else sys_uuid, 'org_name':org_name})
        else:
            self.printer.set_header(_("System Facts For System [ %(sys_name)s ] " \
                "in Environment [ %(env_name)s ] in Org [ %(org_name)s ]") % \
                {'sys_name':sys_name, 'env_name':env_name, 'org_name':org_name})

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        facts_hash = system['facts']
        facts_tuples_sorted = [(k, facts_hash[k])
                               for k in sorted(facts_hash.keys())]
        for k, v in facts_tuples_sorted:
            self.printer.add_column(k)
            system[k] = v

        self.printer.print_item(system)

        return os.EX_OK
Example #9
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        pool = self.get_option('pool')
        qty = self.get_option('quantity') or 1

        system = get_system(org, name)

        self.api.subscribe(system['uuid'], pool, qty)
        print _("Successfully subscribed System [ %s ]") % name
        return os.EX_OK
Example #10
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        pool = self.get_option('pool')
        qty = self.get_option('quantity') or 1

        system = get_system(org, name)

        self.api.subscribe(system['uuid'], pool, qty)
        print _("Successfully subscribed System [ %s ]") % name
        return os.EX_OK
Example #11
0
    def run(self):
        name = self.get_option("name")
        org = self.get_option("org")
        pool = self.get_option("pool")
        qty = self.get_option("quantity") or 1
        sys_uuid = self.get_option("uuid")

        system = get_system(org, name, sys_uuid=sys_uuid)

        self.api.subscribe(system["uuid"], pool, qty)
        print _("Successfully subscribed System [ %s ]") % name
        return os.EX_OK
Example #12
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        if sys_uuid:
            self.printer.set_header(_("System Information [ %s ]") % sys_uuid)
        elif env_name is None:
            self.printer.set_header(_("System Information For Org [ %s ]") % org_name)
        else:
            self.printer.set_header(_("System Information For Environment [ %(env_name)s ] in Org [ %(org_name)s ]") \
                % {'env_name':env_name, 'org_name':org_name})

        # get system details
        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()
        custom_info = custom_info_api.get_custom_info("system", system['id'])
        system['custom_info'] = stringify_custom_info(custom_info)

        system["activation_keys"] = "[ "+ ", ".join([ak["name"] for ak in system["activation_key"]]) +" ]"
        if 'host' in system:
            system['host'] = system['host']['name']
        if 'guests' in system:
            system["guests"] = "[ "+ ", ".join([guest["name"] for guest in system["guests"]]) +" ]"
        if 'environment' in system:
            system['environment'] = system['environment']['name']

        if 'content_view' in system:
            system['content_view'] = "[ %s ]" % system['content_view']['name']


        batch_add_columns(self.printer, {'name': _("Name")}, {'ipv4_address': _("IPv4 Address")}, \
            {'uuid': _("UUID")}, {'environment': _("Environment")}, {'location': _("Location")})
        self.printer.add_column('created_at', _("Registered"), formatter=format_date)
        self.printer.add_column('updated_at', _("Last Updated"), formatter=format_date)
        self.printer.add_column('description', _("Description"), multiline=True)
        if 'release' in system and system['release']:
            self.printer.add_column('release', _("OS Release"))
        self.printer.add_column('activation_keys', _("Activation Keys"), multiline=True, \
            show_with=printer.VerboseStrategy)
        self.printer.add_column('host', _("Host"), show_with=printer.VerboseStrategy)
        self.printer.add_column('sockets', _("Sockets"))
        self.printer.add_column('ram', _("RAM (MB)"))
        self.printer.add_column('serviceLevel', _("Service Level"))
        self.printer.add_column('guests', _("Guests"), show_with=printer.VerboseStrategy)
        self.printer.add_column('custom_info', _("Custom Info"), multiline=True, show_with=printer.VerboseStrategy)
        self.printer.add_column('content_view', _("Content View"))

        self.printer.print_item(system)

        return os.EX_OK
Example #13
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        env_name = self.get_option('environment')
        try:
            system = get_system(org, name, env_name)

        except ServerRequestError, e:
            if e[0] == 404:
                return os.EX_DATAERR
            else:
                raise e
Example #14
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        env_name = self.get_option('environment')
        try:
            system = get_system(org, name, env_name)

        except ServerRequestError, e:
            if e[0] == 404:
                return os.EX_DATAERR
            else:
                raise e
Example #15
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')

        if env_name is None:
            self.printer.set_header(
                _("System Information For Org [ %s ]") % org_name)
        else:
            self.printer.set_header(
                _("System Information For Environment [ %s ] in Org [ %s ]") %
                (env_name, org_name))

        # get system details
        system = get_system(org_name, sys_name, env_name)

        for akey in system['activation_key']:
            system["activation_keys"] = "[ " + ", ".join(
                [akey["name"] for pool in akey["pools"]]) + " ]"
        if 'host' in system:
            system['host'] = system['host']['name']
        if 'guests' in system:
            system["guests"] = "[ " + ", ".join(
                [guest["name"] for guest in system["guests"]]) + " ]"

        self.printer.add_column('name')
        self.printer.add_column('ipv4_address')
        self.printer.add_column('uuid')
        self.printer.add_column('location')
        self.printer.add_column('created_at',
                                'Registered',
                                formatter=format_date)
        self.printer.add_column('updated_at',
                                'Last updated',
                                formatter=format_date)
        self.printer.add_column('description', multiline=True)
        if 'releaseVer' in system and system['releaseVer']:
            self.printer.add_column('releaseVer', 'OS release')
        self.printer.add_column('activation_keys',
                                multiline=True,
                                show_with=printer.VerboseStrategy)
        self.printer.add_column('host', show_with=printer.VerboseStrategy)
        self.printer.add_column('serviceLevel', _('Service Level'))
        self.printer.add_column('guests', show_with=printer.VerboseStrategy)
        if "template" in system:
            self.printer.add_column('template',
                                    show_with=printer.VerboseStrategy,
                                    value=system["template"]["name"])

        self.printer.print_item(system)

        return os.EX_OK
Example #16
0
    def run(self):
        name = self.get_option("name")
        org = self.get_option("org")
        env_name = self.get_option("environment")
        sys_uuid = self.get_option("uuid")

        try:
            system = get_system(org, name, env_name, sys_uuid)

        except ServerRequestError, e:
            if e[0] == 404:
                return os.EX_DATAERR
            else:
                raise
Example #17
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        pool = self.get_option('pool')
        qty = self.get_option('quantity') or 1
        sys_uuid = self.get_option('uuid')

        display_name = name or sys_uuid

        system = get_system(org, name, sys_uuid = sys_uuid)

        self.api.subscribe(system['uuid'], pool, qty)
        print _("Successfully attached subscription to System [ %s ]") % display_name
        return os.EX_OK
Example #18
0
    def run(self):
        name = self.get_option("name")
        org = self.get_option("org")
        pool = self.get_option("pool")
        qty = self.get_option("quantity") or 1
        sys_uuid = self.get_option("uuid")

        display_name = name or sys_uuid

        system = get_system(org, name, sys_uuid=sys_uuid)

        self.api.subscribe(system["uuid"], pool, qty)
        print _("Successfully attached subscription to System [ %s ]") % display_name
        return os.EX_OK
Example #19
0
    def run(self):
        systemApi = SystemAPI()

        org_name = self.get_option('org')
        sys_name = self.get_option('name')

        system = get_system(org_name, sys_name)
        errata = systemApi.errata(system["uuid"])

        batch_add_columns(self.printer, 'id', 'title', 'type')
        self.printer.set_header(_("Errata for system %s in organization %s") % (sys_name, org_name))
        self.printer.print_items(errata)

        return os.EX_OK
Example #20
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        pool = self.get_option('pool')
        qty = self.get_option('quantity') or 1
        sys_uuid = self.get_option('uuid')

        display_name = name or sys_uuid

        system = get_system(org, name, sys_uuid=sys_uuid)

        self.api.subscribe(system['uuid'], pool, qty)
        print _("Successfully attached subscription to System [ %s ]"
                ) % display_name
        return os.EX_OK
Example #21
0
    def run(self):
        systemApi = SystemAPI()

        org_name = self.get_option('org')
        sys_name = self.get_option('name')

        system = get_system(org_name, sys_name)
        errata = systemApi.errata(system["uuid"])

        batch_add_columns(self.printer, {'errata_id': _("ID")}, {'title': _("Title")}, {'type': _("Type")})
        self.printer.set_header(_("Errata for system %(sys_name)s in organization %(org_name)s")
            % {'sys_name':sys_name, 'org_name':org_name})
        self.printer.print_items(errata)

        return os.EX_OK
Example #22
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        env_name = self.get_option('environment')
        sys_uuid = self.get_option('uuid')

        display_name = name or sys_uuid

        try:
            system = get_system(org, name, env_name, sys_uuid)

        except ServerRequestError, e:
            if e[0] == 404:
                return os.EX_DATAERR
            else:
                raise
Example #23
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        env_name = self.get_option('environment')
        sys_uuid = self.get_option('uuid')

        display_name = name or sys_uuid

        try:
            system = get_system(org, name, env_name, sys_uuid)

        except ServerRequestError, e:
            if e[0] == 404:
                return os.EX_DATAERR
            else:
                raise
Example #24
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        if sys_uuid:
            self.printer.set_header(_("System Information [ %s ]") % sys_uuid)
        elif env_name is None:
            self.printer.set_header(_("System Information For Org [ %s ]") % org_name)
        else:
            self.printer.set_header(_("System Information For Environment [ %s ] in Org [ %s ]") % (env_name, org_name))

        # get system details
        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()
        custom_info = custom_info_api.get_custom_info("system", system['id'])
        system['custom_info'] = "[ %s ]" % ", ".join(["%s: [ %s ]" % (k, ", ".join(custom_info[k])) \
            for k in custom_info.keys()])

        system["activation_keys"] = "[ "+ ", ".join([ak["name"] for ak in system["activation_key"]]) +" ]"
        if 'host' in system:
            system['host'] = system['host']['name']
        if 'guests' in system:
            system["guests"] = "[ "+ ", ".join([guest["name"] for guest in system["guests"]]) +" ]"

        self.printer.add_column('name')
        self.printer.add_column('ipv4_address')
        self.printer.add_column('uuid')
        self.printer.add_column('location')
        self.printer.add_column('created_at', 'Registered', formatter=format_date)
        self.printer.add_column('updated_at', 'Last updated', formatter=format_date)
        self.printer.add_column('description', multiline=True)
        if 'releaseVer' in system and system['releaseVer']:
            self.printer.add_column('releaseVer', 'OS release')
        self.printer.add_column('activation_keys', multiline=True, show_with=printer.VerboseStrategy)
        self.printer.add_column('host', show_with=printer.VerboseStrategy)
        self.printer.add_column('serviceLevel', _('Service Level'))
        self.printer.add_column('guests', show_with=printer.VerboseStrategy)
        if "template" in system:
            self.printer.add_column('template', show_with=printer.VerboseStrategy, value=system["template"]["name"])
        self.printer.add_column('custom_info', multiline=True, show_with=printer.VerboseStrategy)

        self.printer.print_item(system)

        return os.EX_OK
Example #25
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        new_name = self.get_option('new_name')
        new_environment_name = self.get_option('new_environment')
        new_description = self.get_option('description')
        new_location = self.get_option('location')
        new_release = self.get_option('release')
        new_sla = self.get_option('sla')
        sys_uuid = self.get_option('uuid')
        view_name = self.get_option("view_name")
        view_label = self.get_option("view_label")
        view_id = self.get_option("view_id")
        remove_view = self.get_option("remove_view")

        system = get_system(org_name, sys_name, env_name, sys_uuid)
        new_environment = get_environment(org_name, new_environment_name)

        updates = {}
        if new_name:
            updates['name'] = new_name
        if new_description:
            updates['description'] = new_description
        if new_location:
            updates['location'] = new_location
        if new_release:
            updates['releaseVer'] = new_release
        if new_sla:
            updates['serviceLevel'] = new_sla
        if new_environment_name:
            new_environment = get_environment(org_name, new_environment_name)
            updates['environment_id'] = new_environment['id']

        if remove_view:
            updates["content_view_id"] = False
        elif view_label or view_name or view_id:
            updates["content_view_id"] = get_content_view(org_name, view_label,
                                                          view_name, view_id)["id"]

        response = self.api.update(system['uuid'], updates)

        test_record(response,
            _("Successfully updated system [ %s ]") % system['name'],
            _("Could not update system [ %s ]") % system['name']
        )
Example #26
0
    def run(self):
        systemApi = SystemAPI()

        org_name = self.get_option("org")
        sys_name = self.get_option("name")

        system = get_system(org_name, sys_name)
        errata = systemApi.errata(system["uuid"])

        batch_add_columns(self.printer, {"id": _("ID")}, {"title": _("Title")}, {"type": _("Type")})
        self.printer.set_header(
            _("Errata for system %(sys_name)s in organization %(org_name)s")
            % {"sys_name": sys_name, "org_name": org_name}
        )
        self.printer.print_items(errata)

        return os.EX_OK
Example #27
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        new_name = self.get_option('new_name')
        new_environment_name = self.get_option('new_environment')
        new_description = self.get_option('description')
        new_location = self.get_option('location')
        new_release = self.get_option('release')
        new_sla = self.get_option('sla')
        sys_uuid = self.get_option('uuid')
        view_name = self.get_option("view_name")
        view_label = self.get_option("view_label")
        view_id = self.get_option("view_id")
        remove_view = self.get_option("remove_view")

        system = get_system(org_name, sys_name, env_name, sys_uuid)
        new_environment = get_environment(org_name, new_environment_name)

        updates = {}
        if new_name:
            updates['name'] = new_name
        if new_description:
            updates['description'] = new_description
        if new_location:
            updates['location'] = new_location
        if new_release:
            updates['releaseVer'] = new_release
        if new_sla is not None:
            updates['serviceLevel'] = new_sla
        if new_environment_name:
            new_environment = get_environment(org_name, new_environment_name)
            updates['environment_id'] = new_environment['id']

        if remove_view:
            updates["content_view_id"] = False
        elif view_label or view_name or view_id:
            updates["content_view_id"] = get_content_view(
                org_name, view_label, view_name, view_id)["id"]

        response = self.api.update(system['uuid'], updates)

        test_record(response,
                    _("Successfully updated system [ %s ]") % system['name'],
                    _("Could not update system [ %s ]") % system['name'])
Example #28
0
    def run(self):
        org_name = self.get_option("org")
        env_name = self.get_option("environment")
        sys_name = self.get_option("name")
        sys_uuid = self.get_option("uuid")

        if sys_uuid:
            self.printer.set_header(_("System Information [ %s ]") % sys_uuid)
        elif env_name is None:
            self.printer.set_header(_("System Information For Org [ %s ]") % org_name)
        else:
            self.printer.set_header(_("System Information For Environment [ %s ] in Org [ %s ]") % (env_name, org_name))

        # get system details
        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()
        custom_info = custom_info_api.get_custom_info("system", system["id"])
        system["custom_info"] = stringify_custom_info(custom_info)

        system["activation_keys"] = "[ " + ", ".join([ak["name"] for ak in system["activation_key"]]) + " ]"
        if "host" in system:
            system["host"] = system["host"]["name"]
        if "guests" in system:
            system["guests"] = "[ " + ", ".join([guest["name"] for guest in system["guests"]]) + " ]"

        batch_add_columns(self.printer, "name", "ipv4_address", "uuid", "location")
        self.printer.add_column("created_at", _("Registered"), formatter=format_date)
        self.printer.add_column("updated_at", _("Last updated"), formatter=format_date)
        self.printer.add_column("description", multiline=True)
        if "release" in system and system["release"]:
            self.printer.add_column("release", _("OS release"))
        self.printer.add_column("activation_keys", multiline=True, show_with=printer.VerboseStrategy)
        self.printer.add_column("host", show_with=printer.VerboseStrategy)
        self.printer.add_column("sockets")
        self.printer.add_column("ram", _("RAM (MB)"))
        self.printer.add_column("serviceLevel", _("Service Level"))
        self.printer.add_column("guests", show_with=printer.VerboseStrategy)
        if "template" in system:
            self.printer.add_column("template", show_with=printer.VerboseStrategy, value=system["template"]["name"])
        self.printer.add_column("custom_info", multiline=True, show_with=printer.VerboseStrategy)

        self.printer.print_item(system)

        return os.EX_OK
Example #29
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        entitlement = self.get_option('entitlement')
        serial = self.get_option('serial')
        all_entitlements = self.get_option('all')

        system = get_system(org, name)

        if all_entitlements:  #unsubscribe from all
            self.api.unsubscribe_all(system['uuid'])
        elif serial:  # unsubscribe from cert
            self.api.unsubscribe_by_serial(system['uuid'], serial)
        elif entitlement:  # unsubscribe from entitlement
            self.api.unsubscribe(system['uuid'], entitlement)
        print _("Successfully unsubscribed System [ %s ]") % name

        return os.EX_OK
Example #30
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        entitlement = self.get_option('entitlement')
        serial = self.get_option('serial')
        all_entitlements = self.get_option('all')

        system = get_system(org, name)

        if all_entitlements: #unsubscribe from all
            self.api.unsubscribe_all(system['uuid'])
        elif serial: # unsubscribe from cert
            self.api.unsubscribe_by_serial(system['uuid'], serial)
        elif entitlement: # unsubscribe from entitlement
            self.api.unsubscribe(system['uuid'], entitlement)
        print _("Successfully unsubscribed System [ %s ]") % name

        return os.EX_OK
Example #31
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.remove_custom_info("system", system['id'], keyname)

        ident = sys_uuid if sys_uuid else sys_name

        if len(response) == 0:
            print _("Successfully removed Custom Information from System [ %s ]") % ident
        else:
            print _("Could not remove Custom Information from System [ %s ]") % ident
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.remove_custom_info("system", system['id'], keyname)

        ident = sys_uuid if sys_uuid else sys_name

        if response is not None:
            print _("Successfully removed Custom Information from System [ %s ]") % ident
        else:
            print _("Could not remove Custom Information from System [ %s ]") % ident
Example #33
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')

        if sys_name:
            system = get_system(org_name, sys_name)
            releases = self.api.releases_for_system(system["uuid"])["releases"]
        else:
            environment = get_environment(org_name, env_name)
            releases = self.api.releases_for_environment(environment['id'])["releases"]

        releases = [{"value": r} for r in releases]

        self.printer.set_header(_("Available releases"))
        self.printer.add_column('value')

        self.printer.print_items(releases)
        return os.EX_OK
Example #34
0
    def run(self):
        org_name = self.get_option("org")
        env_name = self.get_option("environment")
        sys_name = self.get_option("name")
        sys_uuid = self.get_option("uuid")
        keyname = self.get_option("keyname")

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.remove_custom_info("system", system["id"], keyname)

        ident = sys_uuid if sys_uuid else sys_name

        if response is not None:
            print _("Successfully removed Custom Information from System [ %s ]") % ident
        else:
            print _("Could not remove Custom Information from System [ %s ]") % ident
Example #35
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        new_value = self.get_option('value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.update_custom_info("system", system['id'], keyname, new_value)

        ident = sys_uuid if sys_uuid else sys_name

        test_record(response,
            _("Successfully updated Custom Information [ %s ] for System [ %s ]") % (keyname, ident),
            _("Could not update Custom Information [ %s ] for System [ %s ]") % (keyname, ident)
        )
Example #36
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option("environment")
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        value = self.get_option('value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.add_custom_info("system", system['id'], keyname, value)

        ident = sys_uuid if sys_uuid else sys_name

        test_record(response,
            _("Successfully added Custom Information [ %s : %s ] to System [ %s ]") % (keyname, value, ident),
            _("Could not add Custom Information [ %s : %s ] to System [ %s ]") % (keyname, value, ident)
        )
Example #37
0
    def run(self):
        name = self.get_option("name")
        org = self.get_option("org")
        entitlement = self.get_option("entitlement")
        serial = self.get_option("serial")
        all_entitlements = self.get_option("all")
        uuid = self.get_option("uuid")

        if not uuid:
            uuid = get_system(org, name)["uuid"]

        if all_entitlements:  # unsubscribe from all
            self.api.unsubscribe_all(uuid)
        elif serial:  # unsubscribe from cert
            self.api.unsubscribe_by_serial(uuid, serial)
        elif entitlement:  # unsubscribe from entitlement
            self.api.unsubscribe(uuid, entitlement)
        print _("Successfully unsubscribed System [ %s ]") % name

        return os.EX_OK
Example #38
0
    def run(self):
        systemApi = SystemAPI()

        org_name = self.get_option('org')
        sys_name = self.get_option('name')

        system = get_system(org_name, sys_name)
        errata = systemApi.errata(system["uuid"])

        batch_add_columns(self.printer, {'errata_id': _("ID")},
                          {'title': _("Title")}, {'type': _("Type")})
        self.printer.set_header(
            _("Errata for system %(sys_name)s in organization %(org_name)s") %
            {
                'sys_name': sys_name,
                'org_name': org_name
            })
        self.printer.print_items(errata)

        return os.EX_OK
Example #39
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')

        if sys_name:
            system = get_system(org_name, sys_name)
            releases = self.api.releases_for_system(system["uuid"])["releases"]
        else:
            environment = get_environment(org_name, env_name)
            releases = self.api.releases_for_environment(
                environment['id'])["releases"]

        releases = [{"value": r} for r in releases]

        self.printer.set_header(_("Available releases"))
        self.printer.add_column('value')

        self.printer.print_items(releases)
        return os.EX_OK
Example #40
0
    def run(self):
        org_name = self.get_option("org")
        env_name = self.get_option("environment")
        sys_name = self.get_option("name")
        new_name = self.get_option("new_name")
        new_environment_name = self.get_option("new_environment")
        new_description = self.get_option("description")
        new_location = self.get_option("location")
        new_release = self.get_option("release")
        new_sla = self.get_option("sla")
        sys_uuid = self.get_option("uuid")
        view_label = self.get_option("view")

        system = get_system(org_name, sys_name, env_name, sys_uuid)
        new_environment = get_environment(org_name, new_environment_name)

        updates = {}
        if new_name:
            updates["name"] = new_name
        if new_description:
            updates["description"] = new_description
        if new_location:
            updates["location"] = new_location
        if new_release:
            updates["releaseVer"] = new_release
        if new_sla:
            updates["serviceLevel"] = new_sla
        if new_environment_name:
            new_environment = get_environment(org_name, new_environment_name)
            updates["environment_id"] = new_environment["id"]

        if view_label is not None:
            updates["content_view_id"] = get_content_view(org_name, view_label)["id"]

        response = self.api.update(system["uuid"], updates)

        test_record(
            response,
            _("Successfully updated system [ %s ]") % system["name"],
            _("Could not update system [ %s ]") % system["name"],
        )
Example #41
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        current_value = self.get_option('current-value')
        new_value = self.get_option('new-value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.update_custom_info("system", system['id'], keyname, current_value, new_value)

        ident = sys_uuid if sys_uuid else sys_name

        if response[keyname][0] == new_value:
            print _("Successfully updated Custom Information for System [ %s ]") % ident
        else:
            print _("Could not update Custom Information for System [ %s ]") % ident
Example #42
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        new_value = self.get_option('value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.update_custom_info("system", system['id'], keyname, new_value)

        ident = sys_uuid if sys_uuid else sys_name

        if response:
            print _("Successfully updated Custom Information [ %(keyname)s ] for System [ %(ident)s ]") \
                % {'keyname':keyname, 'ident':ident}
        else:
            print _("Could not update Custom Information [ %(keyname)s ] for System [ %(ident)s ]") \
                % {'keyname':keyname, 'ident':ident}
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        new_value = self.get_option('value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.update_custom_info("system", system['id'], keyname, new_value)

        ident = sys_uuid if sys_uuid else sys_name

        if response is not None:
            print _("Successfully updated Custom Information [ %(keyname)s ] for System [ %(ident)s ]") \
                % {'keyname':keyname, 'ident':ident}
        else:
            print _("Could not update Custom Information [ %(keyname)s ] for System [ %(ident)s ]") \
                % {'keyname':keyname, 'ident':ident}
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option("environment")
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')
        keyname = self.get_option('keyname')
        value = self.get_option('value')

        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()

        response = custom_info_api.add_custom_info("system", system['id'], keyname, value)

        ident = sys_uuid if sys_uuid else sys_name

        test_record(response,
            _("Successfully added Custom Information [ %(keyname)s : %(value)s ] to System [ %(ident)s ]") \
                % {'keyname':keyname, 'value':value, 'ident':ident},
            _("Could not add Custom Information [ %(keyname)s : %(value)s ] to System [ %(ident)s ]") \
                % {'keyname':keyname, 'value':value, 'ident':ident}
        )
Example #45
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        entitlement = self.get_option('entitlement')
        serial = self.get_option('serial')
        all_entitlements = self.get_option('all')
        uuid = self.get_option('uuid')

        display_name = name or uuid

        if not uuid:
            uuid = get_system(org, name)['uuid']

        if all_entitlements: #unsubscribe from all
            self.api.unsubscribe_all(uuid)
        elif serial: # unsubscribe from cert
            self.api.unsubscribe_by_serial(uuid, serial)
        elif entitlement: # unsubscribe from entitlement
            self.api.unsubscribe(uuid, entitlement)
        print _("Successfully removed subscription from System [ %s ]") % display_name

        return os.EX_OK
Example #46
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        entitlement = self.get_option('entitlement')
        serial = self.get_option('serial')
        all_entitlements = self.get_option('all')
        uuid = self.get_option('uuid')

        display_name = name or uuid

        if not uuid:
            uuid = get_system(org, name)['uuid']

        if all_entitlements:  #unsubscribe from all
            self.api.unsubscribe_all(uuid)
        elif serial:  # unsubscribe from cert
            self.api.unsubscribe_by_serial(uuid, serial)
        elif entitlement:  # unsubscribe from entitlement
            self.api.unsubscribe(uuid, entitlement)
        print _("Successfully removed subscription from System [ %s ]"
                ) % display_name

        return os.EX_OK
Example #47
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        available = self.get_option('available')
        match_system = self.get_option('match_system')
        match_installed = self.get_option('match_installed')
        no_overlap = self.get_option('no_overlap')
        uuid = self.get_option('uuid')

        display_name = name or uuid

        if not uuid:
            uuid = get_system(org, name)['uuid']

        self.printer.set_strategy(VerboseStrategy())
        if not available:
            # listing current subscriptions
            result = self.api.subscriptions(uuid)
            if result == None or len(result['entitlements']) == 0:
                print _("No Subscriptions found for System [ %(display_name)s ] in Org [ %(org)s ]") \
                    % {'display_name':display_name, 'org':org}
                return os.EX_OK

            def entitlements():
                for entitlement in result['entitlements']:
                    entitlement_ext = entitlement.copy()
                    provided_products = ', '.join([
                        e['name'] for e in entitlement_ext['providedProducts']
                    ])
                    if provided_products:
                        entitlement_ext['providedProductsFormatted'] = _(
                            'Not Applicable')
                    else:
                        entitlement_ext[
                            'providedProductsFormatted'] = provided_products
                    serial_ids = ', '.join(
                        [u_str(s['id']) for s in entitlement_ext['serials']])
                    entitlement_ext['serialIds'] = serial_ids
                    yield entitlement_ext

            self.printer.set_header(
                _("Current Subscriptions for System [ %s ]") % display_name)
            self.printer.add_column('entitlementId', _("Subscription ID"))
            self.printer.add_column('serialIds', _('Serial ID'))
            batch_add_columns(self.printer, {'poolName': _("Pool Name")}, \
                {'expires': _("Expires")}, {'consumed': _("Consumed")}, \
                {'quantity': _("Quantity")}, {'sla': _("SLA")}, {'contractNumber': _("Contract Number")})
            self.printer.add_column('providedProductsFormatted',
                                    _('Provided Products'))
            self.printer.print_items(entitlements())
        else:
            # listing available pools
            result = self.api.available_pools(uuid, match_system,
                                              match_installed, no_overlap)

            if result == None or len(result) == 0:
                print _("No Pools found for System [ %(display_name)s ] in Org [ %(org)s ]") \
                    % {'display_name':display_name, 'org':org}
                return os.EX_OK

            def available_pools():
                for pool in result['pools']:
                    pool_ext = pool.copy()
                    provided_products = ', '.join([
                        p['productName'] for p in pool_ext['providedProducts']
                    ])
                    if provided_products:
                        pool_ext['providedProductsFormatted'] = _(
                            'Not Applicable')
                    else:
                        pool_ext[
                            'providedProductsFormatted'] = provided_products

                    if pool_ext['quantity'] == -1:
                        pool_ext['quantity'] = _('Unlimited')

                    # Make the productAttributes easier to access
                    for productAttribute in pool['productAttributes']:
                        pool_ext['attr_' +
                                 productAttribute['name']] = productAttribute[
                                     'value']
                    yield pool_ext

            self.printer.set_header(
                _("Available Subscriptions for System [ %s ]") % display_name)

            self.printer.add_column('id', _("ID"))
            self.printer.add_column('productName', _("Name"))
            batch_add_columns(self.printer, {'endDate': _("End Date")}, \
                {'consumed': _("Consumed")}, {'quantity': _("Quantity")}, {'sockets': _("Sockets")})
            self.printer.add_column('attr_stacking_id', _("Stacking ID"))
            self.printer.add_column('attr_multi-entitlement',
                                    _("Multi-entitlement"))
            self.printer.add_column('providedProductsFormatted',
                                    _("Provided products"))
            self.printer.print_items(available_pools())

        return os.EX_OK
Example #48
0
    def run(self):
        name = self.get_option('name')
        org = self.get_option('org')
        available = self.get_option('available')

        system = get_system(org, name)

        self.printer.set_strategy(VerboseStrategy())
        if not available:
            # listing current subscriptions
            result = self.api.subscriptions(system['uuid'])
            if result == None or len(result['entitlements']) == 0:
                print _(
                    "No Subscriptions found for System [ %s ] in Org [ %s ]"
                ) % (name, org)
                return os.EX_OK

            def entitlements():
                for entitlement in result['entitlements']:
                    entitlement_ext = entitlement.copy()
                    provided_products = ', '.join([
                        e['name'] for e in entitlement_ext['providedProducts']
                    ])
                    entitlement_ext[
                        'providedProductsFormatted'] = provided_products
                    serial_ids = ', '.join(
                        [u_str(s['id']) for s in entitlement_ext['serials']])
                    entitlement_ext['serialIds'] = serial_ids
                    yield entitlement_ext

            self.printer.set_header(
                _("Current Subscriptions for System [ %s ]") % name)
            self.printer.add_column('entitlementId')
            self.printer.add_column('serialIds', name=_('Serial Id'))
            self.printer.add_column('poolName')
            self.printer.add_column('expires')
            self.printer.add_column('consumed')
            self.printer.add_column('quantity')
            self.printer.add_column('sla')
            self.printer.add_column('contractNumber')
            self.printer.add_column('providedProductsFormatted',
                                    name=_('Provided products'))
            self.printer.print_items(entitlements())
        else:
            # listing available pools
            result = self.api.available_pools(system['uuid'])

            if result == None or len(result) == 0:
                print _("No Pools found for System [ %s ] in Org [ %s ]") % (
                    name, org)
                return os.EX_OK

            def available_pools():
                for pool in result['pools']:
                    pool_ext = pool.copy()
                    provided_products = ', '.join(
                        [p['name'] for p in pool_ext['providedProducts']])
                    pool_ext['providedProductsFormatted'] = provided_products
                    yield pool_ext

            self.printer.set_header(
                _("Available Subscriptions for System [ %s ]") % name)
            self.printer.add_column('poolId')
            self.printer.add_column('poolName')
            self.printer.add_column('expires')
            self.printer.add_column('consumed')
            self.printer.add_column('quantity')
            self.printer.add_column('sockets')
            self.printer.add_column('multiEntitlement')
            self.printer.add_column('providedProductsFormatted',
                                    name=_('Provided products'))
            self.printer.print_items(available_pools())

        return os.EX_OK
Example #49
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        sys_uuid = self.get_option('uuid')

        if sys_uuid:
            self.printer.set_header(_("System Information [ %s ]") % sys_uuid)
        elif env_name is None:
            self.printer.set_header(
                _("System Information For Org [ %s ]") % org_name)
        else:
            self.printer.set_header(_("System Information For Environment [ %(env_name)s ] in Org [ %(org_name)s ]") \
                % {'env_name':env_name, 'org_name':org_name})

        # get system details
        system = get_system(org_name, sys_name, env_name, sys_uuid)

        custom_info_api = CustomInfoAPI()
        custom_info = custom_info_api.get_custom_info("system", system['id'])
        system['custom_info'] = stringify_custom_info(custom_info)

        system["activation_keys"] = "[ " + ", ".join(
            [ak["name"] for ak in system["activation_key"]]) + " ]"
        if 'host' in system:
            system['host'] = system['host']['name']
        if 'guests' in system:
            system["guests"] = "[ " + ", ".join(
                [guest["name"] for guest in system["guests"]]) + " ]"
        if 'environment' in system:
            system['environment'] = system['environment']['name']

        if 'content_view' in system:
            system['content_view'] = "[ %s ]" % system['content_view']['name']


        batch_add_columns(self.printer, {'name': _("Name")}, {'ipv4_address': _("IPv4 Address")}, \
            {'uuid': _("UUID")}, {'environment': _("Environment")}, {'location': _("Location")})
        self.printer.add_column('created_at',
                                _("Registered"),
                                formatter=format_date)
        self.printer.add_column('updated_at',
                                _("Last Updated"),
                                formatter=format_date)
        self.printer.add_column('description',
                                _("Description"),
                                multiline=True)
        if 'release' in system and system['release']:
            self.printer.add_column('release', _("OS Release"))
        self.printer.add_column('activation_keys', _("Activation Keys"), multiline=True, \
            show_with=printer.VerboseStrategy)
        self.printer.add_column('host',
                                _("Host"),
                                show_with=printer.VerboseStrategy)
        self.printer.add_column('sockets', _("Sockets"))
        self.printer.add_column('ram', _("RAM (MB)"))
        self.printer.add_column('serviceLevel', _("Service Level"))
        self.printer.add_column('guests',
                                _("Guests"),
                                show_with=printer.VerboseStrategy)
        self.printer.add_column('custom_info',
                                _("Custom Info"),
                                multiline=True,
                                show_with=printer.VerboseStrategy)
        self.printer.add_column('content_view', _("Content View"))

        self.printer.print_item(system)

        return os.EX_OK
Example #50
0
    def run(self):
        org_name = self.get_option('org')
        env_name = self.get_option('environment')
        sys_name = self.get_option('name')
        verbose = self.get_option('verbose')

        install = self.get_option('install')
        remove = self.get_option('remove')
        update = self.get_option('update')
        install_groups = self.get_option('install_groups')
        remove_groups = self.get_option('remove_groups')

        task = None

        if env_name is None:
            self.printer.set_header(
                _("Package Information for System [ %s ] in Org [ %s ]") %
                (sys_name, org_name))
        else:
            self.printer.set_header(
                _("Package Information for System [ %s ] in Environment [ %s ] in Org [ %s ]"
                  ) % (sys_name, env_name, org_name))

        system = get_system(org_name, sys_name, env_name)
        system_id = system['uuid']

        if install:
            task = self.api.install_packages(system_id, install)
        if remove:
            task = self.api.remove_packages(system_id, remove)
        if update:
            if update == '--all':
                update_packages = []
            else:
                update_packages = update
            task = self.api.update_packages(system_id, update_packages)
        if install_groups:
            task = self.api.install_package_groups(system_id, install_groups)
        if remove_groups:
            task = self.api.remove_package_groups(system_id, remove_groups)

        if task:
            uuid = task["uuid"]
            print(_("Performing remote action [ %s ]... ") % uuid)
            task = SystemAsyncTask(task)
            run_spinner_in_bg(wait_for_async_task, [task])
            if task.succeeded():
                print _("Remote action finished:")
                print task.get_result_description()
                return os.EX_OK
            else:
                print _("Remote action failed:")
                print task.get_result_description()
                return os.EX_DATAERR

        packages = self.api.packages(system_id)

        self.printer.add_column('name', show_with=printer.VerboseStrategy)
        self.printer.add_column('vendor', show_with=printer.VerboseStrategy)
        self.printer.add_column('version', show_with=printer.VerboseStrategy)
        self.printer.add_column('release', show_with=printer.VerboseStrategy)
        self.printer.add_column('arch', show_with=printer.VerboseStrategy)
        self.printer.add_column(
            'name_version_release_arch',
            show_with=printer.GrepStrategy,
            item_formatter=lambda p: "%s-%s-%s.%s" %
            (p['name'], p['version'], p['release'], p['arch']))

        self.printer.print_items(packages)

        return os.EX_OK