def _load_tree_info(self, root_url, file_path=None, file_content=None): """Load the treeinfo metadata. :param root_url: a URL of the installation root :param file_path: a path to a treeinfo file or None :param file_content: a content of a treeinfo file or None :raise InvalidTreeInfoError: if the metadata is invalid """ try: # Load and validate the metadata. tree_info = TreeInfo() if file_content: tree_info.loads(file_content) else: tree_info.load(file_path) tree_info.validate() log.debug("Loaded treeinfo metadata:\n%s", tree_info.dumps()) # Load the release version. release_version = tree_info.release.version.lower() # Create repositories for variants and optional variants. # Child variants (like addons) will be ignored. repo_list = [] for name in tree_info.variants: log.debug("Processing the '%s' variant.", name) # Get the variant metadata. data = tree_info.variants[name] # Create the repo metadata. repo_md = TreeInfoRepoMetadata( repo_name=name, tree_info=data, root_url=root_url, ) repo_list.append(repo_md) except configparser.Error as e: log.debug("Failed to load treeinfo metadata: %s", e) raise InvalidTreeInfoError("Invalid metadata: {}".format(str(e))) from None # Update this treeinfo representation. self._root_url = root_url self._repositories = repo_list self._release_version = release_version log.debug("The treeinfo metadata is loaded.")
def _load_tree_info(self, root_path, file_path=None, file_content=None): """Load the treeinfo metadata. :param root_path: a path to the installation root :param file_path: a path to a treeinfo file or None :param file_content: a content of a treeinfo file or None :raise InvalidTreeInfoError: if the metadata is invalid """ try: # Load and validate the metadata. tree_info = TreeInfo() if file_content: tree_info.loads(file_content) else: tree_info.load(file_path) tree_info.validate() # Load the release version. release_version = tree_info.release.version.lower() # Load the repositories. repo_list = [] for name in tree_info.variants: # Get the variant metadata. data = tree_info.variants[name] # Create the repo metadata. repo_md = TreeInfoRepoMetadata( repo_name=name, tree_info=data, root_path=root_path, ) repo_list.append(repo_md) except configparser.Error as e: log.debug("Failed to load treeinfo metadata: %s", e) raise InvalidTreeInfoError("Invalid metadata: {}".format( str(e))) from None # Update this treeinfo representation. self._root_path = root_path self._repositories = repo_list self._release_version = release_version log.debug("The treeinfo metadata is loaded.")