Example #1
0
    def test_ingest_federated_design(self, input_files):
        objects.register_all()

        profiles_file = input_files.join("fullsite_profiles.yaml")
        networks_file = input_files.join("fullsite_networks.yaml")
        nodes_file = input_files.join("fullsite_nodes.yaml")

        design_state = DesignState()
        design_data = objects.SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins(
            ['drydock_provisioner.ingester.plugins.yaml.YamlIngester'])
        ingester.ingest_data(plugin_name='yaml',
                             design_state=design_state,
                             design_id=design_id,
                             filenames=[
                                 str(profiles_file),
                                 str(networks_file),
                                 str(nodes_file)
                             ])

        design_data = design_state.get_design(design_id)

        assert len(design_data.host_profiles) == 2
    def test_design_inheritance(self, input_files):
        input_file = input_files.join("fullsite.yaml")

        design_state = DesignState()
        design_data = SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins(
            ['drydock_provisioner.ingester.plugins.yaml.YamlIngester'])
        ingester.ingest_data(plugin_name='yaml',
                             design_state=design_state,
                             design_id=str(design_id),
                             filenames=[str(input_file)])

        orchestrator = Orchestrator(state_manager=design_state)

        design_data = orchestrator.get_effective_site(design_id)

        assert len(design_data.baremetal_nodes) == 2

        node = design_data.get_baremetal_node("controller01")

        assert node.hardware_profile == 'HPGen9v3'

        iface = node.get_applied_interface('bond0')

        assert len(iface.get_hw_slaves()) == 2

        iface = node.get_applied_interface('pxe')

        assert len(iface.get_hw_slaves()) == 1
Example #3
0
    def test_orch_preparesite(self, input_files):
        objects.register_all()

        input_file = input_files.join("fullsite.yaml")

        design_state = statemgmt.DesignState()
        design_data = objects.SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins([drydock_provisioner.ingester.plugins.yaml.YamlIngester])
        ingester.ingest_data(plugin_name='yaml', design_state=design_state,
                             filenames=[str(input_file)], design_id=design_id)

        design_data = design_state.get_design(design_id)

        orchestrator = orch.Orchestrator(state_manager=design_state,
                                    enabled_drivers={'node': 'drydock_provisioner.drivers.node.maasdriver.driver.MaasNodeDriver'})

        orch_task = orchestrator.create_task(task.OrchestratorTask,
                                             site='sitename',
                                             design_id=design_id,
                                             action=hd_fields.OrchestratorAction.PrepareSite)

        orchestrator.execute_task(orch_task.get_id())

        orch_task = design_state.get_task(orch_task.get_id())

        assert orch_task.result == hd_fields.ActionResult.Success
Example #4
0
    def loaded_design(self, input_files):
        objects.register_all()

        input_file = input_files.join("oob.yaml")

        design_state = statemgmt.DesignState()
        design_data = objects.SiteDesign(id=self.design_id)

        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins([yaml_ingester.YamlIngester])
        ingester.ingest_data(plugin_name='yaml', design_state=design_state,
                             design_id=self.design_id, filenames=[str(input_file)])

        return design_state
Example #5
0
    def test_ingest_full_site(self, input_files):
        objects.register_all()

        input_file = input_files.join("fullsite.yaml")

        design_state = DesignState()
        design_data = objects.SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins(
            ['drydock_provisioner.ingester.plugins.yaml.YamlIngester'])
        ingester.ingest_data(plugin_name='yaml',
                             design_state=design_state,
                             filenames=[str(input_file)],
                             design_id=design_id)

        design_data = design_state.get_design(design_id)

        assert len(design_data.host_profiles) == 2
        assert len(design_data.baremetal_nodes) == 2
Example #6
0
    def test_rack_not_found(self, input_files):
        objects.register_all()

        input_file = input_files.join("fullsite.yaml")

        design_state = DesignState()
        design_data = objects.SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins(
            ['drydock_provisioner.ingester.plugins.yaml.YamlIngester'])
        ingester.ingest_data(plugin_name='yaml',
                             design_state=design_state,
                             filenames=[str(input_file)],
                             design_id=design_id)

        design_data = design_state.get_design(design_id)

        with pytest.raises(errors.DesignError):
            rack = design_data.get_rack('foo')
Example #7
0
    def test_rack_parse(self, input_files):
        objects.register_all()

        input_file = input_files.join("fullsite.yaml")

        design_state = DesignState()
        design_data = objects.SiteDesign()
        design_id = design_data.assign_id()
        design_state.post_design(design_data)

        ingester = Ingester()
        ingester.enable_plugins(
            ['drydock_provisioner.ingester.plugins.yaml.YamlIngester'])
        ingester.ingest_data(plugin_name='yaml',
                             design_state=design_state,
                             filenames=[str(input_file)],
                             design_id=design_id)

        design_data = design_state.get_design(design_id)

        rack = design_data.get_rack('rack1')

        assert rack.location.get('grid') == 'EG12'