Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
python3-dmapi / usr / lib / python3 / dist-packages / dmapi / confpar.py
Size: Mime:
# 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()