Beispiel #1
0
 def tags_to_ids(self, tags, org_name, scope):
     tag_map = self.tag_name_to_id_map(org_name, scope)
     try:
         return [tag_map[t] for t in tags]
     except KeyError, e:
         system_exit(os.EX_DATAERR, _("Could not find tag [ %(e)s ] in scope of [ %(scope)s ]") \
             % {'e':e[0], 'scope':scope})
Beispiel #2
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]
Beispiel #3
0
    def run(self):
        groupid = self.get_option('id')
        repoid = self.get_option('repo_id')

        group = self.api.packagegroup_by_id(repoid, groupid)
        if group == None:
            system_exit(
                os.EX_DATAERR,
                _("Package group [%s] not found in repo [%s]") %
                (groupid, repoid))

        group['conditional_package_names'] = [
            name + ": " + required_package for name, required_package in
            group['conditional_package_names'].items()
        ]

        self.printer.set_header(_("Package Group Information"))
        self.printer.add_column('id')
        self.printer.add_column('name')
        self.printer.add_column('description', multiline=True)
        self.printer.add_column('mandatory_package_names', multiline=True)
        self.printer.add_column('default_package_names', multiline=True)
        self.printer.add_column('optional_package_names', multiline=True)
        self.printer.add_column('conditional_package_names', multiline=True)

        self.printer.print_item(group)
Beispiel #4
0
 def productNamesToIds(self, orgName, productNames):
     ids = []
     for prodName in productNames:
         p = get_product(orgName, prodName)
         if p != None:
             ids.append(p['id'])
         else:
             system_exit(os.EX_DATAERR)
     return ids
Beispiel #5
0
    def parse_datetime(self, date, time):
        date = date.strip()
        time = time.strip()

        formatter = DateTimeFormatter()
        try:
            return formatter.build_datetime(date, time)
        except DateTimeFormatException, e:
            system_exit(os.EX_DATAERR, e.args[0])
Beispiel #6
0
 def productNamesToIds(self, orgName, productNames):
     ids = []
     for prodName in productNames:
         p = get_product(orgName, prodName)
         if p != None:
             ids.append(p['id'])
         else:
             system_exit(os.EX_DATAERR)
     return ids
Beispiel #7
0
 def repoNamesToIds(self, orgName, repos):
     ids = []
     for rec in repos:
         repo = get_repo(orgName, rec['product'], rec['name'])
         if repo != None:
             ids.append(repo['id'])
         else:
             system_exit(os.EX_DATAERR)
     return ids
Beispiel #8
0
 def tags_to_ids(self, tags, org_name, scope):
     tag_map = self.tag_name_to_id_map(org_name, scope)
     try:
         return [tag_map[t] for t in tags]
     except KeyError, e:
         system_exit(
             os.EX_DATAERR,
             _("Could not find tag [ %s ] in scope of [ %s ]") %
             (e[0], scope))
Beispiel #9
0
    def parse_datetime(self, date, time):
        date = date.strip()
        time = time.strip()

        formatter = DateTimeFormatter()
        try:
            return formatter.build_datetime(date, time)
        except DateTimeFormatException, e:
            system_exit(os.EX_DATAERR, e.args[0])
Beispiel #10
0
    def tag_name_to_id_map(self, org_name, scope):
        permissions = self.getAvailablePermissions(org_name, scope)

        try:
            tag_map = {}
            for t in permissions[scope]['tags']:
                tag_map[t['display_name']] = t['name']
            return tag_map
        except KeyError, e:
            system_exit(os.EX_DATAERR, _("Invalid scope [ %s ]") % e[0])
Beispiel #11
0
    def tag_name_to_id_map(self, org_name, scope):
        permissions = self.getAvailablePermissions(org_name, scope)

        try:
            tag_map = {}
            for t in permissions[scope]['tags']:
                tag_map[t['display_name']] = t['name']
            return tag_map
        except KeyError, e:
            system_exit(os.EX_DATAERR, _("Invalid scope [ %s ]") % e[0])
