Example #1
0
    def run(self):
        orgName     = self.get_option('org')
        prodName    = self.get_option('name')
        envName     = self.get_option('env')

        env = get_environment(orgName, envName)
        prod = get_product(orgName, prodName)

        returnCode = os.EX_OK

        cset = self.csapi.create(orgName, env["id"], self.create_cs_name())
        try:
            self.csapi.add_content(cset["id"], "products", {'product_id': prod['id']})
            task = self.csapi.promote(cset["id"])
            task = AsyncTask(task)

            run_spinner_in_bg(wait_for_async_task, [task], message=_("Promoting the product, please wait... "))

            if task.succeeded():
                print _("Product [ %s ] promoted to environment [ %s ] " % (prodName, envName))
                returnCode = os.EX_OK
            else:
                print _("Product [ %s ] promotion failed: %s" % (prodName, format_task_errors(task.errors())) )
                returnCode = os.EX_DATAERR

        except Exception as e:
            #exception message is printed from action's main method
            raise e

        return returnCode
Example #2
0
    def run(self):
        orgName     = self.get_option('org')
        prodName    = self.get_option('name')
        envName     = self.get_option('env')

        env = get_environment(orgName, envName)
        prod = get_product(orgName, prodName)

        returnCode = os.EX_OK

        cset = self.csapi.create(orgName, env["id"], self.create_cs_name())
        try:
            self.csapi.add_content(cset["id"], "products", {'product_id': prod['id']})
            task = self.csapi.promote(cset["id"])
            task = AsyncTask(task)

            run_spinner_in_bg(wait_for_async_task, [task], message=_("Promoting the product, please wait... "))

            if task.succeeded():
                print _("Product [ %s ] promoted to environment [ %s ] " % (prodName, envName))
                returnCode = os.EX_OK
            else:
                print _("Product [ %s ] promotion failed: %s" % (prodName, format_task_errors(task.errors())) )
                returnCode = os.EX_DATAERR

        except Exception as e:
            #exception message is printed from action's main method
            raise e

        return returnCode
Example #3
0
    def run(self):
        org_name = self.get_option('org')
        group_name = self.get_option('name')
        install = self.get_option('install')

        job = None

        system_group = get_system_group(org_name, group_name)
        system_group_id = system_group['id']

        if install:
            job = self.api.install_errata(org_name, system_group_id, install)

        if job:
            job_id = job["id"]
            print (_("Performing remote action [ %s ]... ") % job_id)
            job = SystemGroupAsyncJob(org_name, system_group_id, job)
            run_spinner_in_bg(wait_for_async_task, [job])
            if job.succeeded():
                print _("Remote action finished:")
                print job.get_status_message()
                return os.EX_OK
            else:
                print _("Remote action failed:")
                print job.get_status_message()
                return os.EX_DATAERR

        return os.EX_OK
Example #4
0
    def run(self):
        orgName     = self.get_option('org')
        prodName    = self.get_option('name')
        prodLabel   = self.get_option('label')
        prodId      = self.get_option('id')
        envName     = self.get_option('environment')

        env = get_environment(orgName, envName)
        prod = get_product(orgName, prodName, prodLabel, prodId)

        returnCode = os.EX_OK

        cset = self.csapi.create(orgName, env["id"], self.create_cs_name(), constants.PROMOTION)
        try:
            self.csapi.add_content(cset["id"], "products", {'product_id': prod['id']})
            task = self.csapi.apply(cset["id"])
            task = AsyncTask(task)

            run_spinner_in_bg(wait_for_async_task, [task], message=_("Promoting the product, please wait... "))

            if task.succeeded():
                print _("Product [ %(prod_name)s ] promoted to environment [ %(envName)s ] " \
                    % {'prod_name':prod["name"], 'envName':envName})
                returnCode = os.EX_OK
            else:
                print _("Product [ %(prod_name)s ] promotion failed: %(task_errors)s" \
                    % {'prod_name':prod["name"], 'task_errors':format_task_errors(task.errors())} )
                returnCode = os.EX_DATAERR

        except Exception:
            #exception message is printed from action's main method
            raise

        return returnCode
