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"
示例#6
0
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",
    ]
示例#8
0
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