Skip to content

created new object that acts as list but also retains metadata #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -87,3 +87,6 @@ ENV/

# Rope project settings
.ropeproject

# DS_Store
.DS_Store
15 changes: 8 additions & 7 deletions packet/Manager.py
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
from .Facility import Facility
from .OperatingSystem import OperatingSystem
from .Volume import Volume
from .MetadataList import MetadataList


class Manager(BaseAPI):
@@ -24,23 +25,23 @@ def get_user(self):

def list_facilities(self, params={}):
data = self.call_api("facilities", params=params)
facilities = list()
facilities = MetadataList(list(), self.meta)
for jsoned in data["facilities"]:
facility = Facility(jsoned)
facilities.append(facility)
return facilities

def list_plans(self, params={}):
data = self.call_api("plans", params=params)
plans = list()
plans = MetadataList(list(), self.meta)
for jsoned in data["plans"]:
plan = Plan(jsoned)
plans.append(plan)
return plans

def list_operating_systems(self, params={}):
data = self.call_api("operating-systems", params=params)
oss = list()
oss = MetadataList(list(), self.meta)
for jsoned in data["operating_systems"]:
os = OperatingSystem(jsoned)
oss.append(os)
@@ -49,7 +50,7 @@ def list_operating_systems(self, params={}):
def list_projects(self, params={}):
data = self.call_api("projects", params=params)
self.total = data["meta"]["total"]
projects = list()
projects = MetadataList(list(), self.meta)
for jsoned in data["projects"]:
project = Project(jsoned, self)
projects.append(project)
@@ -66,7 +67,7 @@ def create_project(self, name):

def list_devices(self, project_id, params={}):
data = self.call_api("projects/%s/devices" % project_id, params=params)
devices = list()
devices = MetadataList(list(), self.meta)
for jsoned in data["devices"]:
device = Device(jsoned, self)
devices.append(device)
@@ -129,7 +130,7 @@ def get_device(self, device_id):

def list_ssh_keys(self, params={}):
data = self.call_api("ssh-keys", params=params)
ssh_keys = list()
ssh_keys = MetadataList(list(), self.meta)
for jsoned in data["ssh_keys"]:
ssh_key = SSHKey(jsoned, self)
ssh_keys.append(ssh_key)
@@ -147,7 +148,7 @@ def create_ssh_key(self, label, public_key):
def list_volumes(self, project_id, params={}):
params["include"] = "facility,attachments.device"
data = self.call_api("projects/%s/storage" % project_id, params=params)
volumes = list()
volumes = MetadataList(list(), self.meta)
for jsoned in data["volumes"]:
volume = Volume(jsoned, self)
volumes.append(volume)
8 changes: 8 additions & 0 deletions packet/MetadataList.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# SPDX-License-Identifier: LGPL-3.0-only


class MetadataList(list):
def __init__(self, data, metadata):
list.__init__(self, data)
self.meta = metadata
1 change: 1 addition & 0 deletions packet/__init__.py
Original file line number Diff line number Diff line change
@@ -18,3 +18,4 @@
from .Volume import Volume # noqa
from .Manager import Manager # noqa
from .baseapi import Error # noqa
from .MetadataList import MetadataList # noqa