Esempio n. 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})
Esempio n. 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 than existing data," + " please try with --force option to import manifest."
                )
            raise re, None, sys.exc_info()[2]
Esempio n. 3
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})
Esempio n. 4
0
    def parse_datetime(cls, 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])
Esempio n. 5
0
    def parse_datetime(cls, 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])
Esempio n. 6
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])
Esempio n. 7
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])
Esempio n. 8
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
Esempio n. 9
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
Esempio n. 10
0
    def discover_repositories(self, orgName, url):
        print (_("Discovering repository urls, this could take some time..."))
        task = self.org_api.repo_discovery(orgName, url)

        tasks = run_spinner_in_bg(wait_for_async_task, [task])
        repourls = tasks[0]["result"]

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

        return repourls
Esempio n. 11
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
Esempio n. 12
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', _("ID"))
        self.printer.add_column('name', _("Name"))

        self.printer.print_items(groups)

        return os.EX_OK
Esempio n. 13
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)
Esempio n. 14
0
def test_record(rec, success_msg, failure_msg):
    """
    Test if a record is valid, and exit with a proper return code and a message.
    @type rec: dictionary
    @param rec: record returned from server
    @type success_msg: string
    @param success_msg: success message
    @type failure_msg: string
    @param failure_msg: failure message
    """
    if is_valid_record(rec):
        system_exit(os.EX_OK, success_msg)
    else:
        system_exit(os.EX_DATAERR, failure_msg)
Esempio n. 15
0
def test_record(rec, success_msg, failure_msg):
    """
    Test if a record is valid, and exit with a proper return code and a message.
    @type rec: dictionary
    @param rec: record returned from server
    @type success_msg: string
    @param success_msg: success message
    @type failure_msg: string
    @param failure_msg: failure message
    """
    if is_valid_record(rec):
        system_exit(os.EX_OK, success_msg)
    else:
        system_exit(os.EX_DATAERR, failure_msg)
Esempio n. 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
Esempio n. 17
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)
Esempio n. 18
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', _("ID"))
        self.printer.add_column('name', _("Name"))

        self.printer.print_items(groups)

        return os.EX_OK
Esempio n. 19
0
def test_foreman_record(rec, key, success_msg, failure_msg):
    """
    Test if a foreman record is valid, and exit with a proper return code and a message.
    @type rec: dictionary
    @param rec: record returned from server
    @type key: string
    @param key: expected record key (eg config_template)
    @type success_msg: string
    @param success_msg: success message
    @type failure_msg: string
    @param failure_msg: failure message
    """
    if type(rec)==dict and key in rec:
        system_exit(os.EX_OK, success_msg)
    else:
        system_exit(os.EX_DATAERR, failure_msg)
Esempio n. 20
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)
Esempio n. 21
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)
Esempio n. 22
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
Esempio n. 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 IOError:
            system_exit(os.EX_IOERR, _("File %s does not exist") % manifestPath)

        prov = get_provider(orgName, provName)

        task = ManifestAsyncTask(self.api.import_manifest(prov["id"], f, force))
        run_spinner_in_bg(wait_for_async_task, [task], message=_("Importing manifest, please wait... "))

        return ManifestAsyncTask.evaluate_task_status(task,
            failed =   _("Provider [ %s ] failed to import manifest") % provName,
            canceled = _("Provider [ %s ] canceled manifest import") % provName,
            ok =       _("Provider [ %s ] manifest import complete") % provName
        )
Esempio n. 24
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
Esempio n. 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 IOError:
            system_exit(os.EX_IOERR,
                        _("File %s does not exist") % manifestPath)

        prov = get_provider(orgName, provName)

        task = ManifestAsyncTask(self.api.import_manifest(
            prov["id"], f, force))
        run_spinner_in_bg(wait_for_async_task, [task],
                          message=_("Importing manifest, please wait... "))

        return ManifestAsyncTask.evaluate_task_status(
            task,
            failed=_("Provider [ %s ] failed to import manifest") % provName,
            canceled=_("Provider [ %s ] canceled manifest import") % provName,
            ok=_("Provider [ %s ] manifest import complete") % provName)
Esempio n. 26
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"))
Esempio n. 27
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
Esempio n. 28
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
Esempio n. 29
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'])
Esempio n. 30
0
 def get_parent_id(cls, orgName, envName, parentName):
     parent = get_template(orgName, envName, parentName)
     if parent != None:
         return parent["id"]
     system_exit(os.EX_DATAERR)
Esempio n. 31
0
 def check_options(self, validator):
     validator.require('org')
     if (self.get_option("state") and self.get_option("state") not in self.STATES):
         state = self.get_option("state")
         system_exit(os.EX_DATAERR, _("State '%(state)s' not valid. It must be in [%(options)s].") %
                     {'state': state, 'options': ", ".join(self.STATES)})
Esempio n. 32
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'])
Esempio n. 33
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"))