From 89f5c1244e2a453ecc23f4bf90aea690fff532f6 Mon Sep 17 00:00:00 2001 From: Douglas Paz Date: Mon, 22 Oct 2018 11:21:06 -0300 Subject: [PATCH] Add update_registry command --- README.md | 24 +++++++++++++++++++++++- portainer_cli/__init__.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f7e3337..6927ba0 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ portainer-cli update_stack id endpoint_id [stack_file] portainer-cli update_stack 2 1 docker-compose.yml ``` -#### update_stack command environment variables arguments +#### Environment variables arguments ```bash portainer-cli update_stack id endpoint_id [stack_file] --env.var=value @@ -76,6 +76,28 @@ Where `var` is environment variable name and `value` is the environment variable | `-p` or `--prune` | Prune services | | `-c` or `--clear-env` | Clear all environment variables | +### update_registry command + +Update registry. + +```bash +portainer-cli update_registry id [-name] [-url] +``` + +**E.g:** + +```bash +portainer-cli update_registry 1 -name="Some registry" -url="some.url.com/r" +``` + +#### Authentication + +You can use authentication passing `-a` or `--authentication` flag, but you must pass the `-username` and `-password` options. + +```bash +portainer-cli update_registry 1 -a -username=douglas -password=d1234 +``` + ### request command Make a request. diff --git a/portainer_cli/__init__.py b/portainer_cli/__init__.py index 424f4f3..45f504c 100755 --- a/portainer_cli/__init__.py +++ b/portainer_cli/__init__.py @@ -27,11 +27,13 @@ class PortainerCLI: COMMAND_LOGIN = 'login' COMMAND_REQUEST = 'request' COMMAND_UPDATE_STACK = 'update_stack' + COMMAND_UPDATE_REGISTRY = 'update_registry' COMMANDS = [ COMMAND_CONFIGURE, COMMAND_LOGIN, COMMAND_REQUEST, COMMAND_UPDATE_STACK, + COMMAND_UPDATE_REGISTRY, ] METHOD_GET = 'GET' @@ -141,6 +143,31 @@ class PortainerCLI: data, ) + @plac.annotations( + name=('Name', 'option'), + url=('URL', 'option'), + authentication=('Use authentication', 'flag', 'a'), + username=('Username', 'option'), + password=('Password', 'option'), + ) + def update_registry(self, id, name='', url='', authentication=False, + username='', password=''): + assert not authentication or (authentication and username and password) + registry_url = f'registries/{id}' + current = self.request(registry_url).json() + data = { + 'Name': name or current.get('Name'), + 'URL': url or current.get('URL'), + 'Authentication': authentication, + 'Username': username or current.get('Username'), + 'Password': password, + } + self.request( + registry_url, + self.METHOD_PUT, + data, + ) + @plac.annotations( printc=('Print response content', 'flag', 'p'), ) @@ -188,5 +215,7 @@ class PortainerCLI: plac.call(self.login, args) elif command == self.COMMAND_UPDATE_STACK: plac.call(self.update_stack, args) + elif command == self.COMMAND_UPDATE_REGISTRY: + plac.call(self.update_registry, args) elif command == self.COMMAND_REQUEST: plac.call(self.request, args)