def run(self, cmdline, db): repo = (db.session.query(Repo) .filter(Repo.name == cmdline.NAME) .first()) if repo: self.log_error("Repository '{0}' already defined" .format(cmdline.NAME)) return 1 self.log_info("Adding repository '{0}' ({1})" .format(cmdline.NAME, cmdline.URL)) new = Repo() new.name = cmdline.NAME new.type = cmdline.TYPE for url in cmdline.URL: new_url = Url() new_url.url = url new.url_list.append(new_url) if cmdline.nice_name: new.nice_name = cmdline.nice_name new.nogpgcheck = cmdline.nogpgcheck db.session.add(new) db.session.flush() return 0
def run(self, cmdline, db): repo = (db.session.query(Repo) .filter(Repo.name == cmdline.NAME) .first()) if repo: self.log_error("Repository '{0}' already defined" .format(cmdline.NAME)) return 1 self.log_info("Adding repository '{0}' ({1})" .format(cmdline.NAME, cmdline.URL)) new = Repo() new.name = cmdline.NAME new.type = cmdline.TYPE for url in cmdline.URL: new_url = Url() new_url.url = url new.url_list.append(new_url) if cmdline.nice_name: new.nice_name = cmdline.nice_name new.nogpgcheck = cmdline.nogpgcheck db.session.add(new) db.session.flush()
def run(self, cmdline, db): repo = (db.session.query(Repo) .filter(Repo.name == cmdline.NAME) .first()) if not repo: self.log_error("Repository '{0}' not found" .format(cmdline.NAME)) return 1 if cmdline.name: dbrepo = (db.session.query(Repo) .filter(Repo.name == cmdline.name) .first()) if dbrepo: self.log_error("Unable to rename repository '{0}' to '{1}'," " the latter is already defined" .format(repo.name, dbrepo.name)) return 1 options = ["name", "type", "nice_name"] for opt in options: if hasattr(cmdline, opt) and getattr(cmdline, opt): newval = getattr(cmdline, opt) self.log_info("Updating {0} on '{1}' to '{2}'" .format(opt, repo.name, newval)) setattr(repo, opt, newval) if cmdline.add_url: new_url = Url() new_url.url = getattr(cmdline, "add_url") repo.url_list.append(new_url) if cmdline.remove_url: url = (db.session.query(Url) .join(UrlRepo) .filter(Url.url == cmdline.remove_url) .filter(UrlRepo.repo_id == repo.id) .first()) if not url: self.log_error("Url is not assigned to selected repository." " Use repoinfo to find out more about repository.") return 1 repo.url_list.remove(url) db.session.delete(url) if cmdline.gpgcheck: repo.nogpgcheck = False if cmdline.nogpgcheck: repo.nogpgcheck = True db.session.add(repo) db.session.flush() self.log_info("Repository modified") return 0
def run(self, cmdline, db): repo = (db.session.query(Repo) .filter(Repo.name == cmdline.NAME) .first()) if not repo: self.log_error("Repository '{0}' not found" .format(cmdline.NAME)) return 1 if cmdline.name: dbrepo = (db.session.query(Repo) .filter(Repo.name == cmdline.name) .first()) if dbrepo: self.log_error("Unable to rename repository '{0}' to '{1}'," " the latter is already defined" .format(repo.name, dbrepo.name)) return 1 options = ["name", "type", "nice_name"] for opt in options: if hasattr(cmdline, opt) and getattr(cmdline, opt): newval = getattr(cmdline, opt) self.log_info("Updating {0} on '{1}' to '{2}'" .format(opt, repo.name, newval)) setattr(repo, opt, newval) if cmdline.add_url: new_url = Url() new_url.url = getattr(cmdline, "add_url") repo.url_list.append(new_url) if cmdline.remove_url: url = (db.session.query(Url) .join(UrlRepo) .filter(Url.url == cmdline.remove_url) .filter(UrlRepo.repo_id == repo.id) .first()) if not url: self.log_error("Url is not assigned to selected repository." " Use repoinfo to find out more about repository.") return 1 repo.url_list.remove(url) db.session.delete(url) if cmdline.gpgcheck: repo.nogpgcheck = False if cmdline.nogpgcheck: repo.nogpgcheck = True db.session.add(repo) db.session.flush() self.log_info("Repository modified")
def _import_yum_repo(self, fp): """ Parse open .repo file `fp` and return list of Repo instances. Section name is used as repository name, baseurl (required) and gpgcheck are stored. """ parser = ConfigParser.SafeConfigParser() try: parser.readfp(fp) except ConfigParser.Error as exc: self.log_error("Exception while parsing repository file: " "'{0}'".format(exc)) return None result = [] for section in parser.sections(): new = Repo() new.name = section new.type = "yum" if not parser.has_option(section, "baseurl"): self.log_error("Repo '{0}' is missing required" " option 'baseurl'".format(section)) return None new_url = Url() new_url.url = parser.get(section, "baseurl") new.url_list = [new_url] if parser.has_option(section, "gpgcheck"): new.nogpgcheck = parser.getint(section, "gpgcheck") == 0 result.append(new) return result
def run(self, cmdline, db) -> int: if not cmdline.REPO and not cmdline.all: self.log_error("No repositories specified") return 1 repos = [] for pattern in cmdline.REPO: wildcard_used = any(c in pattern for c in ['?', '*']) if wildcard_used: break if (len(cmdline.REPO) > 1 or cmdline.all or wildcard_used) and (cmdline.name or cmdline.nice_name): self.log_error( "Can't assign the same name to multiple repositories") return 1 if cmdline.all or '*' in cmdline.REPO: repos.extend(db.session.query(Repo).all()) else: repos.extend(get_repos_by_wildcards(db, cmdline.REPO)) if repos: repos = sorted(list(set(repos)), key=lambda x: x.name) else: self.log_warn("No matching repositories found") return 1 if cmdline.name: dbrepo = (db.session.query(Repo).filter( Repo.name == cmdline.name).first()) if dbrepo: self.log_error("Unable to rename repository '{0}' to '{1}'," " the latter is already defined".format( cmdline.REPO[0], dbrepo.name)) return 1 options = ["name", "type", "nice_name"] for repo in repos: for opt in options: if hasattr(cmdline, opt) and getattr(cmdline, opt): newval = getattr(cmdline, opt) self.log_info("Updating {0} on '{1}' to '{2}'".format( opt, repo.name, newval)) setattr(repo, opt, newval) if cmdline.add_url: new_url = Url() new_url.url = getattr(cmdline, "add_url") repo.url_list.append(new_url) if cmdline.remove_url: url = (db.session.query(Url).join(UrlRepo).filter( Url.url == cmdline.remove_url).filter( UrlRepo.repo_id == repo.id).first()) if not url: self.log_warn( "Url is not assigned to {0} repository." " Use repoinfo to find out more about repository.". format(repo.name)) continue repo.url_list.remove(url) db.session.delete(url) if cmdline.gpgcheck == "enable": repo.nogpgcheck = False if cmdline.gpgcheck == "disable": repo.nogpgcheck = True db.session.add(repo) self.log_info("Repository {0} modified".format(repo.name)) db.session.flush() return 0