diff options
Diffstat (limited to 'docker/models/plugins.py')
| -rw-r--r-- | docker/models/plugins.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/docker/models/plugins.py b/docker/models/plugins.py index 8b6ede9..6cdf01c 100644 --- a/docker/models/plugins.py +++ b/docker/models/plugins.py @@ -1,3 +1,4 @@ +from .. import errors from .resource import Collection, Model @@ -96,6 +97,30 @@ class Plugin(Model): """ return self.client.api.remove_plugin(self.name, force=force) + def upgrade(self, remote=None): + """ + Upgrade the plugin. + + Args: + remote (string): Remote reference to upgrade to. The + ``:latest`` tag is optional and is the default if omitted. + Default: this plugin's name. + + Returns: + A generator streaming the decoded API logs + """ + if self.enabled: + raise errors.DockerError( + 'Plugin must be disabled before upgrading.' + ) + + if remote is None: + remote = self.name + privileges = self.client.api.plugin_privileges(remote) + for d in self.client.api.upgrade_plugin(self.name, remote, privileges): + yield d + self._reload() + class PluginCollection(Collection): model = Plugin |
