def test_update_clean_tags_with_incoming_tags(netbox_api_base): vlan = NetboxVlanPre29(vid=100, site_name="HQ", remote_id=30) netbox_api_base.add(vlan) netbox_api_base.add( NetboxDevice(name="dev1", site_name="HQ", remote_id=32, device_tag_id=12)) netbox_api_base.add( NetboxDevice(name="dev2", site_name="HQ", remote_id=33, device_tag_id=13)) api = pynetbox.api(url="http://mock", token="1234567890") data = yaml.safe_load(open(f"{ROOT}/{FIXTURE_28}/vlan_101_tags_01.json")) pnb = pynetbox.core.response.Record(values=data, api=api, endpoint=1) params = vlan.translate_attrs_for_netbox({ "name": "VOICE", "associated_devices": ["dev1", "dev2"] }) clean_params = vlan.update_clean_tags(nb_params=params, obj=pnb) assert "tags" in clean_params assert sorted(clean_params["tags"]) == [ "device=dev1", "device=dev2", "device=devA", "device=devB", "notadevice" ]
def test_vlan_create_from_pynetbox_with_tags(netbox_api_base): api = pynetbox.api(url="http://mock", token="1234567890") data = yaml.safe_load(open(f"{ROOT}/{FIXTURE_28}/vlan_101_tags_01.json")) pnb = pynetbox.core.response.Record(values=data, api=api, endpoint=1) netbox_api_base.add( NetboxDevice(name="devA", site_name="nyc", remote_id=30)) item = NetboxVlanPre29.create_from_pynetbox(diffsync=netbox_api_base, obj=pnb, site_name="nyc") assert isinstance(item, NetboxVlanPre29) is True assert item.remote_id == 1 assert item.vid == 101 assert item.associated_devices == ["devA"] # Try again with one additional device in the inventory netbox_api_base.add( NetboxDevice(name="devB", site_name="nyc", remote_id=31)) item = NetboxVlanPre29.create_from_pynetbox(diffsync=netbox_api_base, obj=pnb, site_name="nyc") assert isinstance(item, NetboxVlanPre29) is True assert item.remote_id == 1 assert item.vid == 101 assert item.associated_devices == ["devA", "devB"]
def test_translate_attrs_for_netbox_with_attrs(netbox_api_base): vlan = NetboxVlan(vid=100, site_name="HQ", remote_id=30) netbox_api_base.add(vlan) netbox_api_base.add( NetboxDevice(name="dev1", site_name="HQ", remote_id=32, device_tag_id=12)) netbox_api_base.add( NetboxDevice(name="dev2", site_name="HQ", remote_id=33, device_tag_id=13)) params = vlan.translate_attrs_for_netbox({ "name": "VOICE", "associated_devices": ["dev1", "dev2"] }) assert "name" in params assert params["name"] == "VOICE" assert "site" in params assert params["site"] == 10 assert "tags" in params assert sorted(params["tags"]) == [12, 13]
def test_get_device_tag_id(netbox_api_base): device = NetboxDevice(name="dev1", site_name="HQ", remote_id=32, device_tag_id=12) netbox_api_base.add(device) assert device.get_device_tag_id() == 12
def test_get_device_tag_id_get_tag(requests_mock, netbox_api_base): data = yaml.safe_load( open(f"{ROOT}/../fixtures/netbox_29/tag_01_list.json")) requests_mock.get("http://mock/api/extras/tags/?name=device%3Ddev1", json=data, status_code=200) device = NetboxDevice(name="dev1", site_name="HQ", remote_id=32) netbox_api_base.add(device) assert device.get_device_tag_id() == 8
def test_translate_attrs_for_netbox_device_no_remote_id(netbox_api_base): netbox_api_base.add(NetboxDevice(name="HQ-CORE-SW01", site_name="nyc")) intf = NetboxInterface(device_name="HQ-CORE-SW01", name="ge-0/0/0") netbox_api_base.add(intf) with pytest.raises(NetboxObjectNotValid): intf.translate_attrs_for_netbox({})
def netbox_api_base(): """Provide an instance of NetBoxAPIAdapter with pynetbox initiliazed.""" diffsync = NetBoxAPIAdapter(nornir=None, settings={}) diffsync.netbox = pynetbox.api(url="http://mock", token="1234567890") diffsync.add(NetboxSite(name="HQ", remote_id=10)) diffsync.add( NetboxDevice(name="HQ-CORE-SW02", site_name="HQ", remote_id=29)) diffsync.add( NetboxInterface(name="TenGigabitEthernet1/0/1", device_name="HQ-CORE-SW02", remote_id=302)) diffsync.add(NetboxVlan(vid=111, site_name="HQ", remote_id=23)) return diffsync