summaryrefslogtreecommitdiff
path: root/docker/models/plugins.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/models/plugins.py')
-rw-r--r--docker/models/plugins.py25
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