[Kimchi-devel] [PATCH 3/6 V6] Host's repositories management: Update backend.

Sheldon shaohef at linux.vnet.ibm.com
Wed Feb 19 06:14:53 UTC 2014


comments below

On 02/19/2014 09:08 AM, Paulo Vital wrote:
> +
> +    def _write2disk(self, repo={}):
> +        """
> +        Write repository info into disk.
> +        """
> +        # Get a list with all reposdir configured in system's YUM.
> +        conf_dir = self._conf.reposdir
> +        if not conf_dir:
> +            raise NotFoundError("KCHREPOS0015E")
> +
> +        if len(repo) == 0:
> +            raise InvalidParameter("KCHREPOS0016E")
> +
> +        # Generate the content to be wrote.
> +        repo_content = '[%s]\n' % repo['repo_id']
> +        repo_content = repo_content + 'name=%s\n' % repo['repo_name']
> +
> +        if isinstance(repo['baseurl'], list):
> +            link = repo['baseurl'][0]
> +        else:
> +            link = repo['baseurl']
> +
> +        if repo['is_mirror']:
> +            repo_content = repo_content + 'mirrorlist=%s\n' % link
> +        else:
> +            repo_content = repo_content + 'baseurl=%s\n' % link
> +
> +        if repo['enabled']:
> +            repo_content = repo_content + 'enabled=1\n'
> +        else:
> +            repo_content = repo_content + 'enabled=0\n'
> +
> +        if repo['gpgcheck']:
> +            repo_content = repo_content + 'gpgcheck=1\n'
> +        else:
> +            repo_content = repo_content + 'gpgcheck=0\n'
> +
> +        if repo['gpgkey']:
> +            if isinstance(repo['gpgkey'], list):
> +                link = repo['gpgkey'][0]
> +            else:
> +                link = repo['gpgkey']
> +            repo_content = repo_content + 'gpgckey=%s\n' % link
> +
> +        # Scan for the confdirs and write the file in the first available
> +        # directory in the system. YUM will scan each confdir for repo files
> +        # and load it contents, so we can write in the first available dir.
I just wonder can we get the repo_file by:
In [19]: repo.repofile
Out[19]: '///etc/yum.repos.d/fedora.repo'
> +        for dir in conf_dir:
> +            if os.path.isdir(dir):
> +                repo_file = dir + '/%s.repo' % repo['repo_id']
> +                if os.path.isfile(repo_file):
> +                    os.remove(repo_file)
> +
> +                try:
> +                    with open(repo_file, 'w') as fd:
> +                        fd.write(repo_content)
> +                        fd.close()
> +                except:
> +                    raise OperationFailed("KCHREPOS0017E",
> +                                          {'repo_file': repo_file})
> +                break
> +        return True
> +
> +    def _removefromdisk(self, repo_id):
> +        """
> +        Delete the repo file from disk of a given repository
> +        """
> +        conf_dir = self._conf.reposdir
> +        if not conf_dir:
> +            raise NotFoundError("KCHREPOS0015E")
> +
> +        for dir in conf_dir:
> +            if os.path.isdir(dir):
> +                repo_file = dir + '/%s.repo' % repo_id
> +                if os.path.isfile(repo_file):
> +                    os.remove(repo_file)
> +
> +        return True
> +
> +


-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center




More information about the Kimchi-devel mailing list