correctly implement volumes_from property
The Docker plugin incorrectly implements the 'volumes_from' option: - The property is marked as a string when it should be a list, and - The property needs to be passed to start_container rather than create_container. Change-Id: I617a4d29a9edbb45d80c7b8abb8f87eeaf795a8b closes-bug: #1364041 closes-bug: #1364039
This commit is contained in:
parent
540249824f
commit
03638b3e73
@ -138,7 +138,7 @@ class DockerContainer(resource.Resource):
|
|||||||
default={}
|
default={}
|
||||||
),
|
),
|
||||||
VOLUMES_FROM: properties.Schema(
|
VOLUMES_FROM: properties.Schema(
|
||||||
properties.Schema.STRING,
|
properties.Schema.LIST,
|
||||||
_('Mount all specified volumes.'),
|
_('Mount all specified volumes.'),
|
||||||
default=''
|
default=''
|
||||||
),
|
),
|
||||||
@ -246,7 +246,7 @@ class DockerContainer(resource.Resource):
|
|||||||
return logs.split('\n').pop()
|
return logs.split('\n').pop()
|
||||||
|
|
||||||
def handle_create(self):
|
def handle_create(self):
|
||||||
args = {
|
create_args = {
|
||||||
'image': self.properties[self.IMAGE],
|
'image': self.properties[self.IMAGE],
|
||||||
'command': self.properties[self.CMD],
|
'command': self.properties[self.CMD],
|
||||||
'hostname': self.properties[self.HOSTNAME],
|
'hostname': self.properties[self.HOSTNAME],
|
||||||
@ -258,26 +258,28 @@ class DockerContainer(resource.Resource):
|
|||||||
'environment': self.properties[self.ENV],
|
'environment': self.properties[self.ENV],
|
||||||
'dns': self.properties[self.DNS],
|
'dns': self.properties[self.DNS],
|
||||||
'volumes': self.properties[self.VOLUMES],
|
'volumes': self.properties[self.VOLUMES],
|
||||||
'volumes_from': self.properties[self.VOLUMES_FROM],
|
|
||||||
'name': self.properties[self.NAME]
|
'name': self.properties[self.NAME]
|
||||||
}
|
}
|
||||||
client = self.get_client()
|
client = self.get_client()
|
||||||
client.pull(self.properties[self.IMAGE])
|
client.pull(self.properties[self.IMAGE])
|
||||||
result = client.create_container(**args)
|
result = client.create_container(**create_args)
|
||||||
container_id = result['Id']
|
container_id = result['Id']
|
||||||
self.resource_id_set(container_id)
|
self.resource_id_set(container_id)
|
||||||
|
|
||||||
kwargs = {}
|
start_args = {}
|
||||||
if self.properties[self.PRIVILEGED]:
|
|
||||||
kwargs[self.PRIVILEGED] = True
|
|
||||||
if self.properties[self.VOLUMES]:
|
|
||||||
kwargs['binds'] = self.properties[self.VOLUMES]
|
|
||||||
if self.properties[self.PORT_BINDINGS]:
|
|
||||||
kwargs['port_bindings'] = self.properties[self.PORT_BINDINGS]
|
|
||||||
if self.properties[self.LINKS]:
|
|
||||||
kwargs['links'] = self.properties[self.LINKS]
|
|
||||||
|
|
||||||
client.start(container_id, **kwargs)
|
if self.properties[self.PRIVILEGED]:
|
||||||
|
start_args[self.PRIVILEGED] = True
|
||||||
|
if self.properties[self.VOLUMES]:
|
||||||
|
start_args['binds'] = self.properties[self.VOLUMES]
|
||||||
|
if self.properties[self.VOLUMES_FROM]:
|
||||||
|
start_args['volumes_from'] = self.properties[self.VOLUMES_FROM]
|
||||||
|
if self.properties[self.PORT_BINDINGS]:
|
||||||
|
start_args['port_bindings'] = self.properties[self.PORT_BINDINGS]
|
||||||
|
if self.properties[self.LINKS]:
|
||||||
|
start_args['links'] = self.properties[self.LINKS]
|
||||||
|
|
||||||
|
client.start(container_id, **start_args)
|
||||||
return container_id
|
return container_id
|
||||||
|
|
||||||
def _get_container_status(self, container_id):
|
def _get_container_status(self, container_id):
|
||||||
|
Loading…
Reference in New Issue
Block a user