Example #5
0
    def run(self):
        tplName = self.get_option('name')
        orgName = self.get_option('org')
        newName = self.get_option('new_name')
        desc    = self.get_option('description')
        parentName = self.get_option('parent')
        content = self.getContent()

        env = get_library(orgName)
        if env == None:
            return os.EX_DATAERR

        template = get_template(orgName, env["name"], tplName)
        if template != None:
            if parentName != None:
                parentId = self.get_parent_id(orgName, env["name"], parentName)
            else:
                parentId = None

            run_spinner_in_bg(self.updateTemplate, [template["id"], newName, desc, parentId], _("Updating the template, please wait... "))
            run_spinner_in_bg(self.updateContent,  [template["id"], content], _("Updating the template, please wait... "))
            print _("Successfully updated template [ %s ]") % template['name']
            return os.EX_OK
        else:
            return os.EX_DATAERR
Example #6
0
    def discover_repositories(self, provider_id, url):
        print(_("Discovering repository urls, this could take some time..."))
        task = self.provider_api.repo_discovery(provider_id, url)

        run_spinner_in_bg(wait_for_async_task, [task])
        repourls = self.provider_api.provider(provider_id)['discovered_repos']

        if not len(repourls):
            system_exit(os.EX_OK, "No repositories discovered @ url location [%s]" % url)

        return repourls
Example #7
0
    def run(self):
        name = self.get_option('name')

        task = self.api.delete(name)
        task = AsyncTask(task)

        run_spinner_in_bg(wait_for_async_task, [task], message=_("Deleting the organization, please wait... "))

        if task.succeeded():
            print _("Successfully deleted org [ %s ]") % name
            return os.EX_OK
        else:
            print _("Organization [ %s ] deletion failed: %s" % (name, format_task_errors(task.errors())) )
            return os.EX_DATAERR
Example #8
0
    def run(self):
        org_name = self.get_option('org')
        group_name = self.get_option('name')

        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')
        update_groups = self.get_option('update_groups')

        job = None

        system_group = get_system_group(org_name, group_name)
        system_group_id = system_group['id']

        if install:
            job = self.api.install_packages(org_name, system_group_id, install)
        if remove:
            job = self.api.remove_packages(org_name, system_group_id, remove)
        if update:
            if update == '--all':
                update_packages = []
            else:
                update_packages = update
            job = self.api.update_packages(org_name, system_group_id, update_packages)
        if install_groups:
            job = self.api.install_package_groups(org_name, system_group_id, install_groups)
        if remove_groups:
            job = self.api.remove_package_groups(org_name, system_group_id, remove_groups)
        if update_groups:
            job = self.api.update_package_groups(org_name, system_group_id, update_groups)

        if job:
            job_id = job["id"]
            print (_("Performing remote action [ %s ]... ") % job_id)
            job = SystemGroupAsyncJob(org_name, system_group_id, job)
            run_spinner_in_bg(wait_for_async_task, [job])
            if job.succeeded():
                print _("Remote action finished:")
                print job.get_status_message()
                return os.EX_OK
            else:
                print _("Remote action failed:")
                print job.get_status_message()
                return os.EX_DATAERR

        return os.EX_OK
Example #9
0
    def run(self):
        provName = self.get_option("name")
        orgName = self.get_option("org")
        manifestPath = self.get_option("file")
        force = self.get_option("force")

        try:
            f = open(get_abs_path(manifestPath))
        except IOError:
            system_exit(os.EX_IOERR, _("File %s does not exist" % manifestPath))

        prov = get_provider(orgName, provName)

        try:
            response = run_spinner_in_bg(
                self.api.import_manifest, (prov["id"], f, force), message=_("Importing manifest, please wait... ")
            )
        except ServerRequestError, re:
            if (
                re.args[0] == 400
                and "displayMessage" in re.args[1]
                and re.args[1]["displayMessage"] == "Import is older than existing data"
            ):
                re.args[1]["displayMessage"] = (
                    "Import is older then existing data," + " please try with --force option to import manifest."
                )
            raise re, None, sys.exc_info()[2]
Example #10
0
    def run(self):
        name = self.get_option('name')

        task = self.api.delete(name)
        task = AsyncTask(task)

        run_spinner_in_bg(
            wait_for_async_task, [task],
            message=_("Deleting the organization, please wait... "))

        if task.succeeded():
            print _("Successfully deleted org [ %s ]") % name
            return os.EX_OK
        else:
            print _("Organization [ %s ] deletion failed: %s" %
                    (name, format_task_errors(task.errors())))
            return os.EX_DATAERR
