Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions blockade/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ def get_instance(n, idx=None):
neutral=values.get('neutral', False),
holy=values.get('holy', False),
container_name=with_index(values.get('container_name'), idx),
cap_add=values.get('cap_add'))
cap_add=values.get('cap_add'),
ipv4_address=values.get('ipv4_address'),
docker_network=values.get('docker_network'))

if count == 1:
yield get_instance(name)
Expand All @@ -72,7 +74,7 @@ def get_instance(n, idx=None):
def __init__(self, name, image, command=None, links=None, volumes=None,
publish_ports=None, expose_ports=None, environment=None,
hostname=None, dns=None, start_delay=0, neutral=False,
holy=False, container_name=None, cap_add=None):
holy=False, container_name=None, cap_add=None, ipv4_address=None, docker_network=None):
self.name = name
self.hostname = hostname
self.dns = dns
Expand All @@ -85,6 +87,8 @@ def __init__(self, name, image, command=None, links=None, volumes=None,
self.holy = holy
self.container_name = container_name
self.cap_add = cap_add
self.ipv4_address = ipv4_address
self.docker_network = docker_network

if neutral and holy:
raise BlockadeConfigError("container must not be 'neutral' and 'holy' at the same time")
Expand Down Expand Up @@ -124,6 +128,7 @@ def from_dict(values):
Instantiate a BlockadeConfig instance based on
a given dictionary of configuration values
'''

try:
containers = values['containers']
parsed_containers = {}
Expand Down
12 changes: 11 additions & 1 deletion blockade/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,15 @@ def _start_container(self, container, force=False):

def create_container():
# try to create container
if container.docker_network and container.ipv4_address:
container.networking_config = self.docker_client.create_networking_config({
container.docker_network: self.docker_client.create_endpoint_config(
ipv4_address=container.ipv4_address
)
})
else:
container.networking_config = None

response = self.docker_client.create_container(
container.image,
command=container.command,
Expand All @@ -167,7 +176,8 @@ def create_container():
hostname=container.hostname,
environment=container.environment,
host_config=host_config,
labels={"blockade.id": self.state.blockade_id})
labels={"blockade.id": self.state.blockade_id},
networking_config=container.networking_config)
return response['Id']

try:
Expand Down