Beispiel #12
0
        def product_id(self, options):
            if 'product' in options:
                prodName = options['product']
            else:
                prodName = options['name']

            prod = get_product(self.orgName, prodName)
            if prod == None:
                system_exit(os.EX_DATAERR)
            return prod['id']
Beispiel #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
Beispiel #14
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
Beispiel #15
0
    def run(self):
        categoryId = self.get_option('id')
        repoid = self.get_option('repo_id')
        category = self.api.packagegroupcategory_by_id(repoid, categoryId)

        if category == None:
            system_exit(os.EX_DATAERR, _("Package group category [%s] not found in repo [%s]") % (categoryId, repoid))

        self.printer.set_header(_("Package Group Category Information"))
        batch_add_columns(self.printer, 'id', 'name', 'packagegroupids')

        self.printer.print_item(category)
Beispiel #16
0
    def run(self):
        repoid = self.get_option('repo_id')
        groups = self.api.packagegroups(repoid)
        if not groups:
            system_exit(os.EX_DATAERR,
                        _("No package groups found in repo [%s]") % (repoid))
        self.printer.set_header(_("Package Group Information"))

        batch_add_columns(self.printer, {'id': _("ID")}, {'name': _("Name")}, {'description': _("Description")})

        self.printer.print_items(groups)

        return os.EX_OK
Beispiel #17
0
    def run(self):
        repoid = self.get_option('repo_id')
        groups = self.api.packagegroupcategories(repoid)
        if not groups:
            system_exit(os.EX_DATAERR,
                        _("No package group categories found in repo [%s]") % (repoid))
        self.printer.set_header(_("Package Group Cateogory Information"))

        self.printer.add_column('id')
        self.printer.add_column('name')

        self.printer.print_items(groups)

        return os.EX_OK
Beispiel #18
0
    def run(self):
        categoryId = self.get_option('id')
        repoid = self.get_option('repo_id')
        category = self.api.packagegroupcategory_by_id(repoid, categoryId)

        if category == None:
            system_exit(os.EX_DATAERR, _("Package group category [%(categoryId)s] not found in repo [%(repoid)s]") \
                % {'categoryId':categoryId, 'repoid':repoid})

        self.printer.set_header(_("Package Group Category Information"))
        batch_add_columns(self.printer, {'id': _("ID")}, {'name': _("Name")}, \
            {'packagegroupids': _("Package Group IDs")})

        self.printer.print_item(category)
Beispiel #19
0
    def run(self):
        repoid = self.get_option('repo_id')
        groups = self.api.packagegroups(repoid)
        if not groups:
            system_exit(os.EX_DATAERR,
                        _("No package groups found in repo [%s]") % (repoid))
        self.printer.set_header(_("Package Group Information"))

        self.printer.add_column('id')
        self.printer.add_column('name')
        self.printer.add_column('description')

        self.printer.print_items(groups)

        return os.EX_OK
Beispiel #20
0
    def run(self):
        repoid = self.get_option('repo_id')
        groups = self.api.packagegroups(repoid)
        if not groups:
            system_exit(os.EX_DATAERR,
                        _("No package groups found in repo [%s]") % (repoid))
        self.printer.setHeader(_("Package Group Information"))

        self.printer.addColumn('id')
        self.printer.addColumn('name')
        self.printer.addColumn('description')

        self.printer.printItems(groups)

        return os.EX_OK
Beispiel #21
0
    def run(self):
        categoryId = self.get_option('id')
        repoid = self.get_option('repo_id')
        category = self.api.packagegroupcategory_by_id(repoid, categoryId)

        if category == None:
            system_exit(
                os.EX_DATAERR,
                _("Package group category [%s] not found in repo [%s]") %
                (categoryId, repoid))

        self.printer.set_header(_("Package Group Category Information"))
        self.printer.add_column('id')
        self.printer.add_column('name')
        self.printer.add_column('packagegroupids')

        self.printer.print_item(category)
