From cddc6da95404a60527f10c7e2f8e81c69924e331 Mon Sep 17 00:00:00 2001 From: Adrian Vladu Date: Wed, 18 Sep 2013 15:56:48 +0200 Subject: [PATCH] Filter network adapters to require a MAC address If Windows has multiple network adapters with the same name, we filter out the adapters that do not have a MAC address. Added SQl-like syntax --- cloudbaseinit/osutils/windows.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cloudbaseinit/osutils/windows.py b/cloudbaseinit/osutils/windows.py index 88517891..302f701a 100644 --- a/cloudbaseinit/osutils/windows.py +++ b/cloudbaseinit/osutils/windows.py @@ -227,7 +227,8 @@ class WindowsUtils(base.BaseOSUtils): conn = wmi.WMI(moniker='//./root/cimv2') # Get Ethernet adapters only q = conn.query('SELECT * FROM Win32_NetworkAdapter WHERE ' - 'AdapterTypeId = 0 AND PhysicalAdapter = True') + 'AdapterTypeId = 0 AND PhysicalAdapter = True AND ' + 'MACAddress IS NOT NULL') for r in q: l.append(r.Name) return l @@ -237,8 +238,9 @@ class WindowsUtils(base.BaseOSUtils): conn = wmi.WMI(moniker='//./root/cimv2') adapter_name_san = self._sanitize_wmi_input(adapter_name) - q = conn.query('SELECT * FROM Win32_NetworkAdapter ' - 'where Name = \'%(adapter_name_san)s\'' % locals()) + q = conn.query('SELECT * FROM Win32_NetworkAdapter WHERE ' + 'MACAddress IS NOT NULL AND ' + 'Name = \'%(adapter_name_san)s\'' % locals()) if not len(q): raise Exception("Network adapter not found")