Charm Interface - Neutron Plugin API Subordinate
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ghanshyam Mann 575c16cdb2 Dropping the py35 testing 1 month ago
.gitignore Generl tidy, docstrings, copyright, tox.ini etc 2 years ago
.gitreview OpenDev Migration Patch 1 month ago
.zuul.yaml Dropping the py35 testing 1 month ago
README.md README update 2 years ago
copyright Generl tidy, docstrings, copyright, tox.ini etc 2 years ago
interface.yaml Change openstack-dev to openstack-discuss 6 months ago
provides.py subordinate_configuration in the interface expects a dict 6 months ago
test-requirements.txt Generl tidy, docstrings, copyright, tox.ini etc 2 years ago
tox.ini Dropping the py35 testing 1 month ago

README.md

Overview

This interface is used for a charm to send configuration information to the neutron-api principle charm and request a restart of a service managed by that charm.

Usage

States

The interface provides the {relation-name}.connected and {relation_name}.available states.

configure_plugin

The configure_plugin method allows the following to be configured in the principle charm:

  • neutron_plugin: Name of the plugin type eg ‘ovs’, ‘odl’ etc. This is not currently used in the principle but should be set to something representitve of the plugin type.
  • core_plugin: Value of core_plugin to be set in neutron.conf
  • neutron_plugin_config: File containing plugin config. This config file is appended to the list of configs the neutron services read on startup.
  • service_plugins: Value of service_plugins to be set in neutron.conf
  • subordinate_configuration: Config to be inserted into a configuration file that the principle manages.

Request foo = bar is inserted into the DEFAULT section of neutron.conf

@reactive.when('neutron-plugin-api-subordinate.connected')
def configure_principle(api_principle):
    ...
    inject_config = {
        "neutron-api": {
            "/etc/neutron/neutron.conf": {
                "sections": {
                    'DEFAULT': [
                        ('foo', 'bar')
                    ],
                }
            }
        }
    }
    api_principle.configure_plugin(
        neutron_plugin='odl',
        core_plugin='neutron.plugins.ml2.plugin.Ml2Plugin',
        neutron_plugin_config='/etc/neutron/plugins/ml2/ml2_conf.ini',
        service_plugins='router,firewall,lbaas,vpnaas,metering',
        subordinate_configuration=inject_config)

request_restart

Requesting a restart of all remote services:

@reactive.when('neutron-plugin-api-subordinate.connected')
def remote_restart(api_principle):
    ...
    api_principle.request_restart()

Requesting a restart of a specific type of remote services:

@reactive.when('neutron-plugin-api-subordinate.connected')
def remote_restart(api_principle):
    ...
    api_principle.request_restart(service_type='neutron')

Metadata

To consume this interface in your charm or layer, add the following to layer.yaml:

includes: ['interface:neutron-plugin-api-subordinate']

and add a provides interface of type neutron-plugin-api-subordinate to your charm or layers metadata.yaml eg:

provides:
  neutron-plugin-api-subordinate:
    interface: neutron-plugin-api-subordinate
    scope: container

Bugs

Please report bugs on Launchpad.

For development questions please refer to the OpenStack Charm Guide.