Beispiel #22
0
    def get_repo(self, includeDisabled=False):
        repoId   = self.get_option('id')
        repoName = self.get_option('name')
        orgName  = self.get_option('org')
        prodName = self.get_option('product')
        if self.select_by_env:
            envName = self.get_option('env')
        else:
            envName = None

        if repoId:
            repo = self.api.repo(repoId)
        else:
            repo = get_repo(orgName, prodName, repoName, envName, includeDisabled)

        if repo == None:
            system_exit(os.EX_DATAERR)
        return repo
Beispiel #23
0
    def run(self):
        groupid = self.get_option('id')
        repoid = self.get_option('repo_id')

        group = self.api.packagegroup_by_id(repoid, groupid)
        if group == None:
            system_exit(os.EX_DATAERR, _("Package group [%(groupid)s] not found in repo [%(repoid)s]") \
                % {'groupid':groupid, 'repoid':repoid})

        self.printer.set_header(_("Package Group Information"))
        batch_add_columns(self.printer, {'id': _("ID")}, {'name': _("Name")})
        batch_add_columns(self.printer, {'description': _("Description")}, \
            {'mandatory_package_names': _("Mandatory Package Names")}, \
            {'default_package_names': _("Default Package Names")}, \
            {'optional_package_names': _("Optional Package Names")}, \
            {'conditional_package_names': _("Conditional Package Names")}, multiline=True)

        self.printer.print_item(group)
Beispiel #24
0
    def run(self):
        groupid = self.get_option('id')
        repoid = self.get_option('repo_id')

        group = self.api.packagegroup_by_id(repoid, groupid)
        if group == None:
            system_exit(os.EX_DATAERR, _("Package group [%s] not found in repo [%s]") % (groupid, repoid))

        group['conditional_package_names'] = [name+": "+required_package  for name, required_package in group['conditional_package_names'].items()]

        self.printer.set_header(_("Package Group Information"))
        self.printer.add_column('id')
        self.printer.add_column('name')
        self.printer.add_column('description', multiline=True)
        self.printer.add_column('mandatory_package_names', multiline=True)
        self.printer.add_column('default_package_names', multiline=True)
        self.printer.add_column('optional_package_names', multiline=True)
        self.printer.add_column('conditional_package_names', multiline=True)

        self.printer.print_item(group)
Beispiel #25
0
    def select_repositories(self, repourls, assumeyes, our_raw_input = raw_input):
        selection = Selection()
        if not assumeyes:
            proceed = ''
            num_selects = [u_str(i+1) for i in range(len(repourls))]
            select_range_str = constants.SELECTION_QUERY % len(repourls)
            while proceed.strip().lower() not in  ['q', 'y']:
                if not proceed.strip().lower() == 'h':
                    self.__print_urls(repourls, selection)
                proceed = our_raw_input(
                    _("\nSelect urls for which candidate repos should be created; use `y` to confirm (h for help):"))
                select_val = proceed.strip().lower()
                if select_val == 'h':
                    print select_range_str
                elif select_val == 'a':
                    selection.add_selection(repourls)
                elif select_val in num_selects:
                    selection.add_selection([repourls[int(proceed.strip().lower())-1]])
                elif select_val == 'q':
                    selection = Selection()
                    system_exit(os.EX_OK, _("Operation aborted upon user request."))
                elif set(select_val.split(":")).issubset(num_selects):
                    lower, upper = tuple(select_val.split(":"))
                    selection.add_selection(repourls[int(lower)-1:int(upper)])
                elif select_val == 'c':
                    selection = Selection()
                elif select_val == 'y':
                    if not len(selection):
                        proceed = ''
                        continue
                    else:
                        break
                else:
                    continue
        else:
            #select all
            selection.add_selection(repourls)
            self.__print_urls(repourls, selection)

        return selection
