def test_convert_repo_origin(self): """Test the conversion of the repo origin.""" ks_repo = RepoData() ks_repo.name = "repo-name" # Test the system origin. repo_data = convert_ks_repo_to_repo_data(ks_repo) assert repo_data.origin == REPO_ORIGIN_SYSTEM ks_repo = convert_repo_data_to_ks_repo(repo_data) assert ks_repo.treeinfo_origin is False # Test the user origin. ks_repo.baseurl = "http://url" repo_data = convert_ks_repo_to_repo_data(ks_repo) assert repo_data.origin == REPO_ORIGIN_USER ks_repo = convert_repo_data_to_ks_repo(repo_data) assert ks_repo.treeinfo_origin is False # Test the treeinfo origin. ks_repo.treeinfo_origin = True repo_data = convert_ks_repo_to_repo_data(ks_repo) assert repo_data.origin == REPO_ORIGIN_TREEINFO ks_repo = convert_repo_data_to_ks_repo(repo_data) assert ks_repo.treeinfo_origin is True
def test_convert_repo_enabled(self): """Test the conversion of the enabled attribute.""" ks_repo = RepoData() repo_data = convert_ks_repo_to_repo_data(ks_repo) assert repo_data.enabled is True ks_repo = convert_repo_data_to_ks_repo(repo_data) assert ks_repo.enabled is True ks_repo.enabled = False repo_data = convert_ks_repo_to_repo_data(ks_repo) assert repo_data.enabled is False ks_repo = convert_repo_data_to_ks_repo(repo_data) assert ks_repo.enabled is False
def _load_treeinfo_repositories(self, base_repo_url, repo_names_to_disable, data): """Load new repositories from treeinfo file. :param base_repo_url: base repository url. This is not saved anywhere when the function is called. It will be add to the existing urls if not None. :param repo_names_to_disable: list of repository names which should be disabled after load :type repo_names_to_disable: [str] :param data: repo configuration data """ if self._install_tree_metadata: existing_urls = [] if base_repo_url is not None: existing_urls.append(base_repo_url) for ks_repo in self.data.repo.dataList(): baseurl = ks_repo.baseurl existing_urls.append(baseurl) enabled_repositories_from_treeinfo = conf.payload.enabled_repositories_from_treeinfo for repo_md in self._install_tree_metadata.get_metadata_repos(): if repo_md.path not in existing_urls: repo_treeinfo = self._install_tree_metadata.get_treeinfo_for( repo_md.name) # disable repositories disabled by user manually before if repo_md.name in repo_names_to_disable: repo_enabled = False else: repo_enabled = repo_treeinfo.type in enabled_repositories_from_treeinfo repo = RepoData( name=repo_md.name, baseurl=repo_md.path, noverifyssl=not data.ssl_verification_enabled, proxy=data.proxy, sslcacert=data.ssl_configuration.ca_cert_path, sslclientcert=data.ssl_configuration.client_cert_path, sslclientkey=data.ssl_configuration.client_key_path, install=False, enabled=repo_enabled) repo.treeinfo_origin = True log.debug("Adding new treeinfo repository: %s enabled: %s", repo_md.name, repo_enabled) self._add_repo_to_dnf_and_ks(repo)
def add_additional_repositories_to_ksdata(self): from pyanaconda.kickstart import RepoData for add_repo in self.additional_repos: name, repo_url = self._get_additional_repo_name(add_repo) try: source = SourceFactory.parse_repo_cmdline_string(repo_url) except PayloadSourceTypeUnrecognized: log.error( "Type for additional repository %s is not recognized!", add_repo) return repo = RepoData(name=name, baseurl=repo_url, install=False) if source.is_nfs or source.is_http or source.is_https or source.is_ftp \ or source.is_file: repo.enabled = True elif source.is_harddrive: repo.enabled = True repo.partition = source.partition repo.iso_path = source.path repo.baseurl = "file://" else: log.error( "Source type %s for additional repository %s is not supported!", source.source_type.value, add_repo) continue self._check_repo_name_uniqueness(repo) self.ksdata.repo.dataList().append(repo)
def add_additional_repositories_to_ksdata(self): from pyanaconda.kickstart import RepoData for add_repo in self.additional_repos: name, repo_url = self._get_additional_repo_name(add_repo) try: source = SourceFactory.parse_repo_cmdline_string(repo_url) except PayloadSourceTypeUnrecognized: log.error("Type for additional repository %s is not recognized!", add_repo) return repo = RepoData(name=name, baseurl=repo_url, install=False) if source.is_nfs or source.is_http or source.is_https or source.is_ftp \ or source.is_file: repo.enabled = True elif source.is_harddrive: repo.enabled = True repo.partition = source.partition repo.iso_path = source.path repo.baseurl = "file://" else: log.error("Source type %s for additional repository %s is not supported!", source.source_type.value, add_repo) continue self._check_repo_name_uniqueness(repo) self.ksdata.repo.dataList().append(repo)
def configurePayload(self, payload): # pylint: disable=line-too-long ''' Load SL specific payload repos ''' if isinstance(payload, PackagePayload): major_version = productVersion.replace('rolling', '').split('.')[0] # A number of users like EPEL, seed it disabled payload.addDisabledRepo( RepoData( name='epel', metalink= "https://mirrors.fedoraproject.org/metalink?repo=epel-" + major_version + "&arch=" + productArch)) # ELRepo provides handy hardware drivers, seed it disabled payload.addDisabledRepo( RepoData( name='elrepo', mirrorlist="http://mirrors.elrepo.org/mirrors-elrepo.el" + major_version)) super().configurePayload(payload)
def convert_repo_data_to_ks_repo(repo_data): """Convert the repo configuration into a kickstart command. :param RepoConfigurationData repo_data: a repo configuration :return RepoData: a kickstart data """ if not isinstance(repo_data, RepoConfigurationData): raise ValueError("Unexpected data: {}".format(type(repo_data))) ks_data = RepoData() ks_data.name = repo_data.name ks_data.enabled = repo_data.enabled if repo_data.type == URL_TYPE_BASEURL: ks_data.baseurl = repo_data.url elif repo_data.type == URL_TYPE_MIRRORLIST: ks_data.mirrorlist = repo_data.url elif repo_data.type == URL_TYPE_METALINK: ks_data.metalink = repo_data.url ks_data.proxy = repo_data.proxy ks_data.noverifyssl = not repo_data.ssl_verification_enabled ks_data.sslcacert = repo_data.ssl_configuration.ca_cert_path ks_data.sslclientcert = repo_data.ssl_configuration.client_cert_path ks_data.sslclientkey = repo_data.ssl_configuration.client_key_path if repo_data.cost != DNF_DEFAULT_REPO_COST: ks_data.cost = repo_data.cost ks_data.includepkgs = repo_data.included_packages ks_data.excludepkgs = repo_data.excluded_packages ks_data.install = repo_data.installation_enabled return ks_data