Skip to content
This repository was archived by the owner on Mar 4, 2026. It is now read-only.

Commit 061a418

Browse files
author
Yohann Leon
committed
Add hardware-reservations support
1 parent c38c1a8 commit 061a418

2 files changed

Lines changed: 77 additions & 0 deletions

File tree

packet/HardwareReservation.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# -*- coding: utf-8 -*-
2+
# SPDX-License-Identifier: LGPL-3.0-only
3+
4+
from .Plan import Plan
5+
from .Project import Project
6+
from .Device import Device
7+
8+
9+
class HardwareReservation:
10+
def __init__(self, data, manager):
11+
self.manager = manager
12+
13+
self.id = data.get("id")
14+
self.created_at = data.get("created_at")
15+
self.billing_cycle = data.get("billing_cycle")
16+
self.created_at = data.get("created_at")
17+
self.short_id = data.get("short_id")
18+
self.intervals = data.get("intervals")
19+
self.current_period = data.get("current_period")
20+
self.started_at = data.get("started_at")
21+
self.custom_rate = data.get("custom_rate")
22+
self.remove_at = data.get("remove_at")
23+
self.project = data.get("project")
24+
#self.facility = data.get("facility")
25+
self.device = data.get("device")
26+
self.provisionable = data.get("provisionable")
27+
self.spare = data.get("spare")
28+
self.need_of_service = data.get("need_of_service")
29+
self.plan = Plan(data.get("plan"))
30+
self.switch_uuid = data.get("switch_uuid")
31+
32+
try:
33+
project_data = self.manager.call_api(
34+
data["project"]["href"], type="GET"
35+
)
36+
self.project = Project(project_data, self.manager)
37+
except (KeyError, IndexError):
38+
self.attached_to = None
39+
40+
# endpoint is not working yet
41+
#try:
42+
# facility_data = self.manager.call_api(
43+
# data["facility"]["href"], type="GET"
44+
# )
45+
# self.project = Facility(facility_data, self.manager)
46+
#except (KeyError, IndexError):
47+
# self.attached_to = None
48+
49+
try:
50+
device_data = self.manager.call_api(
51+
data["device"]["href"], type="GET"
52+
)
53+
self.device = Device(device_data, self.manager)
54+
except (KeyError, IndexError):
55+
self.attached_to = None
56+
57+
def __str__(self):
58+
return "%s" % self.id
59+
60+
def __repr__(self):
61+
return "{}: {}".format(self.__class__.__name__, self.id)
62+
63+
def __getitem__(self, item):
64+
return getattr(self, item)

packet/Manager.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .BGPConfig import BGPConfig
1515
from .BGPSession import BGPSession
1616
from .IPAddress import IPAddress
17+
from .HardwareReservation import HardwareReservation
1718
from .Snapshot import Snapshot
1819
from .Organization import Organization
1920
from .Email import Email
@@ -73,6 +74,18 @@ def create_project(self, name):
7374
data = self.call_api("projects", type="POST", params=params)
7475
return Project(data, self)
7576

77+
def list_hardware_reservations(self, project_id, params={}):
78+
data = self.call_api("projects/%s/hardware-reservations" % project_id, params=params)
79+
hardware_reservations = list()
80+
for jsoned in data["hardware_reservations"]:
81+
hardware_reservation = HardwareReservation(jsoned, self)
82+
hardware_reservations.append(hardware_reservation)
83+
return hardware_reservations
84+
85+
def get_hardware_reservation(self, hardware_reservation_id):
86+
data = self.call_api("hardware-reservations/%s" % hardware_reservation_id)
87+
return HardwareReservation(data, self)
88+
7689
def list_devices(self, project_id, params={}):
7790
data = self.call_api("projects/%s/devices" % project_id, params=params)
7891
devices = list()

0 commit comments

Comments
 (0)