diff options
author | Mathew Inkson <627767+imathew@users.noreply.github.com> | 2022-01-11 14:23:20 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-11 14:23:20 +1100 |
commit | 142c976ca4b37fbae9ec44487d146b2a8319391c (patch) | |
tree | 47e707b09b83294e6a6fe6c853dac1738a178c7e /src/conf_mode | |
parent | bb76e8d7f16355b140a60feafbbed67774788343 (diff) | |
download | vyos-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.
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/containers.py | 28 |
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() |