Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_diff_append_records_list(self):
test_values = {
"id": 123,
"tagged_vlans": [
{
"id": 1,
"url": "http://localhost:8000/api/ipam/vlans/1/",
"vid": 1,
"name": "test1",
"display_name": "test1",
}
],
}
test_obj = Record(test_values, None, None)
test_obj.tagged_vlans.append(1)
test = test_obj._diff()
self.assertFalse(test)
def test_hash_diff(self):
endpoint1 = Mock()
endpoint1.name = "test-endpoint"
endpoint2 = Mock()
endpoint2.name = "test-endpoint"
test1 = Record({}, None, endpoint1)
test1.id = 1
test2 = Record({}, None, endpoint2)
test2.id = 2
self.assertNotEqual(hash(test1), hash(test2))
def test_serialize_tag_set(self):
test_values = {"id": 123, "tags": ["foo", "bar", "foo"]}
test = Record(test_values, None, None).serialize()
self.assertEqual(len(test["tags"]), 2)
def _lookup_ret_obj(self, name, model):
"""Loads unique Response objects.
This method loads a unique response object for an endpoint if
it exists. Otherwise return a generic `Record` object.
:arg str name: Endpoint name.
:arg obj model: The application model that
contains unique Record objects.
:Returns: Record (obj)
"""
if model:
name = name.title().replace("_", "")
ret = getattr(model, name, Record)
else:
ret = Record
return ret
or a nested_return. Finally, we check if it's a Record, if
so simply return a string. Order is important due to nested_return
being self-referential.
:arg list,optional return_fields: A list of fields to reference when
calling values on lookup.
"""
for i in return_fields or ["id", "value", "nested_return"]:
if isinstance(lookup, dict) and lookup.get(i):
return lookup[i]
else:
if hasattr(lookup, i):
return getattr(lookup, i)
if isinstance(lookup, Record):
return str(lookup)
else:
return lookup
class InterfaceConnections(Record):
def __str__(self):
return self.interface_a.name
class InterfaceConnection(Record):
def __str__(self):
return self.interface.name
class ConnectedEndpoint(Record):
device = Devices
class Interfaces(Record):
interface_connection = InterfaceConnection
connected_endpoint = ConnectedEndpoint
class RackReservations(Record):
def __str__(self):
return self.description
class VirtualChassis(Record):
def __str__(self):
return self.master.display_name
class RUs(Record):
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from pynetbox.core.response import Record, JsonField
class ConfigContexts(Record):
data = JsonField
class ObjectChanges(Record):
object_data = JsonField
def __str__(self):
return self.request_id
Returns a DetailEndpoint object that is the interface for
viewing response from the units endpoint.
:returns: :py:class:`.DetailEndpoint`
:Examples:
>>> rack = nb.dcim.racks.get(123)
>>> rack.units.list()
{"get_facts": {"interface_list": ["ge-0/0/0"]}}
"""
return RODetailEndpoint(self, "units", custom_return=RUs)
class Termination(Record):
def __str__(self):
# hacky check to see if we're a circuit termination to
# avoid another call to NetBox because of a non-existent attr
# in self.name
if "circuit" in str(self.url):
return self.circuit.cid
return self.name
device = Devices
circuit = Circuits
class Cables(Record):
def __str__(self):
return "{} <> {}".format(self.termination_a, self.termination_b)