summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathew Inkson <627767+imathew@users.noreply.github.com>2022-01-11 14:23:20 +1100
committerGitHub <noreply@github.com>2022-01-11 14:23:20 +1100
commit142c976ca4b37fbae9ec44487d146b2a8319391c (patch)
tree47e707b09b83294e6a6fe6c853dac1738a178c7e
parentbb76e8d7f16355b140a60feafbbed67774788343 (diff)
downloadvyos-1x-142c976ca4b37fbae9ec44487d146b2a8319391c.tar.gz
vyos-1x-142c976ca4b37fbae9ec44487d146b2a8319391c.zip
containers: T2216: bugfix host networking on image upgrade
The bug was partially fixed with this commit: https://github.com/vyos/vyos-1x/commit/358f0b481d8620cad4954e3fe418054b9a8c3ecd The earlier commit introduced a startup retry (up to 10 times) to allow the OS to settle before the container is started. However, it only applies if host networking is NOT used. This change applies the same for containers where host networking is employed. Since the retry portion of the code (written in the earlier commit) is now referenced twice, it has been moved to its own function.
-rwxr-xr-xsrc/conf_mode/containers.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/conf_mode/containers.py b/src/conf_mode/containers.py
index 2e14e0b25..26c50cab6 100755
--- a/src/conf_mode/containers.py
+++ b/src/conf_mode/containers.py
@@ -298,7 +298,7 @@ def apply(container):
f'--memory {memory}m --memory-swap 0 --restart {restart} ' \
f'--name {name} {port} {volume} {env_opt}'
if 'allow_host_networks' in container_config:
- _cmd(f'{container_base_cmd} --net host {image}')
+ run(f'{container_base_cmd} --net host {image}')
else:
for network in container_config['network']:
ipparam = ''
@@ -306,19 +306,25 @@ def apply(container):
address = container_config['network'][network]['address']
ipparam = f'--ip {address}'
- counter = 0
- while True:
- if counter >= 10:
- break
- try:
- _cmd(f'{container_base_cmd} --net {network} {ipparam} {image}')
- break
- except:
- counter = counter +1
- sleep(0.5)
+ run(f'{container_base_cmd} --net {network} {ipparam} {image}')
return None
+def run(container_cmd):
+ counter = 0
+ while True:
+ if counter >= 10:
+ break
+ try:
+ _cmd(container_cmd)
+ break
+ except:
+ counter = counter +1
+ sleep(0.5)
+
+ return None
+
+
if __name__ == '__main__':
try:
c = get_config()