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})
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]
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])
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])
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
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
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
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
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)
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)
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
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)
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)
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
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 )
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
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)
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"))
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
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'])
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)
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)})