On 2014年09月19日 11:00, Aline Manera wrote:
On 09/17/2014 07:35 AM, lvroyce(a)linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
>
> We allow config params for both yum and apt in API.json,
> while we need to filter out parmas not proper for each kind.
> So add this logic to repository model.
>
> Signed-off-by: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
> ---
> src/kimchi/i18n.py | 1 +
> src/kimchi/repositories.py | 14 +++++++++++---
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
> index 9e66c68..e83843c 100644
> --- a/src/kimchi/i18n.py
> +++ b/src/kimchi/i18n.py
> @@ -287,4 +287,5 @@ messages = {
> "KCHREPOS0025E": _("Unable to retrieve repository information.
> Details: '%(err)s'"),
> "KCHREPOS0026E": _("Unable to add repository. Details:
'%(err)s'"),
> "KCHREPOS0027E": _("Unable to remove repository. Details:
'%(err)s'"),
> + "KCHREPOS0028E": _("Configuration items: '%(items)s' are not
> supported by repository manager"),
> }
> diff --git a/src/kimchi/repositories.py b/src/kimchi/repositories.py
> index 676b7c2..e883f8c 100644
> --- a/src/kimchi/repositories.py
> +++ b/src/kimchi/repositories.py
> @@ -25,7 +25,7 @@ from ConfigParser import ConfigParser
>
> from kimchi.basemodel import Singleton
> from kimchi.config import kimchiLock
> -from kimchi.exception import InvalidOperation
> +from kimchi.exception import InvalidOperation, InvalidParameter
> from kimchi.exception import OperationFailed, NotFoundError,
> MissingParameter
> from kimchi.utils import validate_repo_url
>
> @@ -104,6 +104,7 @@ class YumRepo(object):
> """
> TYPE = 'yum'
> DEFAULT_CONF_DIR = "/etc/yum.repos.d"
> + CONFIG_ENTRY = ('repo_name', 'gpgcheck', 'gpgkey',
'mirrorlist')
Seems docs/API.md is missing gpgcheck and gpgkey on POST request.
Could you also update it, please?
ACK
> def __init__(self):
> self._yb = getattr(__import__('yum'), 'YumBase')
> @@ -172,8 +173,11 @@ class YumRepo(object):
> """
> # At least one base url, or one mirror, must be given.
> baseurl = params.get('baseurl', '')
> -
> config = params.get('config', {})
> + extra_keys =
> list(set(config.keys()).difference(set(self.CONFIG_ENTRY)))
> + if len(extra_keys) > 0:
> + raise InvalidParameter("KCHREPOS0028E",
> + {'items': ",".join(extra_keys)})
> mirrorlist = config.get('mirrorlist', '')
> if not baseurl and not mirrorlist:
> raise MissingParameter("KCHREPOS0013E")
> @@ -318,6 +322,7 @@ class AptRepo(object):
> """
> TYPE = 'deb'
> KIMCHI_LIST = "kimchi-source.list"
> + CONFIG_ENTRY = ('dist', 'comps')
>
> def __init__(self):
> getattr(__import__('apt_pkg'), 'init_config')()
> @@ -413,12 +418,15 @@ class AptRepo(object):
> # To create a APT repository the dist is a required parameter
> # (in addition to baseurl, verified on controller through API.json)
> config = params.get('config', None)
> + extra_keys =
> list(set(config.keys()).difference(set(self.CONFIG_ENTRY)))
> + if len(extra_keys) > 0:
> + raise InvalidParameter("KCHREPOS0028E",
> + {'items': ",".join(extra_keys)})
> if config is None:
> raise MissingParameter("KCHREPOS0019E")
>
> if 'dist' not in config.keys():
> raise MissingParameter("KCHREPOS0019E")
> -
> uri = params['baseurl']
> dist = config['dist']
> comps = config.get('comps', [])