Fix issue on index out of error (#54)

* Add gather info about all networks in the system.

* Only generate host networks if all info is required.

* Fix issue getting network information.

Co-authored-by: Juan Biondi <juan@payslip.com>
This commit is contained in:
Juan Biondi
2022-11-07 21:00:39 +01:00
committed by GitHub
parent dea3d848e8
commit 0aa4522143

View File

@@ -8,6 +8,8 @@ from collections import OrderedDict
import docker import docker
import pyaml import pyaml
IGNORE_VALUES = [None, "", [], "null", {}, "default", 0, ",", "no"]
def list_container_names(): def list_container_names():
c = docker.from_env() c = docker.from_env()
@@ -210,9 +212,11 @@ def generate(cname, createvolumes=False):
networks = {} networks = {}
if values["networks"] == set(): if values["networks"] == set():
del values["networks"] del values["networks"]
assumed_default_network = list(cattrs.get("NetworkSettings", {}).get("Networks", {}).keys())[0]
values["network_mode"] = assumed_default_network if len(cattrs.get("NetworkSettings", {}).get("Networks", {}).keys()) > 0:
networks = None assumed_default_network = list(cattrs.get("NetworkSettings", {}).get("Networks", {}).keys())[0]
values["network_mode"] = assumed_default_network
networks = None
else: else:
networklist = c.networks.list() networklist = c.networks.list()
for network in networklist: for network in networklist:
@@ -268,17 +272,7 @@ def generate(cname, createvolumes=False):
] ]
# If bound ports found, don't use the 'expose' value. # If bound ports found, don't use the 'expose' value.
if ( if ports_value not in IGNORE_VALUES:
(ports_value != None)
and (ports_value != "")
and (ports_value != [])
and (ports_value != "null")
and (ports_value != {})
and (ports_value != "default")
and (ports_value != 0)
and (ports_value != ",")
and (ports_value != "no")
):
for index, port in enumerate(ports_value): for index, port in enumerate(ports_value):
if port[0] == ":": if port[0] == ":":
ports_value[index] = port[1:] ports_value[index] = port[1:]
@@ -294,17 +288,7 @@ def generate(cname, createvolumes=False):
# Iterate through values to finish building yaml dict. # Iterate through values to finish building yaml dict.
for key in values: for key in values:
value = values[key] value = values[key]
if ( if value not in IGNORE_VALUES:
(value != None)
and (value != "")
and (value != [])
and (value != "null")
and (value != {})
and (value != "default")
and (value != 0)
and (value != ",")
and (value != "no")
):
ct[key] = value ct[key] = value
return cfile, networks, volumes return cfile, networks, volumes