[Kimchi-devel] [PATCH 2/6 V3] Host's repositories management: Update REST API

Aline Manera alinefm at linux.vnet.ibm.com
Mon Feb 17 14:42:19 UTC 2014


On 02/15/2014 07:49 PM, Paulo Vital wrote:
> Define Repositories collection and Repository resource according to API.md
> Update API.json
> Activate auth support to new collection
>
> Signed-off-by: Paulo Vital <pvital at linux.vnet.ibm.com>
> ---
>   src/kimchi/API.json        | 76 ++++++++++++++++++++++++++++++++++++++++++++++
>   src/kimchi/control/host.py | 21 +++++++++++++
>   2 files changed, 97 insertions(+)
>
> diff --git a/src/kimchi/API.json b/src/kimchi/API.json
> index c36244c..68037fc 100644
> --- a/src/kimchi/API.json
> +++ b/src/kimchi/API.json
> @@ -478,6 +478,82 @@
>               },
>               "additionalProperties": false,
>               "error": "KCHAPI0001E"
> +        },
> +        "repository_create": {
> +            "type": "object",
> +            "properties": {
> +                "repo_id": {
> +                    "description": "Unique repository name for each repository, one word.",
> +                    "type": "string",
> +                    "error": "KCHREPOS0001E"
> +                },
> +                "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",
> +                    "pattern": "^((file):|(http)[s]?:|(ftp)[s]?:)?$",
> +                    "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.",
> +                    "pattern": "^((file):|(http)[s]?:|(ftp)[s]?:)?$",
> +                    "type": "string",
> +                    "error": "KCHREPOS0004E"
> +                }
> +            },
> +            "additionalProperties": false,
> +            "error": "KCHAPI0001E"
> +        },
> +        "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",
> +                    "pattern": "^((file):|(http)[s]?:|(ftp)[s]?:)?$",
> +                    "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.",
> +                    "pattern": "^((file):|(http)[s]?:|(ftp)[s]?:)?$",
> +                    "type": "string",
> +                    "error": "KCHREPOS0004E"
> +                }
> +            },
> +            "additionalProperties": false,
> +            "error": "KCHAPI0001E"
>           }
>       }
>   }
> diff --git a/src/kimchi/control/host.py b/src/kimchi/control/host.py
> index a705f59..6e9cf35 100644
> --- a/src/kimchi/control/host.py
> +++ b/src/kimchi/control/host.py
> @@ -42,6 +42,7 @@ class Host(Resource):
>           self.partitions = Partitions(self.model)
>           self.devices = Devices(self.model)
>           self.packagesupdate = PackagesUpdate(self.model)
> +        self.repositories = Repositories(self.model)
>
>       @property
>       def data(self):
> @@ -106,3 +107,23 @@ class PackageUpdate(Resource):
>       @property
>       def data(self):
>           return self.info
> +
> +
> +class Repositories(Collection):
> +    def __init__(self, model):
> +        super(Repositories, self).__init__(model)
> +        self.resource = Repository
> +
> +
> +class Repository(Resource):
> +    def __init__(self, model, id):
> +        super(Repository, self).__init__(model, id)
> +        self.update_params = ["repo_id", "repo_name", "baseurl", "mirrors",
> +                              "url_args", "enabled", "gpgcheck", "gpgkey"]

'enabled' should not be there. It will be updated through actions 
enable/disable.

> +        self.uri_fmt = "/host/repositories/%s"
> +        self.enable = self.generate_action_handler('enable')
> +        self.disable = self.generate_action_handler('disable')
> +
> +    @property
> +    def data(self):
> +        return self.info




More information about the Kimchi-devel mailing list