Skip to content

Commit 5cc0897

Browse files
author
Zach Moody
authored
Merge pull request #238 from minitriga/elevation
Rack Elevation Endpoint
2 parents 0f745d0 + ec6fe98 commit 5cc0897

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

pynetbox/models/dcim.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,23 @@ def units(self):
119119
"""
120120
return RODetailEndpoint(self, "units", custom_return=RUs)
121121

122+
@property
123+
def elevation(self):
124+
""" Represents the ``elevation`` detail endpoint.
125+
126+
Returns a DetailEndpoint object that is the interface for
127+
viewing response from the elevation endpoint updated in Netbox version 2.8.
128+
129+
:returns: :py:class:`.DetailEndpoint`
130+
131+
:Examples:
132+
133+
>>> rack = nb.dcim.racks.get(123)
134+
>>> rack.elevation.list()
135+
{"get_facts": {"interface_list": ["ge-0/0/0"]}}
136+
137+
"""
138+
return RODetailEndpoint(self, "elevation", custom_return=RUs)
122139

123140
class Termination(Record):
124141
def __str__(self):

tests/test_dcim.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,28 @@ def test_get_units(self, mock):
401401
isinstance(ret[0].device, pynetbox.models.dcim.Devices)
402402
)
403403

404+
@patch(
405+
'pynetbox.core.query.requests.sessions.Session.get',
406+
side_effect=[
407+
Response(fixture='dcim/rack.json'),
408+
Response(fixture='dcim/rack_u.json'),
409+
]
410+
)
411+
def test_get_elevation(self, mock):
412+
test = nb.racks.get(1)
413+
ret = test.elevation.list()
414+
mock.assert_called_with(
415+
'http://localhost:8000/api/dcim/racks/1/elevation/',
416+
params={},
417+
json=None,
418+
headers=HEADERS,
419+
verify=True,
420+
)
421+
self.assertTrue(ret)
422+
self.assertTrue(
423+
isinstance(ret[0].device, pynetbox.models.dcim.Devices)
424+
)
425+
404426

405427
class RackRoleTestCase(Generic.Tests):
406428
name = 'rack_roles'

0 commit comments

Comments
 (0)