コード例 #1
0
    def test_logs_error_when_running_region_controller_cannot_be_found(self):
        service = RegionNetworksMonitoringService(reactor)

        with TwistedLoggerFixture() as logger:
            service.startService()
            yield service.stopService()

        self.assertThat(
            logger.output,
            DocTestMatches(
                "...Failed to update and/or record network interface "
                "configuration: RegionController matching query does not exist..."
            ))
コード例 #2
0
    def test_logs_error_when_running_region_controller_cannot_be_found(self):
        service = RegionNetworksMonitoringService(reactor,
                                                  enable_beaconing=False)

        with TwistedLoggerFixture() as logger:
            service.startService()
            yield service.stopService()

        self.assertIn(
            "Failed to update and/or record network interface configuration: "
            "RegionController matching query does not exist",
            logger.output,
        )
コード例 #3
0
    def test_get_refresh_details_running(self):
        region = yield deferToDatabase(factory.make_RegionController)
        region.owner = yield deferToDatabase(factory.make_admin)
        yield deferToDatabase(region.save)
        # Declare this region controller as the one running here.
        self.useFixture(MAASIDFixture(region.system_id))

        update_deferred = Deferred()
        service = RegionNetworksMonitoringService(
            reactor,
            enable_beaconing=False,
            update_interfaces_deferred=update_deferred,
        )
        yield service.startService()
        yield update_deferred
        details = yield service.getRefreshDetails()
        region_token = yield deferToDatabase(region._get_token_for_controller)
        region_credentials = {
            "consumer_key": region_token.consumer.key,
            "token_key": region_token.key,
            "token_secret": region_token.secret,
        }
        self.assertEqual((None, region.system_id, region_credentials), details)
コード例 #4
0
    def test_updates_interfaces_in_database(self):
        region = yield deferToDatabase(factory.make_RegionController)
        region.owner = yield deferToDatabase(factory.make_admin)
        yield deferToDatabase(region.save)
        # Declare this region controller as the one running here.
        self.useFixture(MAASIDFixture(region.system_id))

        interfaces = {
            factory.make_name("eth"): {
                "type": "physical",
                "mac_address": factory.make_mac_address(),
                "parents": [],
                "links": [],
                "enabled": True,
            }
        }

        service = RegionNetworksMonitoringService(reactor,
                                                  enable_beaconing=False)
        service.getInterfaces = lambda: succeed(interfaces)

        with FakeLogger("maas") as logger:
            service.startService()
            yield service.stopService()

        # Nothing was logged.
        self.assertThat(
            logger.output,
            DocTestMatches("Networks monitoring service: "
                           "Process ID ... assumed responsibility."),
        )

        def get_interfaces():
            return list(region.interface_set.all())

        interfaces_observed = yield deferToDatabase(get_interfaces)
        self.assertThat(interfaces_observed, HasLength(1))
        interface_observed = interfaces_observed[0]
        self.assertThat(interface_observed, IsInstance(PhysicalInterface))
        self.assertThat(interfaces, Contains(interface_observed.name))
        interface_expected = interfaces[interface_observed.name]
        self.assertThat(
            interface_observed.mac_address.raw,
            Equals(interface_expected["mac_address"]),
        )
コード例 #5
0
def make_NetworksMonitoringService():
    from maasserver.regiondservices.networks_monitoring import (
        RegionNetworksMonitoringService, )
    return RegionNetworksMonitoringService(reactor)