Source code for ironik.config_file_handler.cloud_conf_parser

"""

:author: Jonathan Decker
"""

import configparser
import io
import logging

from ironik.config_file_handler.deploy_template import OpenStackConfig, OpenStackCredentials

logger = logging.getLogger("logger")


[docs]def get_cloud_conf( openstack_credentials: OpenStackCredentials, openstack_config: OpenStackConfig, subnet_id: str, public_network_id: str, router_id: str, ) -> configparser.ConfigParser: """ :param openstack_credentials: :param openstack_config: :param subnet_id: :param public_network_id: :param router_id: :return: """ cloud_conf = configparser.ConfigParser() cloud_conf["Global"] = { "auth-url": openstack_config.openstack_auth_url, "username": openstack_credentials.username, "password": openstack_credentials.password, "region": openstack_config.region_name, "tenant-id": openstack_credentials.project_id, "domain-name": openstack_config.project_domain_name, } cloud_conf["BlockStorage"] = {"ignore-volume-az": "true", "trust-device-path": "false"} cloud_conf["Networking"] = {"public-network-name": "public"} cloud_conf["LoadBalancer"] = { "use-octavia": str(openstack_config.use_octavia).lower(), "subnet-id": subnet_id, "floating-network-id": public_network_id, "create-monitor": "false", "manage-security-groups": "true", "monitor-max-retries": "0", "enabled": "true", "lb-version": "v2", "lb-provider": openstack_config.lb_provider, } cloud_conf["Route"] = {"router-id": router_id} cloud_conf["Metadata"] = {"request-timeout": "0"} return cloud_conf
[docs]def config_ini_to_string(cloud_conf: configparser.ConfigParser) -> str: in_memory_file = io.StringIO() cloud_conf.write(in_memory_file) cloud_conf_str = in_memory_file.getvalue() in_memory_file.close() return cloud_conf_str