Skip to content

Commit 82e6034

Browse files
authored
Retrieve all objects from list_devices endpoint (#53)
* added support to retrieve all devices regardless of pagination * cleanup of Manager.py and added TODO test * fmt and lint
1 parent 03165b2 commit 82e6034

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

packet/Manager.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,25 @@ def list_devices(self, project_id, params={}):
7272
devices.append(device)
7373
return devices
7474

75+
def list_all_devices(self, project_id):
76+
raw_devices = list()
77+
page = 1
78+
while True:
79+
paginate = {"page": page}
80+
data = self.call_api("projects/%s/devices" % project_id, params=paginate)
81+
next = self.meta["next"]
82+
raw_devices.extend(data["devices"])
83+
if next is None:
84+
break
85+
else:
86+
page += 1
87+
88+
all_devices = list()
89+
for raw_device in raw_devices:
90+
device = Device(raw_device, self)
91+
all_devices.append(device)
92+
return all_devices
93+
7594
def create_device(
7695
self,
7796
project_id,

test/test_packet.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ def test_list_devices(self):
7272
repr(device)
7373
self.assertIsInstance(device, packet.Device)
7474

75+
# TODO figure out how to properly handle this test case
76+
# def test_list_all_devices(self):
77+
# devices = self.manager.list_all_devices("438659f0")
78+
# for device in devices:
79+
# str(device)
80+
# repr(device)
81+
# self.assertIsInstance(device, packet.Device)
82+
7583
def test_create_device(self):
7684
device = self.manager.create_device(
7785
"438659f0", "hostname", "baremetal_0", "ewr1", "ubuntu_14_04"

0 commit comments

Comments
 (0)