Beispiel #26
0
    def select_repositories(self, repourls, assumeyes, raw_input = raw_input):
        selection = Selection()
        if not assumeyes:
            proceed = ''
            num_selects = [u_str(i+1) for i in range(len(repourls))]
            select_range_str = constants.SELECTION_QUERY % len(repourls)
            while proceed.strip().lower() not in  ['q', 'y']:
                if not proceed.strip().lower() == 'h':
                    self.__print_urls(repourls, selection)
                proceed = raw_input(_("\nSelect urls for which candidate repos should be created; use `y` to confirm (h for help):"))
                select_val = proceed.strip().lower()
                if select_val == 'h':
                    print select_range_str
                elif select_val == 'a':
                    selection.add_selection(repourls)
                elif select_val in num_selects:
                    selection.add_selection([repourls[int(proceed.strip().lower())-1]])
                elif select_val == 'q':
                    selection = Selection()
                    system_exit(os.EX_OK, _("Operation aborted upon user request."))
                elif set(select_val.split(":")).issubset(num_selects):
                    lower, upper = tuple(select_val.split(":"))
                    selection.add_selection(repourls[int(lower)-1:int(upper)])
                elif select_val == 'c':
                    selection = Selection()
                elif select_val == 'y':
                    if not len(selection):
                        proceed = ''
                        continue
                    else:
                        break
                else:
                    continue
        else:
            #select all
            selection.add_selection(repourls)
            self.__print_urls(repourls, selection)

        return selection
Beispiel #27
0
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
Beispiel #28
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
Beispiel #29
0
 def get_parent_id(self, orgName, envName, parentName):
     parent = get_template(orgName, envName, parentName)
     if parent != None:
         return parent["id"]
     system_exit(os.EX_DATAERR)
Beispiel #30
0
 def get_role(self, name):
     role = self.api.role_by_name(name)
     if role == None:
         system_exit(os.EX_DATAERR, _("Cannot find user role '%s'") % name )
     return role
Beispiel #31
0
 def template_id(self, options):
     tpl = get_template(self.orgName, self.priorEnvName, options['name'])
     if tpl == None:
         system_exit(os.EX_DATAERR)
     return tpl['id']
Beispiel #32
0
 def repo_id(self, options):
     repo = get_repo(self.orgName, options['product'], options['name'], self.priorEnvName)
     if repo == None:
         system_exit(os.EX_DATAERR)
     return repo['id']
Beispiel #33
0
 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))
Beispiel #34
0
 def check_options(self, validator):
     validator.require(('user_role', 'name', 'scope'))
     if (self.get_option('all_tags')) and (len(self.get_option('tags')) > 0):
         system_exit(os.EX_DATAERR, _("Can not specify a set of tags and use --all_tags"))
Beispiel #35
0
 def get_parent_id(self, orgName, envName, parentName):
     parent = get_template(orgName, envName, parentName)
     if parent != None:
         return parent["id"]
     system_exit(os.EX_DATAERR)
Beispiel #36
0
 def get_role(self, name):
     role = self.api.role_by_name(name)
     if role == None:
         system_exit(os.EX_DATAERR,
                     _("Cannot find user role [ %s ]") % name)
     return role
Beispiel #37
0
 def update(self, name, orgName, newName, description, url):
     prov = get_provider(orgName, name)
     prov = self.api.update(prov["id"], newName, description, url)
     system_exit(os.EX_OK,
                 _("Successfully updated provider [ %s ]") % prov['name'])
Beispiel #38
0
 def update(self, name, orgName, newName, description, url):
     prov = get_provider(orgName, name)
     prov = self.api.update(prov["id"], newName, description, url)
     system_exit(os.EX_OK, _("Successfully updated provider [ %s ]") % prov['name'])
Beispiel #39
0
 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))