Exemplo n.º 1
0
    def test__calling_importer_issues_rpc_calls_to_clusters(self):
        # Some clusters that we'll ask to import resources.
        rack_1 = factory.make_RackController()
        rack_2 = factory.make_RackController()

        # Connect only cluster #1.
        rack_1_conn = self.rpc.makeCluster(rack_1, ImportBootImages)
        rack_1_conn.ImportBootImages.return_value = succeed({})

        # Do the import.
        importer = RackControllersImporter.new(
            [rack_1.system_id, rack_2.system_id])
        results = importer(lock=DeferredLock()).wait(5)

        # The results are a list (it's from a DeferredList).
        self.assertThat(
            results,
            MatchesListwise((
                # Success when calling rack_1.
                Equals((True, {})),
                # Failure when calling rack_1: no connection.
                MatchesListwise((
                    Is(False),
                    MatchesAll(
                        IsInstance(Failure),
                        MatchesStructure(
                            value=IsInstance(NoConnectionsAvailable)),
                    ),
                )),
            )),
        )
Exemplo n.º 2
0
    def test__new_obtains_system_ids_for_accepted_clusters_if_not_given(self):
        rack = factory.make_RackController()

        importer = RackControllersImporter.new(sources=[], proxy=None)

        self.assertThat(
            importer, MatchesStructure(system_ids=Equals((rack.system_id, ))))
Exemplo n.º 3
0
    def test_new_obtains_None_proxy_if_disabled(self):
        # Disable boot source cache signals.
        self.addCleanup(bootsources.signals.enable)
        bootsources.signals.disable()

        proxy = factory.make_simple_http_url()
        Config.objects.set_config("http_proxy", proxy)
        Config.objects.set_config("enable_http_proxy", False)
        importer = RackControllersImporter.new(system_ids=[], sources=[])
        self.assertThat(importer, MatchesStructure(proxy=Equals(None)))
Exemplo n.º 4
0
    def test_run_calls_importer_and_reports_results(self):
        # Some clusters that we'll ask to import resources.
        rack_1 = factory.make_RackController()
        rack_2 = factory.make_RackController()
        rack_3 = factory.make_RackController()

        # Cluster #1 will work fine.
        cluster_1 = self.rpc.makeCluster(rack_1, ImportBootImages)
        cluster_1.ImportBootImages.return_value = succeed({})

        # Cluster #2 will break.
        cluster_2 = self.rpc.makeCluster(rack_2, ImportBootImages)
        cluster_2.ImportBootImages.return_value = fail(ZeroDivisionError())

        # Cluster #3 is not connected.

        # Do the import with reporting.
        importer = RackControllersImporter.new(
            [rack_1.system_id, rack_2.system_id, rack_3.system_id]
        )

        with TwistedLoggerFixture() as logger:
            importer.run().wait(5)

        self.assertDocTestMatches(
            """\
            ...
            ---
            Rack controller (%s) has imported boot resources.
            ---
            Rack controller (%s) failed to import boot resources.
            Traceback (most recent call last):
            ...
            ---
            Rack controller (%s) did not import boot resources; it is not
            connected to the region at this time.
            """
            % (rack_1.system_id, rack_2.system_id, rack_3.system_id),
            logger.output,
        )
Exemplo n.º 5
0
 def test_new_obtains_sources_if_not_given(self):
     importer = RackControllersImporter.new(system_ids=[], proxy=None)
     self.assertThat(
         importer,
         MatchesStructure(sources=Equals([get_simplestream_endpoint()])),
     )
Exemplo n.º 6
0
 def test_new_obtains_system_ids_if_not_given(self):
     importer = RackControllersImporter.new(sources=[], proxy=None)
     self.assertThat(importer, MatchesStructure(system_ids=Equals(())))