Ejemplo n.º 1
0
 def remove(self):
     """remove a stopped container"""
     dclient.remove_container(self.inspect['Id'], v=True)
     try:
         self.inspect = dclient.inspect_container(self.inspect['Id'])
         return False
     except docker.errors.NotFound:
         return True
Ejemplo n.º 2
0
 def __init__(self, name, service):
     Container.__init__(self, service)
     self.exec_ids = []
     self.logger = logging.getLogger('control.container.CreatedContainer')
     if not service['name']:
         raise ContainerDoesNotExist(service.service)
     try:
         self.inspect = dclient.inspect_container(name)
     except docker.errors.NotFound as e:
         self.logger.debug(e)
         raise ContainerDoesNotExist(name)
Ejemplo n.º 3
0
 def start(self):
     """Start a created container"""
     try:
         dclient.start(self.inspect['Id'])
     except docker.errors.NotFound as e:
         if e.explanation.decode('utf-8') == 'get: volume not found':
             raise InvalidVolumeName('volume not found')
         raise
     except docker.errors.APIError as e:
         server_error = e.explanation.decode('utf-8')
         if re.fullmatch('mkdir .+: operation not permitted', server_error):
             volume = self.service.find_volume(
                 server_error.split(':')[0][6:])
             raise ContainerException(
                 'Invalid Host Binding in {}: {}'.format(
                     self.service['name'],
                     volume if len(volume) > 1 else volume[0]))
     else:
         self.inspect = dclient.inspect_container(self.inspect['Id'])
     return self.inspect['State']['Running']
Ejemplo n.º 4
0
 def kill(self):
     """kill a running container"""
     dclient.kill(self.inspect['Id'])
     self.inspect = dclient.inspect_container(self.inspect['Id'])
     return not self.inspect['State']['Running']
Ejemplo n.º 5
0
 def stop(self):
     """stop a running container"""
     dclient.stop(self.inspect['Id'], timeout=self.service.expected_timeout)
     self.inspect = dclient.inspect_container(self.inspect['Id'])
     return not self.inspect['State']['Running']
Ejemplo n.º 6
0
 def check(self):
     """
     Update the inspect dict, even though there shouldn't have been a state
     transition.
     """
     self.inspect = dclient.inspect_container(self.inspect['Id'])