def test_translate_attrs_for_nautobot_with_attrs(nautobot_api_base): vlan = NautobotVlan(vid=100, site_name="HQ", remote_id="464a2de3-fd5e-4b65-a58d-e0a2a617c12e") nautobot_api_base.add(vlan) nautobot_api_base.add( NautobotDevice( name="dev1", site_name="HQ", remote_id="e0633a07-c3e2-41b0-a1df-4627392acf0a", device_tag_id="0bc28fc5-4e3d-4e84-b407-318c2151d64e", ) ) nautobot_api_base.add( NautobotDevice( name="dev2", site_name="HQ", remote_id="e0633a07-c3e2-41b0-a1df-4627392acf0b", device_tag_id="0bc28fc5-4e3d-4e84-b407-318c2151d65a", ) ) params = vlan.translate_attrs_for_nautobot({"name": "VOICE", "associated_devices": ["dev1", "dev2"]}) assert "name" in params assert params["name"] == "VOICE" assert "site" in params assert params["site"] == "a325e477-62fe-47f0-8b67-acf411b1868f" assert "tags" in params assert sorted(params["tags"]) == ["0bc28fc5-4e3d-4e84-b407-318c2151d64e", "0bc28fc5-4e3d-4e84-b407-318c2151d65a"]
def test_vlan_create_from_pynautobot_with_tags(nautobot_api_base): api = pynautobot.api(url="http://mock_nautobot", token="1234567890") data = yaml.safe_load(open(f"{ROOT}/../fixtures/vlan_101_tags_01.json")) pnb = pynautobot.core.response.Record(values=data, api=api, endpoint=1) nautobot_api_base.add( NautobotDevice(name="devA", site_name="nyc", remote_id="eb697742-364d-4714-b585-a267c64d7720") ) item = NautobotVlan.create_from_pynautobot(diffsync=nautobot_api_base, obj=pnb, site_name="nyc") assert isinstance(item, NautobotVlan) is True assert item.remote_id == "eb697742-364d-4714-b585-a267c64d7720" assert item.vid == 101 assert item.associated_devices == ["devA"] # Try again with one additional device in the inventory nautobot_api_base.add( NautobotDevice(name="devB", site_name="nyc", remote_id="eb697742-364d-4714-b585-a267c64d7731") ) item = NautobotVlan.create_from_pynautobot(diffsync=nautobot_api_base, obj=pnb, site_name="nyc") assert isinstance(item, NautobotVlan) is True assert item.remote_id == "eb697742-364d-4714-b585-a267c64d7720" assert item.vid == 101 assert item.associated_devices == ["devA", "devB"]
def test_nautobot_get_device_tag_id(): device = NautobotDevice( name="dev12", site_name="HQ", remote_id=32, device_tag_id="eb697742-364d-4714-b585-a267c64d7720") assert device.get_device_tag_id() == "eb697742-364d-4714-b585-a267c64d7720"
def test_nautobot_get_device_tag_id_get_tag(requests_mock, nautobot_api_base): data = yaml.safe_load(open(f"{ROOT}/../fixtures/tag_01_list.json")) requests_mock.get( "http://mock_nautobot/api/extras/tags/?name=device%3Ddev1", json=data, status_code=200) device = NautobotDevice(name="dev1", site_name="HQ", remote_id=32) nautobot_api_base.add(device) assert device.get_device_tag_id() == "eb697742-364d-4714-b585-a267c64d7720"
def test_get_device_tag_id_create_tag(requests_mock, nautobot_api_base, empty_nautobot_query): data = yaml.safe_load(open(f"{ROOT}/../fixtures/tag_01.json")) requests_mock.get( "http://mock_nautobot/api/extras/tags/?name=device%3Ddev1", json=empty_nautobot_query, status_code=200) requests_mock.post("http://mock_nautobot/api/extras/tags/", json=data, status_code=201) device = NautobotDevice(name="dev1", site_name="HQ", remote_id=32) nautobot_api_base.add(device) assert device.get_device_tag_id() == "3fed3ac5-c623-493c-b029-87487830d159"
def test_translate_attrs_for_nautobot_device_no_remote_id(nautobot_api_base): nautobot_api_base.add(NautobotDevice(name="HQ-CORE-SW01", site_name="nyc")) intf = NautobotInterface(device_name="HQ-CORE-SW01", name="ge-0/0/0") nautobot_api_base.add(intf) with pytest.raises(NautobotObjectNotValid): intf.translate_attrs_for_nautobot({})
def test_update_clean_tags_with_incoming_tags(nautobot_api_base): vlan = NautobotVlan(vid=100, site_name="HQ", remote_id="464a2de3-fd5e-4b65-a58d-e0a2a617c12e") nautobot_api_base.add(vlan) nautobot_api_base.add( NautobotDevice( name="dev1", site_name="HQ", remote_id="e0633a07-c3e2-41b0-a1df-4627392acf0a", device_tag_id="0bc28fc5-4e3d-4e84-b407-318c2151d64e", ) ) nautobot_api_base.add( NautobotDevice( name="dev2", site_name="HQ", remote_id="e0633a07-c3e2-41b0-a1df-4627392acf0b", device_tag_id="0bc28fc5-4e3d-4e84-b407-318c2151d65a", ) ) api = pynautobot.api(url="http://mock_nautobot", token="1234567890") data = yaml.safe_load(open(f"{ROOT}/../fixtures/vlan_101_tags_01.json")) pnb = pynautobot.core.response.Record(values=data, api=api, endpoint="eb697742-364d-4714-b585-a267c64d7720") params = vlan.translate_attrs_for_nautobot({"name": "VOICE", "associated_devices": ["dev1", "dev2"]}) clean_params = vlan.update_clean_tags(nb_params=params, obj=pnb) assert "tags" in clean_params print(clean_params) assert sorted(clean_params["tags"]) == [ "0bc28fc5-4e3d-4e84-b407-318c2151d64e", "0bc28fc5-4e3d-4e84-b407-318c2151d65a", "999121c7-37d6-44a8-83f9-61706e915bde", "d0c52a6c-b3e9-4234-98ef-ee9b76ca31db", "fd6809fa-26cf-47b2-8742-974cd4d22ca9", ]
def nautobot_api_base(): """Provide an instance of NautobotAPIAdapter with pynautoboot initiliazed.""" diffsync = NautobotAPIAdapter(nornir=None, settings={}) diffsync.nautobot = pynautobot.api(url="http://mock_nautobot", token="1234567890") diffsync.add( NautobotSite(name="HQ", remote_id="a325e477-62fe-47f0-8b67-acf411b1868f")) diffsync.add( NautobotDevice(name="HQ-CORE-SW02", site_name="HQ", remote_id="e0633a07-c3e2-41b0-a1df-4627392acf0a")) diffsync.add( NautobotInterface(name="TenGigabitEthernet1/0/1", device_name="HQ-CORE-SW02", remote_id="fecc1d8f-99b1-491d-9bdf-1dcb394e27a1")) diffsync.add( NautobotVlan(vid=111, site_name="HQ", remote_id="464a2de3-fd5e-4b65-a58d-e0a2a617c12e")) return diffsync