From 8274d56c7183d81f4eb6bf50a65ec4055112ac87 Mon Sep 17 00:00:00 2001 From: Aaron Sheffield Date: Thu, 10 May 2018 09:26:17 -0500 Subject: [PATCH] Handle no baremetal_nodes in process_node_filter - Added a try when getting baremetal_nodes from site_design. If baremetal_nodes isn't there it will return an empty set. Change-Id: I413892274d938ffd23102c73a569b83a59025206 --- drydock_provisioner/orchestrator/orchestrator.py | 10 +++++++++- tests/unit/test_orch_node_filter.py | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/drydock_provisioner/orchestrator/orchestrator.py b/drydock_provisioner/orchestrator/orchestrator.py index b1cfb24e..044d5ca3 100644 --- a/drydock_provisioner/orchestrator/orchestrator.py +++ b/drydock_provisioner/orchestrator/orchestrator.py @@ -382,7 +382,15 @@ class Orchestrator(object): ba.target_nodes = [x.get_id() for x in target_nodes] def process_node_filter(self, node_filter, site_design): - target_nodes = site_design.baremetal_nodes + try: + target_nodes = site_design.baremetal_nodes + if target_nodes is None: + raise AttributeError() + except AttributeError: + self.logger.debug( + "Invalid site design, no baremetal nodes in site_design." + ) + return [] if node_filter is None: return target_nodes diff --git a/tests/unit/test_orch_node_filter.py b/tests/unit/test_orch_node_filter.py index 4a61fc26..deca0296 100644 --- a/tests/unit/test_orch_node_filter.py +++ b/tests/unit/test_orch_node_filter.py @@ -62,3 +62,17 @@ class TestClass(object): node_list = deckhand_orchestrator.process_node_filter(nfs, design_data) assert len(node_list) == 1 + + def test_no_baremetal_nodes(self, input_files, setup, deckhand_orchestrator, + deckhand_ingester): + input_file = input_files.join("deckhand_fullsite_no_nodes.yaml") + + design_state = DrydockState() + design_ref = "file://%s" % str(input_file) + + design_status, design_data = deckhand_ingester.ingest_data( + design_state=design_state, design_ref=design_ref) + + node_list = deckhand_orchestrator.process_node_filter(None, design_data) + + assert node_list == []