Example #1
0
    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)
Example #2
0
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()