Example #11
0
    def run(self):
        csName = self.get_option('name')
        orgName = self.get_option('org')
        envName = self.get_option('env')

        cset = get_changeset(orgName, envName, csName)

        task = self.api.promote(cset["id"])
        task = AsyncTask(task)

        run_spinner_in_bg(wait_for_async_task, [task], message=_("Promoting the changeset, please wait... "))

        if task.succeeded():
            print _("Changeset [ %s ] promoted" % csName)
            return os.EX_OK
        else:
            print _("Changeset [ %s ] promotion failed: %s" % (csName, format_task_errors(task.errors())))
            return os.EX_DATAERR
Example #12
0
    def run(self):
        csName = self.get_option('name')
        orgName = self.get_option('org')
        envName = self.get_option('environment')

        cset = get_changeset(orgName, envName, csName)

        task = self.api.apply(cset["id"])
        task = AsyncTask(task)

        run_spinner_in_bg(wait_for_async_task, [task], message=_("Applying the changeset, please wait... "))

        if task.succeeded():
            print _("Changeset [ %s ] applied" % csName)
            return os.EX_OK
        else:
            print _("Changeset [ %(csName)s ] promotion failed: %(task_errors)s" \
                % {'csName':csName, 'task_errors':format_task_errors(task.errors())})
            return os.EX_DATAERR
Example #13
0
    def discover_repositories(self, org_name, url):
        print(_("Discovering repository urls, this could take some time..."))
        task = self.api.repo_discovery(org_name, url, 'yum')

        discoveryResult = run_spinner_in_bg(wait_for_async_task, [task])
        repourls = discoveryResult[0]['result'] or []

        if not len(repourls):
            system_exit(os.EX_OK, "No repositories discovered @ url location [%s]" % url)

        return repourls
Example #14
0
    def run(self):
        tplName = self.get_option('name')
        orgName = self.get_option('org')
        newName = self.get_option('new_name')
        desc    = self.get_option('description')
        parentName = self.get_option('parent')
        content = self.getContent()

        env = get_library(orgName)
        template = get_template(orgName, env["name"], tplName)

        if parentName != None:
            parentId = self.get_parent_id(orgName, env["name"], parentName)
        else:
            parentId = None

        run_spinner_in_bg(self.updateTemplate, [template["id"], newName, desc, parentId], _("Updating the template, please wait... "))
        run_spinner_in_bg(self.updateContent,  [template["id"], content], _("Updating the template, please wait... "))
        print _("Successfully updated template [ %s ]") % template['name']
        return os.EX_OK
Example #15
0
    def run(self):
        provName = self.get_option('name')
        orgName  = self.get_option('org')

        prov = get_provider(orgName, provName)

        try:
            response = run_spinner_in_bg(self.api.delete_manifest, [prov["id"]],
                message=_("Deleting manifest, please wait... "))
        except ServerRequestError, re:
            raise re, None, sys.exc_info()[2]
Example #16
0
    def run(self):
        csName = self.get_option('name')
        orgName = self.get_option('org')
        envName = self.get_option('env')

        cset = get_changeset(orgName, envName, csName)

        task = self.api.promote(cset["id"])
        task = AsyncTask(task)

        run_spinner_in_bg(
            wait_for_async_task, [task],
            message=_("Promoting the changeset, please wait... "))

        if task.succeeded():
            print _("Changeset [ %s ] promoted" % csName)
            return os.EX_OK
        else:
            print _("Changeset [ %s ] promotion failed: %s" %
                    (csName, format_task_errors(task.errors())))
            return os.EX_DATAERR
Example #17
0
    def run(self):
        tplName = self.get_option("name")
        orgName = self.get_option("org")
        newName = self.get_option("new_name")
        desc = self.get_option("description")
        parentName = self.get_option("parent")
        content = self.getContent()

        env = get_library(orgName)
        template = get_template(orgName, env["name"], tplName)

        if parentName != None:
            parentId = self.get_parent_id(orgName, env["name"], parentName)
        else:
            parentId = None

        run_spinner_in_bg(
            self.updateTemplate, [template["id"], newName, desc, parentId], _("Updating the template, please wait... ")
        )
        run_spinner_in_bg(self.updateContent, [template["id"], content], _("Updating the template, please wait... "))
        print _("Successfully updated template [ %s ]") % template["name"]
        return os.EX_OK
