From 6e079d6fa487a44c02ec9bb6a3f6179f0505f64c Mon Sep 17 00:00:00 2001 From: Alessandro Pilotti Date: Wed, 5 Sep 2018 20:37:46 +0300 Subject: [PATCH] Add enable_network_adapter Change-Id: Iae635a51c51adbfc6628a36f52520c5bdc0f0a72 Partially-Implements: blueprint json-network-config --- cloudbaseinit/osutils/base.py | 3 +++ cloudbaseinit/osutils/windows.py | 7 +++++++ cloudbaseinit/tests/osutils/test_windows.py | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/cloudbaseinit/osutils/base.py b/cloudbaseinit/osutils/base.py index ca26c5eb..6773380a 100644 --- a/cloudbaseinit/osutils/base.py +++ b/cloudbaseinit/osutils/base.py @@ -87,6 +87,9 @@ class BaseOSUtils(object): def rename_network_adapter(self, old_name, new_name): raise NotImplementedError() + def enable_network_adapter(self, name, enabled): + raise NotImplementedError() + def set_static_network_config(self, name, address, prefix_len_or_netmask, gateway, dnsnameservers): raise NotImplementedError() diff --git a/cloudbaseinit/osutils/windows.py b/cloudbaseinit/osutils/windows.py index ce2f6074..79cfff7f 100644 --- a/cloudbaseinit/osutils/windows.py +++ b/cloudbaseinit/osutils/windows.py @@ -888,6 +888,13 @@ class WindowsUtils(base.BaseOSUtils): operation_options = {u'custom_options': custom_options} dns_client.put(operation_options=operation_options) + def enable_network_adapter(self, name, enabled): + adapter = self._get_network_adapter(name) + if enabled: + adapter.Enable() + else: + adapter.Disable() + @staticmethod def _set_static_network_config(name, address, prefix_len, gateway): if netaddr.valid_ipv6(address): diff --git a/cloudbaseinit/tests/osutils/test_windows.py b/cloudbaseinit/tests/osutils/test_windows.py index cbc86696..76760645 100644 --- a/cloudbaseinit/tests/osutils/test_windows.py +++ b/cloudbaseinit/tests/osutils/test_windows.py @@ -590,6 +590,27 @@ class TestWindowsUtils(testutils.CloudbaseInitTestBase): def test_get_network_adapters_xp_2003(self): self._test_get_network_adapters(True) + @mock.patch('cloudbaseinit.osutils.windows.WindowsUtils' + '._get_network_adapter') + def _test_enable_network_adapter(self, mock_get_network_adapter, enabled): + self._winutils.enable_network_adapter( + mock.sentinel.adapter_name, enabled) + + mock_get_network_adapter.assert_called_once_with( + mock.sentinel.adapter_name) + + adapter = mock_get_network_adapter.return_value + if enabled: + adapter.Enable.assert_called_once_with() + else: + adapter.Disable.assert_called_once_with() + + def test_enable_network_adapter(self): + self._test_enable_network_adapter(enabled=True) + + def test_disable_network_adapter(self): + self._test_enable_network_adapter(enabled=False) + @mock.patch('cloudbaseinit.osutils.windows.WindowsUtils' '.check_os_version') def _test_set_static_network_config(self, mock_check_os_version,