Refactor container retrieval / name parsing

This commit is contained in:
Aanand Prasad 2013-12-18 14:54:28 +00:00
parent 3458dd2fad
commit f0df5c6079

View File

@ -23,7 +23,13 @@ class Service(object):
@property
def containers(self):
return [c for c in self.client.containers(all=True) if parse_name(get_container_name(c))[0] == self.name]
return list(self.get_containers(all=True))
def get_containers(self, all):
for container in self.client.containers(all=all):
name = get_container_name(container)
if is_valid_name(name) and parse_name(name)[0] == self.name:
yield container
def start(self):
if len(self.containers) == 0:
@ -136,18 +142,20 @@ class Service(object):
return image_id
name_regex = '^(.+)_(\d+)$'
def make_name(prefix, number):
return '%s_%s' % (prefix, number)
def is_valid_name(name):
return (re.match(name_regex, name) is not None)
def parse_name(name):
match = re.match('^(.+)_(\d+)$', name)
if match is None:
return (None, None)
match = re.match(name_regex, name)
(service_name, suffix) = match.groups()
return (service_name, int(suffix))