Fixes get_network_adapters issue on Windows 2003
The "PhysicalAdapter" property of the WMI class "Win32_NetworkAdapter" has been introduced with Windows Vista / 2008. This patch avoids using the property in WQL queries based on the current os.
This commit is contained in:
parent
889a5f8e8c
commit
075a157927
@ -341,9 +341,13 @@ class WindowsUtils(base.BaseOSUtils):
|
||||
l = []
|
||||
conn = wmi.WMI(moniker='//./root/cimv2')
|
||||
# Get Ethernet adapters only
|
||||
q = conn.query('SELECT * FROM Win32_NetworkAdapter WHERE '
|
||||
'AdapterTypeId = 0 AND PhysicalAdapter = True AND '
|
||||
'MACAddress IS NOT NULL')
|
||||
wql = ('SELECT * FROM Win32_NetworkAdapter WHERE '
|
||||
'AdapterTypeId = 0 AND MACAddress IS NOT NULL')
|
||||
|
||||
if self.check_os_version(6, 0):
|
||||
wql += ' AND PhysicalAdapter = True'
|
||||
|
||||
q = conn.query(wql)
|
||||
for r in q:
|
||||
l.append(r.Name)
|
||||
return l
|
||||
|
@ -444,17 +444,33 @@ class WindowsUtilsTest(unittest.TestCase):
|
||||
def test_get_user_home_fail(self):
|
||||
self._test_get_user_home(user_sid=None)
|
||||
|
||||
@mock.patch('cloudbaseinit.osutils.windows.WindowsUtils'
|
||||
'.check_os_version')
|
||||
@mock.patch('wmi.WMI')
|
||||
def test_get_network_adapters(self, mock_WMI):
|
||||
def _test_get_network_adapters(self, is_xp_2003, mock_WMI,
|
||||
mock_check_os_version):
|
||||
mock_WMI.return_value = self._conn
|
||||
mock_response = mock.MagicMock()
|
||||
self._conn.query.return_value = [mock_response]
|
||||
|
||||
mock_check_os_version.return_value = not is_xp_2003
|
||||
|
||||
wql = ('SELECT * FROM Win32_NetworkAdapter WHERE '
|
||||
'AdapterTypeId = 0 AND MACAddress IS NOT NULL')
|
||||
|
||||
if not is_xp_2003:
|
||||
wql += ' AND PhysicalAdapter = True'
|
||||
|
||||
response = self._winutils.get_network_adapters()
|
||||
self._conn.query.assert_called_with(
|
||||
'SELECT * FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0 AND '
|
||||
'PhysicalAdapter = True AND MACAddress IS NOT NULL')
|
||||
self._conn.query.assert_called_with(wql)
|
||||
self.assertEqual(response, [mock_response.Name])
|
||||
|
||||
def test_get_network_adapters(self):
|
||||
self._test_get_network_adapters(False)
|
||||
|
||||
def test_get_network_adapters_xp_2003(self):
|
||||
self._test_get_network_adapters(True)
|
||||
|
||||
@mock.patch('cloudbaseinit.osutils.windows.WindowsUtils'
|
||||
'._sanitize_wmi_input')
|
||||
def _test_set_static_network_config(self, mock_sanitize_wmi_input,
|
||||
|
Loading…
x
Reference in New Issue
Block a user