Example #18
0
File: repo.py Project: beav/katello
class Discovery(RepoAction):

    description = _('discovery repositories contained within a URL')

    def setup_parser(self, parser):
        parser.add_option('--org', dest='org',
                               help=_("organization name eg: foo.example.com (required)"))
        parser.add_option('--name', dest='name',
                               help=_("repository name prefix to add to all the discovered repositories (required)"))
        parser.add_option("--url", dest="url", type="url",
                               help=_("root url to perform discovery of repositories eg: http://porkchop.devel.redhat.com/ (required)"))
        parser.add_option("--assumeyes", action="store_true", dest="assumeyes",
                               help=_("assume yes; automatically create candidate repositories for discovered urls (optional)"))
        parser.add_option('--product', dest='prod',
                               help=_("product name (required)"))

    def check_options(self, validator):
        validator.require(('name', 'org', 'prod', 'url'))

    def run(self):
        name     = self.get_option('name')
        url      = self.get_option('url')
        assumeyes = self.get_option('assumeyes')
        prodName = self.get_option('prod')
        orgName  = self.get_option('org')

        repourls = self.discover_repositories(orgName, url)
        self.printer.set_header(_("Repository Urls discovered @ [%s]" % url))
        selectedurls = self.select_repositories(repourls, assumeyes)

        prod = get_product(orgName, prodName)
        self.create_repositories(orgName, prod["id"], name, selectedurls)

        return os.EX_OK

    def discover_repositories(self, org_name, url):
        print(_("Discovering repository urls, this could take some time..."))
        try:
            task = self.api.repo_discovery(org_name, url, 'yum')
        except Exception,e:
            system_exit(os.EX_DATAERR, _("Error: %s" % e))

        discoveryResult = run_spinner_in_bg(wait_for_async_task, [task])
        repourls = discoveryResult[0]['result'] or []

        if not len(repourls):
            system_exit(os.EX_OK, "No repositories discovered @ url location [%s]" % url)

        return repourls
Example #19
0
    def run(self):
        desc    = self.get_option('description')
        orgName = self.get_option('org')
        tplPath = self.get_option('file')

        env = get_library(orgName)

        try:
            f = self.open_file(tplPath)
        except:
            print _("File %s does not exist" % tplPath)
            return os.EX_IOERR

        response = run_spinner_in_bg(self.api.import_tpl, (env["id"], desc, f), message=_("Importing template, please wait... "))
        print response
        f.close()
        return os.EX_OK
Example #20
0
    def run(self):
        desc    = self.get_option('description')
        orgName = self.get_option('org')
        tplPath = self.get_option('file')

        env = get_library(orgName)

        try:
            f = self.open_file(tplPath)
        except:
            print _("File %s does not exist" % tplPath)
            return os.EX_IOERR

        response = run_spinner_in_bg(self.api.import_tpl, (env["id"], desc, f), message=_("Importing template, please wait... "))
        print response
        f.close()
        return os.EX_OK
Example #21
0
    def run(self):
        tplName = self.get_option('name')
        orgName = self.get_option('org')
        envName = self.get_option('env')
        format  = self.get_option('format') or "json"
        tplPath = self.get_option('file')

        template = get_template(orgName, envName, tplName)

        try:
            f = self.open_file(tplPath)
        except:
            print >> sys.stderr, _("Could not create file %s") % tplPath
            return os.EX_IOERR

        self.api.validate_tpl(template["id"], format)
        response = run_spinner_in_bg(self.api.export_tpl, (template["id"], format), message=_("Exporting template, please wait... "))
        f.write(response)
        f.close()
        print _("Template was exported successfully to file %s") % tplPath
        return os.EX_OK
Example #22
0
    def run(self):
        tplName = self.get_option('name')
        orgName = self.get_option('org')
        envName = self.get_option('env')
        format  = self.get_option('format') or "json"
        tplPath = self.get_option('file')

        template = get_template(orgName, envName, tplName)

        try:
            f = self.open_file(tplPath)
        except:
            print >> sys.stderr, _("Could not create file %s") % tplPath
            return os.EX_IOERR

        self.api.validate_tpl(template["id"], format)
        response = run_spinner_in_bg(self.api.export_tpl, (template["id"], format), message=_("Exporting template, please wait... "))
        f.write(response)
        f.close()
        print _("Template was exported successfully to file %s") % tplPath
        return os.EX_OK
