
From: Aline Manera <alinefm@br.ibm.com> There are some specific repository data according to its type. 'deb' repositories have dist and componenets and that information does not make sense for a 'yum' repository. The same way a 'yum' repository has name, mirrorlist, gpgcheck, gpgkey that only make sense for this type of repo. Signed-off-by: Aline Manera <alinefm@br.ibm.com> --- docs/API.md | 78 +++++++++++++------------------ src/kimchi/API.json | 111 ++++++++++++++++++++++++++++---------------- src/kimchi/control/host.py | 3 +- 3 files changed, 104 insertions(+), 88 deletions(-) diff --git a/docs/API.md b/docs/API.md index 147511d..8d6682b 100644 --- a/docs/API.md +++ b/docs/API.md @@ -848,19 +848,16 @@ Contains the information for a specific package to be updated. * **GET**: Retrieve a summarized list of all repositories available * **POST**: Add a new repository - * repo_id *(optional)*: Unique repository name for each repository, -one word. * baseurl: URL to the repodata directory when "is_mirror" is false. Otherwise, it can be URL to the mirror system for YUM. Can be an http://, ftp:// or file:// URL. - * is_mirror *(optional)*: Set the given URI of baseurl as a mirror -list, instead of use baseurl in repository configuration. - * url_args *(optional)*: Arguments to be passed to baseurl, like the -list of APT repositories provided by the same baseurl. - * gpgkey *(optional)*: URL pointing to the ASCII-armored GPG key -file for the repository. This option is used if yum needs a public key -to verify a package and the required key hasn't been imported into the -RPM database. + * repo_id *(optional)*: Unique YUM repository ID + * config: A dictionary that contains specific data according to repository + type. + * mirrorlist *(optional)*: Specifies a URL to a file containing a + list of baseurls for YUM repository + * dist: Distribution to DEB repository + * comps *(optional)*: List of components to DEB repository ### Resource: Repository @@ -870,47 +867,38 @@ RPM database. * **GET**: Retrieve the full description of a Repository * repo_id: Unique repository name for each repository, one word. - * repo_name: Human-readable string describing the repository. * baseurl: URL to the repodata directory when "is_mirror" is false. Otherwise, it can be URL to the mirror system for YUM. Can be an http://, ftp:// or file:// URL. - * is_mirror: Set the given URI of baseurl as a mirror list, instead -of use baseurl in repository configuration. - * url_args: Arguments to be passed to baseurl, like the list of APT -repositories provided by the same baseurl. - * enabled: Indicates if repository should be included as a package -source: - * false: Do not include the repository. - * true: Include the repository. - * gpgcheck: Indicates if a GPG signature check on the packages gotten -from repository should be performed: - * false: Do not check GPG signature - * true: Check GPG signature - * gpgkey: URL pointing to the ASCII-armored GPG key file for the -repository. This option is used if yum needs a public key to verify a package -and the required key hasn't been imported into the RPM database. + * enabled: True, when repository is enabled; False, otherwise + * config: A dictionary that contains specific data according to repository + type. + * repo_name: Human-readable string describing the YUM repository. + * mirrorlist: Specifies a URL to a file containing a list of baseurls + for YUM repository + * gpgcheck: True, to enable GPG signature verification; False, otherwise. + * gpgkey: URL pointing to the ASCII-armored GPG key file for the YUM + repository. + * dist: Distribution to DEB repository + * comps: List of components to DEB repository + * **DELETE**: Remove the Repository * **POST**: *See Repository Actions* * **PUT**: update the parameters of existing Repository - * repo_id *(otional)*: Unique repository name for each repository, -one word. - * repo_name *(otional)*: Human-readable string describing the -repository. - * baseurl *(optional)*: URL to the repodata directory when -"is_mirror" is false. Otherwise, it can be URL to the mirror system for -YUM. Can be an http://, ftp:// or file:// URL. - * is_mirror *(optional)*: Set the given URI of baseurl as a mirror -list, instead of use baseurl in repository configuration. - * url_args *(optional)*: Arguments to be passed to baseurl, like the -list of APT repositories provided by the same baseurl. - * gpgcheck *(optional)*: Indicates if a GPG signature check on the -packages gotten from repository should be performed: - * false: Do not check GPG signature - * true: Check GPG signature - * gpgkey *(optional)*: URL pointing to the ASCII-armored GPG key -file for the repository. This option is used if yum needs a public key -to verify a package and the required key hasn't been imported into the -RPM database. + * repo_id: Unique repository name for each repository, one word. + * baseurl: URL to the repodata directory when "is_mirror" is false. +Otherwise, it can be URL to the mirror system for YUM. Can be an +http://, ftp:// or file:// URL. + * config: A dictionary that contains specific data according to repository + type. + * repo_name: Human-readable string describing the YUM repository. + * mirrorlist: Specifies a URL to a file containing a list of baseurls + for YUM repository + * gpgcheck: True, to enable GPG signature verification; False, otherwise. + * gpgkey: URL pointing to the ASCII-armored GPG key file for the YUM + repository. + * dist: Distribution to DEB repository + * comps: List of components to DEB repository **Actions (POST):** diff --git a/src/kimchi/API.json b/src/kimchi/API.json index 6e932ed..cf89ce4 100644 --- a/src/kimchi/API.json +++ b/src/kimchi/API.json @@ -522,7 +522,7 @@ "type": "object", "properties": { "repo_id": { - "description": "Unique repository name for each repository, one word.", + "description": "Repository ID used for YUM repository.", "type": "string", "error": "KCHREPOS0001E" }, @@ -532,19 +532,33 @@ "required": true, "error": "KCHREPOS0002E" }, - "is_mirror": { - "description": "Set the given URI of baseurl as a mirror list", - "type": "boolean" - }, - "url_args": { - "description": "Arguments to be passed to baseurl, like the list of APT repositories provided by the same baseurl.", - "type": "string", - "error": "KCHREPOS0003E" - }, - "gpgkey": { - "description": "URL pointing to the ASCII-armored GPG key file for the repository.", - "type": "string", - "error": "KCHREPOS0004E" + "config": { + "description": "Dictionary containing repository configuration", + "type": "object", + "error": "KCHREPOS0003E", + "properties": { + "dist": { + "description": "Distribution to DEB repository", + "type": "string", + "error": "KCHREPOS0004E" + }, + "comps": { + "description": "List of components to DEB repository", + "type": "array", + "error": "KCHREPOS0005E", + "uniqueItems": true, + "items": { + "description": "Component name", + "type": "string", + "error": "KCHREPOS0006E" + } + }, + "mirrorlist": { + "description": "URL to a file containing a list of baseurls", + "type": "string", + "error": "KCHREPOS0007E" + } + } } }, "additionalProperties": false, @@ -553,38 +567,53 @@ "repository_update": { "type": "object", "properties": { - "repo_id": { - "description": "Unique repository name for each repository, one word.", - "type": "string", - "error": "KCHREPOS0001E" - }, - "repo_name": { - "description": "Human-readable string describing the repository.", - "type": "string", - "error": "KCHREPOS0005E" - }, "baseurl": { "description": "URL to the directory where the repodata directory of a repository is located. Can be an http://, ftp:// or file:// URL.", "type": "string", "error": "KCHREPOS0002E" }, - "is_mirror": { - "description": "Set the given URI of baseurl as a mirror list", - "type": "boolean" - }, - "url_args": { - "description": "Arguments to be passed to baseurl, like the list of APT repositories provided by the same baseurl.", - "type": "string", - "error": "KCHREPOS0003E" - }, - "gpgcheck": { - "description": "Indicates if a GPG signature check on the packages gotten from repository should be performed.", - "type": "boolean" - }, - "gpgkey": { - "description": "URL pointing to the ASCII-armored GPG key file for the repository.", - "type": "string", - "error": "KCHREPOS0004E" + "config": { + "description": "Dictionary containing repository configuration", + "type": "object", + "error": "KCHREPOS0003E", + "properties": { + "dist": { + "description": "Distribution to DEB repository", + "type": "string", + "error": "KCHREPOS0004E" + }, + "comps": { + "description": "List of components to DEB repository", + "type": "array", + "error": "KCHREPOS0005E", + "uniqueItems": true, + "items": { + "description": "Component name", + "type": "string", + "error": "KCHREPOS0006E" + } + }, + "repo_name": { + "description": "Human-readable string describing the YUM repository.", + "type": "string", + "error": "KCHREPOS0008E" + }, + "mirrorlist": { + "description": "URL to a file containing a list of baseurls for YUM repository", + "type": "string", + "error": "KCHREPOS0007E" + }, + "gpgcheck": { + "description": "Indicates if a GPG signature check on the packages gotten from repository should be performed.", + "type": "boolean", + "error": "KCHREPOS0009E" + }, + "gpgkey": { + "description": "URL pointing to the ASCII-armored GPG key file for the repository.", + "type": "string", + "error": "KCHREPOS0010E" + } + } } }, "additionalProperties": false, diff --git a/src/kimchi/control/host.py b/src/kimchi/control/host.py index edcc0ad..cfc24bd 100644 --- a/src/kimchi/control/host.py +++ b/src/kimchi/control/host.py @@ -113,8 +113,7 @@ class Repositories(Collection): class Repository(Resource): def __init__(self, model, id): super(Repository, self).__init__(model, id) - self.update_params = ["repo_id", "repo_name", "baseurl", "is_mirror", - "url_args", "gpgcheck", "gpgkey"] + self.update_params = ["config", "baseurl"] self.uri_fmt = "/host/repositories/%s" self.enable = self.generate_action_handler('enable') self.disable = self.generate_action_handler('disable') -- 1.7.10.4