Files
openstack-ansible/osa_toolkit/tools.py
Dmitriy Rabotyagov 1a6d21621a Make AIO networks configurable
We carry *_range variables without any real use as of today. With
that sometimes it makes total sense to override some AIO subnet
range in case it does intersect with already existing subnet on AIO VM.

This also should be useful and more flexible for future patches
which may add situational complexity.

Change-Id: Ibe46a54a4eca981a73a9b16e0945ec2944c1db87
Signed-off-by: Dmitriy Rabotyagov <dmitriy.rabotyagov@cleura.com>
2025-07-02 13:30:18 +00:00

57 lines
2.0 KiB
Python

#!/usr/bin/env python
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# (c) 2016, Nolan Brubaker <nolan.brubaker@rackspace.com>
import glob
import os
import jinja2
import yaml
def make_example_config(aio_config_file, configs_dir):
"""Build an inventory configuration based on example AIO files
:param aio_config_file: ``str`` Master AIO configuration example file
:param configs_dir: ``str`` Directory containing independent conf.d files
"""
config = {}
j2env = jinja2.Environment(loader=jinja2.BaseLoader,
autoescape=jinja2.select_autoescape())
files = glob.glob(os.path.join(configs_dir, '*.aio'))
templated_variables = {
'bootstrap_host_management_address': '172.29.236.100'
}
for file_name in files:
with open(file_name, 'r') as f:
template = j2env.from_string(f.read())
jinja_data = template.render(**templated_variables)
config.update(yaml.safe_load(jinja_data))
with open(aio_config_file, 'r') as f:
config.update(yaml.safe_load(f.read()))
return config
def write_example_config(filename, config):
"""Dump generated configuration to a file.
:param filename: ``str`` The filename which to write to.
:param config: ``dict`` Dictionary containing the config which to write.
"""
with open(os.path.realpath(filename), 'w') as f:
f.write(yaml.dump(config, default_flow_style=False))