Example #23
0
    def run(self):
        provName = self.get_option('name')
        orgName  = self.get_option('org')
        manifestPath = self.get_option('file')
        force = self.get_option('force')

        try:
            f = open(get_abs_path(manifestPath))
        except:
            print _("File %s does not exist" % manifestPath)
            return os.EX_IOERR

        prov = get_provider(orgName, provName)
        if prov != None:
            try:
                response = run_spinner_in_bg(self.api.import_manifest, (prov["id"], f, force), message=_("Importing manifest, please wait... "))
            except ServerRequestError, re:
                if re.args[0] == 400 and "displayMessage" in re.args[1] and re.args[1]["displayMessage"] == "Import is older than existing data":
                    re.args[1]["displayMessage"] = "Import is older then existing data, please try with --force option to import manifest."
                raise re
            f.close()
            print response
            return os.EX_OK
Example #24
0
    def run(self):
        tplName = self.get_option("name")
        orgName = self.get_option("org")
        envName = self.get_option("environment")
        format_in = self.get_option("format") or "json"
        tplPath = self.get_option("file")

        template = get_template(orgName, envName, tplName)

        try:
            f = self.open_file(tplPath)
        except IOError:
            print >> sys.stderr, _("Could not create file [ %s ]") % tplPath
            return os.EX_IOERR

        self.api.validate_tpl(template["id"], format_in)
        response = run_spinner_in_bg(
            self.api.export_tpl, (template["id"], format_in), message=_("Exporting template, please wait... ")
        )
        f.write(response)
        f.close()
        print _("Template was exported successfully to file [ %s ]") % tplPath
        return os.EX_OK
Example #25
0
    def run(self):
        provName = self.get_option('name')
        orgName = self.get_option('org')
        manifestPath = self.get_option('file')
        force = self.get_option('force')

        try:
            f = open(get_abs_path(manifestPath))
        except:
            system_exit(os.EX_IOERR,
                        _("File %s does not exist" % manifestPath))

        prov = get_provider(orgName, provName)

        try:
            response = run_spinner_in_bg(
                self.api.import_manifest, (prov["id"], f, force),
                message=_("Importing manifest, please wait... "))
        except ServerRequestError, re:
            if re.args[0] == 400 and "displayMessage" in re.args[1] and re.args[
                    1]["displayMessage"] == "Import is older than existing data":
                re.args[1][
                    "displayMessage"] = "Import is older then existing data, please try with --force option to import manifest."
            raise re
Example #26
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')
        packages_separator = ","

        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.split(packages_separator))
        if remove:
            task = self.api.remove_packages(system_id, remove.split(packages_separator))
        if update:
            if update == '--all':
                update_packages = []
            else:
                update_packages = update.split(packages_separator)
            task = self.api.update_packages(system_id, update_packages)
        if install_groups:
            task = self.api.install_package_groups(system_id, install_groups.split(packages_separator))
        if remove_groups:
            task = self.api.remove_package_groups(system_id, remove_groups.split(packages_separator))

        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
Example #27
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')
        packages_separator = ","

        task = None

        if env_name is None:
            self.printer.setHeader(_("Package Information for System [ %s ] in Org [ %s ]") % (sys_name, org_name))
            systems = self.api.systems_by_org(org_name, {'name': sys_name})
        else:
            self.printer.setHeader(_("Package Information for System [ %s ] in Environment [ %s ] in Org [ %s ]") % (sys_name, env_name, org_name))
            systems = self.api.systems_by_env(org_name, env_name, {'name': sys_name})

        if not systems:
            return os.EX_DATAERR

        system_id = systems[0]['uuid']

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

        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)


        for p in packages:
            p['name_version_release_arch'] = "%s-%s-%s.%s" % \
                    (p['name'], p['version'], p['release'], p['arch'])

        if verbose:
            self.printer.addColumn('name')
            self.printer.addColumn('vendor')
            self.printer.addColumn('version')
            self.printer.addColumn('release')
            self.printer.addColumn('arch')
        else:
            # print compact list of package names only
            self.printer.addColumn('name_version_release_arch')
            self.printer._grep = True

        self.printer.printItems(packages)

        return os.EX_OK
Example #28
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
Example #29
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 [ %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, 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])
            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)

        batch_add_columns(
            self.printer, "name", "vendor", "version", "release", "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
Example #30
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])
            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)

        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