diff --git a/dracclient/tests/test_wsman.py b/dracclient/tests/test_wsman.py
index 09f7701..5f008f9 100644
--- a/dracclient/tests/test_wsman.py
+++ b/dracclient/tests/test_wsman.py
@@ -68,7 +68,7 @@ class ClientTestCase(base.BaseTest):
foo_resource_uri = 'http://FooResource'
bar_resource_uri = 'http://BarResource'
self.assertEqual(
- 3, len(resp_xml.findall('.//{%s}FooResource' % foo_resource_uri)))
+ 4, len(resp_xml.findall('.//{%s}FooResource' % foo_resource_uri)))
self.assertEqual(
1, len(resp_xml.findall('.//{%s}BazResource' % bar_resource_uri)))
self.assertEqual(
diff --git a/dracclient/tests/wsman_mocks/wsman-enum_context-1.xml b/dracclient/tests/wsman_mocks/wsman-enum_context-1.xml
index e9b265b..002cb69 100644
--- a/dracclient/tests/wsman_mocks/wsman-enum_context-1.xml
+++ b/dracclient/tests/wsman_mocks/wsman-enum_context-1.xml
@@ -1,6 +1,8 @@
+ xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
+ xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"
+ xmlns:n1="http://FooResource">
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
http://schemas.xmlsoap.org/ws/2004/09/enumeration/EnumerateResponse
@@ -10,6 +12,11 @@
enum-context-uuid
+
+
+ 1
+
+
diff --git a/dracclient/tests/wsman_mocks/wsman-enum_context-2.xml b/dracclient/tests/wsman_mocks/wsman-enum_context-2.xml
index cab5e11..a2ae36c 100644
--- a/dracclient/tests/wsman_mocks/wsman-enum_context-2.xml
+++ b/dracclient/tests/wsman_mocks/wsman-enum_context-2.xml
@@ -14,7 +14,7 @@
enum-context-uuid
- 1
+ 2
diff --git a/dracclient/tests/wsman_mocks/wsman-enum_context-3.xml b/dracclient/tests/wsman_mocks/wsman-enum_context-3.xml
index 38190c7..1516a9a 100644
--- a/dracclient/tests/wsman_mocks/wsman-enum_context-3.xml
+++ b/dracclient/tests/wsman_mocks/wsman-enum_context-3.xml
@@ -13,10 +13,10 @@
enum-context-uuid
- 2
+ 3
- 3
+ 4
diff --git a/dracclient/tests/wsman_mocks/wsman-enum_context-4.xml b/dracclient/tests/wsman_mocks/wsman-enum_context-4.xml
index 15e0490..81ddbf5 100644
--- a/dracclient/tests/wsman_mocks/wsman-enum_context-4.xml
+++ b/dracclient/tests/wsman_mocks/wsman-enum_context-4.xml
@@ -12,7 +12,7 @@
- 4
+ 5
diff --git a/dracclient/wsman.py b/dracclient/wsman.py
index 737df72..cd94f02 100644
--- a/dracclient/wsman.py
+++ b/dracclient/wsman.py
@@ -105,21 +105,23 @@ class Client(object):
resp_xml = ElementTree.fromstring(resp.content)
if auto_pull:
- find_items_query = './/{%s}Items' % NS_WSMAN_ENUM
+ # The first response returns ""
+ find_items_wsman_query = './/{%s}Items' % NS_WSMAN
+
+ # Successive pulls return ""
+ find_items_enum_query = './/{%s}Items' % NS_WSMAN_ENUM
+
full_resp_xml = resp_xml
+ items_xml = full_resp_xml.find(find_items_wsman_query)
context = self._enum_context(full_resp_xml)
while context is not None:
resp_xml = self.pull(resource_uri, context, max_elems)
context = self._enum_context(resp_xml)
- items_xml = full_resp_xml.find(find_items_query)
- if items_xml is not None:
- # merge enumeration items
- for item in resp_xml.find(find_items_query):
- items_xml.append(item)
- else:
- full_resp_xml = resp_xml
+ # Merge in next batch of enumeration items
+ for item in resp_xml.find(find_items_enum_query):
+ items_xml.append(item)
# remove enumeration context because items are already merged
enum_context_elem = full_resp_xml.find('.//{%s}EnumerationContext'