浏览代码

Don't allow boolean values for one_off in Project methods

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 9 年之前
父节点
当前提交
1bc9469674
共有 1 个文件被更改,包括 9 次插入5 次删除
  1. 9 5
      compose/project.py

+ 9 - 5
compose/project.py

@@ -46,8 +46,12 @@ class OneOffFilter(enum.Enum):
     def update_labels(cls, value, labels):
         if value == cls.only:
             labels.append('{0}={1}'.format(LABEL_ONE_OFF, "True"))
-        elif value == cls.exclude or value is False:
+        elif value == cls.exclude:
             labels.append('{0}={1}'.format(LABEL_ONE_OFF, "False"))
+        elif value == cls.include:
+            pass
+        else:
+            raise ValueError("Invalid value for one_off: {}".format(repr(value)))
 
 
 class Project(object):
@@ -61,7 +65,7 @@ class Project(object):
         self.volumes = volumes or ProjectVolumes({})
         self.networks = networks or ProjectNetworks({}, False)
 
-    def labels(self, one_off=False):
+    def labels(self, one_off=OneOffFilter.exclude):
         labels = ['{0}={1}'.format(LABEL_PROJECT, self.name)]
 
         OneOffFilter.update_labels(one_off, labels)
@@ -264,7 +268,7 @@ class Project(object):
     def kill(self, service_names=None, **options):
         parallel.parallel_kill(self.containers(service_names), options)
 
-    def remove_stopped(self, service_names=None, one_off=False, **options):
+    def remove_stopped(self, service_names=None, one_off=OneOffFilter.exclude, **options):
         parallel.parallel_remove(self.containers(
             service_names, stopped=True, one_off=one_off
         ), options)
@@ -429,7 +433,7 @@ class Project(object):
         for service in self.get_services(service_names, include_deps=False):
             service.pull(ignore_pull_failures)
 
-    def _labeled_containers(self, stopped=False, one_off=False):
+    def _labeled_containers(self, stopped=False, one_off=OneOffFilter.exclude):
         return list(filter(None, [
             Container.from_ps(self.client, container)
             for container in self.client.containers(
@@ -437,7 +441,7 @@ class Project(object):
                 filters={'label': self.labels(one_off=one_off)})])
         )
 
-    def containers(self, service_names=None, stopped=False, one_off=False):
+    def containers(self, service_names=None, stopped=False, one_off=OneOffFilter.exclude):
         if service_names:
             self.validate_service_names(service_names)
         else: