def predeploy(self): default_info = env_util.get_node_default_facts(self.env) deployment_info = [] network_data = self.env.get_network_data() gw_admin = transformations.get_network_gw(network_data, "fuelweb_admin") if self.isolated: facts = [info for info in default_info if info['uid'] == str(self.node.id)] env_util.write_facts_to_dir(facts, self.node.data['cluster']) for info in default_info: if not ('primary-controller' in info['roles'] or info['uid'] == str(self.node.id)): continue if self.isolated: transformations.remove_ports(info) if info['uid'] == str(self.node.id): endpoints = info["network_scheme"]["endpoints"] self.gateway = endpoints["br-ex"]["gateway"] transformations.reset_gw_admin(info, gw_admin) # From run_ping_checker info['run_ping_checker'] = False env_util.prepare_net_info(info) deployment_info.append(info) if deployment_info: self.env.upload_facts('deployment', deployment_info)
def test_write_facts_to_dir(mocker, mock_open, mock_os_path, os_path_exist, facts, env_id): mock_os_makedirs = mocker.patch("os.makedirs") mock_os_path.exists.return_value = os_path_exist buf = io.BytesIO() mock_open.return_value.write.side_effect = buf.write mock_yaml = mocker.patch("yaml.safe_dump") env_util.write_facts_to_dir(facts, env_id) join_calls = [mock.call('/tmp', "deployment_{0}.orig".format(env_id))] join_calls.extend( [mock.call(mock_os_path.join.return_value, "{0}.yaml".format(fact['uid'])) for fact in facts]) mock_os_path.join.assert_has_calls(join_calls) mock_open.assert_called_with(mock_os_path.join.return_value, "w") mock_yaml.assert_has_calls( [mock.call(fact, mock_open.return_value, default_flow_style=False) for fact in facts] ) if not os_path_exist: mock_os_makedirs.assert_called_once_with( mock_os_path.join.return_value ) else: mock_os_makedirs.assert_not_called()