Example #1
0
    def test_ensure_platform_present(self):
        """Verify ensure_device_platform function when Platform object is present."""
        platform_name = "juniper_junos"

        manufacturer = Manufacturer.objects.create(name="Juniper",
                                                   slug="juniper")

        device_type = DeviceType.objects.create(slug="srx3600",
                                                model="SRX3600",
                                                manufacturer=manufacturer)

        platform = Platform.objects.create(
            slug=platform_name,
            name=platform_name,
        )

        onboarding_kwargs = {
            "netdev_hostname": "device2",
            "netdev_nb_role_slug": PLUGIN_SETTINGS["default_device_role"],
            "netdev_vendor": "Juniper",
            "netdev_nb_device_type_slug": device_type.slug,
            "netdev_nb_site_slug": self.site1.slug,
            "netdev_nb_platform_slug": platform_name,
        }

        nbk = NautobotKeeper(**onboarding_kwargs)

        nbk.ensure_device_platform(create_platform_if_missing=False)

        self.assertIsInstance(nbk.nb_platform, Platform)
        self.assertEqual(nbk.nb_platform, platform)
        self.assertEqual(nbk.nb_platform.slug, slugify(platform_name))
Example #2
0
    def test_platform_map(self):
        """Verify platform mapping of netmiko to slug functionality."""
        # Create static mapping
        PLUGIN_SETTINGS["platform_map"] = {
            "cisco_ios": "ios",
            "arista_eos": "eos",
            "cisco_nxos": "cisco-nxos"
        }

        onboarding_kwargs = {
            "netdev_hostname": "device1",
            "netdev_nb_role_slug": PLUGIN_SETTINGS["default_device_role"],
            "netdev_vendor": "Cisco",
            "netdev_model": "CSR1000v",
            "netdev_nb_site_slug": self.site1.slug,
            "netdev_netmiko_device_type": "cisco_ios",
        }

        nbk = NautobotKeeper(**onboarding_kwargs)

        nbk.ensure_device_platform(create_platform_if_missing=True)
        self.assertIsInstance(nbk.nb_platform, Platform)
        self.assertEqual(nbk.nb_platform.slug,
                         slugify(PLUGIN_SETTINGS["platform_map"]["cisco_ios"]))
        self.assertEqual(
            Platform.objects.get(
                name=PLUGIN_SETTINGS["platform_map"]["cisco_ios"]).name,
            slugify(PLUGIN_SETTINGS["platform_map"]["cisco_ios"]),
        )
Example #3
0
    def test_ensure_device_platform_missing(self):
        """Verify ensure_device_platform function when Platform object is not present."""
        platform_name = "cisco_ios"

        onboarding_kwargs = {
            "netdev_hostname": "device1",
            "netdev_nb_role_slug": PLUGIN_SETTINGS["default_device_role"],
            "netdev_vendor": "Cisco",
            "netdev_model": "CSR1000v",
            "netdev_nb_site_slug": self.site1.slug,
            "netdev_nb_platform_slug": platform_name,
            "netdev_netmiko_device_type": platform_name,
        }

        nbk = NautobotKeeper(**onboarding_kwargs)

        with self.assertRaises(OnboardException) as exc_info:
            nbk.ensure_device_platform(create_platform_if_missing=False)
            self.assertEqual(
                exc_info.exception.message,
                f"ERROR device platform not found: {platform_name}")
            self.assertEqual(exc_info.exception.reason, "fail-config")

        nbk.ensure_device_platform(create_platform_if_missing=True)
        self.assertIsInstance(nbk.nb_platform, Platform)
        self.assertEqual(nbk.nb_platform.slug, slugify(platform_name))