Repository URL to install this package:
Version:
3.3.37 ▾
|
# Copyright 2018 TrilioData Inc.
# All Rights Reserved.
"""Python module that populates dmapi.conf from nova.conf."""
try:
from urlparse import urlparse
except:
from urllib.parse import urlparse
try:
import ConfigParser as configparser
except:
import configparser
def populate_dmapi_conf():
"""read nova.conf and populate dmapi.conf."""
nova_conf = configparser.RawConfigParser()
nova_conf.read('/etc/nova/nova.conf')
dmapi_conf = configparser.RawConfigParser()
dmapi_conf.read('/etc/dmapi/dmapi.conf')
nova_parameters = [('DEFAULT', 'transport_url', None),
('DEFAULT', 'my_ip', None),
('wsgi', 'ssl_cert_file', None),
('wsgi', 'ssl_key_file', None),
('database', 'connection', None),
('api_database', 'connection', None),
('keystone_authtoken', 'signing_dir', None),
('keystone_authtoken', 'cafile', None),
('keystone_authtoken', 'project_domain_name', None),
('keystone_authtoken', 'project_name', None),
('keystone_authtoken', 'user_domain_name', None),
('keystone_authtoken', 'password', None),
('keystone_authtoken', 'username', 'nova'),
('keystone_authtoken', 'auth_url', None),
('keystone_authtoken', 'auth_uri', None),
('keystone_authtoken', 'auth_type', 'password'),
('keystone_authtoken', 'memcached_servers ', None),
('oslo_messaging_notifications',
'transport_url', None),
('oslo_messaging_notifications', 'driver', None),
('oslo_middleware', 'enable_proxy_headers_parsing',
'false'),
('oslo_messaging_rabbit', 'ssl', None),
('oslo_messaging_rabbit', 'rpc_conn_pool_size', None)]
dmapi_parameters = [('DEFAULT', 'dmapi_listen_port', str(8784)),
('DEFAULT', 'dmapi_listen', '0.0.0.0'),
('DEFAULT', 'dmapi_enabled_apis', 'dmapi'),
('DEFAULT', 'dmapi_enabled_ssl_apis', None)]
for section, key, default in nova_parameters:
if section is not 'DEFAULT' and section not in dmapi_conf.sections():
dmapi_conf.add_section(section)
try:
value = nova_conf.get(section, key)
dmapi_conf.set(section, key, value)
except Exception:
if default is not None:
dmapi_conf.set(section, key, default)
else:
if section == 'oslo_messaging_rabbit':
dmapi_conf.remove_option(section, key)
key='#'+key
dmapi_conf.set(section, key, "")
for section, key, default in dmapi_parameters:
if default is not None:
dmapi_conf.set(section, key, default)
else:
dmapi_conf.set(section, key, "")
user_conf = configparser.RawConfigParser()
user_conf.read('/tmp/datamover_url')
for key, value in list(dict(user_conf._defaults).items()):
dmapi_conf.set('DEFAULT', key, value)
wsgi_sec = dict(user_conf._sections['wsgi'])
wsgi_sec.pop('__name__', None)
for key, value in list(wsgi_sec.items()):
dmapi_conf.set('wsgi', key, value)
port = urlparse(dmapi_conf.get('DEFAULT', 'dmapi_link_prefix')).port
if ":" in urlparse(dmapi_conf.get('DEFAULT', 'dmapi_link_prefix')).hostname :
dmapi_listen = "::"
dmapi_conf.set('DEFAULT', 'dmapi_listen', dmapi_listen)
dmapi_conf.set('DEFAULT', 'dmapi_listen_port', port)
with open('/etc/dmapi/dmapi.conf', 'w') as configfile:
dmapi_conf.write(configfile)
if __name__ == "__main__":
populate_dmapi_conf()