This commit is contained in:
Jerome Petazzoni
2015-06-08 12:06:17 -07:00
parent 20ab553d4c
commit e2317e8db0

View File

@@ -11,6 +11,26 @@ ports = yaml.load(open("ports.yml"))
project_name = os.path.basename(os.path.realpath("."))
ambassadors = {}
service_instances = {}
# Generate container names for all instances
for service_name in stack:
service_instances[service_name] = []
n = 0
while True:
n += 1
try:
container_name = "{}_{}_{}".format(project_name, service_name, n)
subprocess.check_call(
[ "docker", "inspect", container_name ],
stderr=open("/dev/null","a")
)
service_instances[service_name].append(container_name)
except subprocess.CalledProcessError:
break
for service_name, service in stack.items():
extra_hosts = service.get("extra_hosts", {})
for link_name, link_addr in extra_hosts.items():
@@ -22,17 +42,22 @@ for service_name, service in stack.items():
continue
port = ports[link_name]
endpoints = []
n = 0
while True:
n += 1
try:
container_name = "{}_{}_{}".format(project_name, link_name, n)
endpoint = subprocess.check_output(
[ "docker", "port", container_name, str(port)],
stderr=open("/dev/null","a"))
endpoints.append(endpoint.strip())
except subprocess.CalledProcessError:
break
for container_name in service_instances[link_name]:
endpoint = subprocess.check_output(
["docker", "port", container_name, port]
)
endpoints.append(port)
print("Endpoints found for {}->{}:".format(service_name, link_name))
print(endpoints)
for container_name in service_instances[service_name]:
ambassador = {}
ambassador["image"] = "jpetazzo/hamba"
ambassador["net"] = "container:"+container_name
command = "{}:{}".format(link_addr, port)
for endpoint in endpoints:
command = command + " {} {}".format(endpoint.split(':'))
ambassador["command"] = command
n = len(ambassadors)
ambassadors["amba{}".format(n)] = ambassador
yaml.safe_dump(open("ambassadors.yml", "w"))