diff options
author | Chad Smith <chad.smith@canonical.com> | 2017-11-30 13:09:30 -0700 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2017-11-30 21:51:14 -0500 |
commit | 7acc9e68fafbbd7c56587aebe752ba6ba8c8a3db (patch) | |
tree | 521cc4ebca1fb7b66f6e1dba97e09b4861bb72d7 /tests/unittests | |
parent | 88368f9851b29dddb5a12e4b21868cbdef906c5c (diff) | |
download | vyos-cloud-init-7acc9e68fafbbd7c56587aebe752ba6ba8c8a3db.tar.gz vyos-cloud-init-7acc9e68fafbbd7c56587aebe752ba6ba8c8a3db.zip |
ec2: Fix sandboxed dhclient background process cleanup.
There is a race condition where our sandboxed dhclient properly writes a
lease file but has not yet written a pid file. If the sandbox temporary
directory is torn down before the dhclient subprocess writes a pidfile
DataSourceEc2Local gets a traceback and the instance will fallback to
DataSourceEc2 in the init-network stage. This wastes boot cycles we'd
rather not spend.
Fix handling of sandboxed dhclient to wait for both pidfile and leasefile
before proceding. If either file doesn't show in 5 seconds, log a warning
and return empty lease results {}.
LP: #1735331
Diffstat (limited to 'tests/unittests')
-rw-r--r-- | tests/unittests/test_datasource/test_azure.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py index 0a117771..7cb1812a 100644 --- a/tests/unittests/test_datasource/test_azure.py +++ b/tests/unittests/test_datasource/test_azure.py @@ -171,7 +171,6 @@ scbus-1 on xpt0 bus 0 self.apply_patches([ (dsaz, 'list_possible_azure_ds_devs', dsdevs), (dsaz, 'invoke_agent', _invoke_agent), - (dsaz, 'wait_for_files', _wait_for_files), (dsaz, 'pubkeys_from_crt_files', _pubkeys_from_crt_files), (dsaz, 'perform_hostname_bounce', mock.MagicMock()), (dsaz, 'get_hostname', mock.MagicMock()), @@ -179,6 +178,8 @@ scbus-1 on xpt0 bus 0 (dsaz, 'get_metadata_from_fabric', self.get_metadata_from_fabric), (dsaz.util, 'read_dmi_data', mock.MagicMock( side_effect=_dmi_mocks)), + (dsaz.util, 'wait_for_files', mock.MagicMock( + side_effect=_wait_for_files)), ]) dsrc = dsaz.DataSourceAzure( @@ -647,7 +648,7 @@ class TestAzureBounce(TestCase): self.patches.enter_context( mock.patch.object(dsaz, 'invoke_agent')) self.patches.enter_context( - mock.patch.object(dsaz, 'wait_for_files')) + mock.patch.object(dsaz.util, 'wait_for_files')) self.patches.enter_context( mock.patch.object(dsaz, 'list_possible_azure_ds_devs', mock.MagicMock(return_value=[]))) |