Charm Interface - Neutron Plugin API Subordinate
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore Generl tidy, docstrings, copyright, tox.ini etc Sep 12, 2016
README.md
copyright
interface.yaml
provides.py Added readme Sep 15, 2016
test-requirements.txt Generl tidy, docstrings, copyright, tox.ini etc Sep 12, 2016
tox.ini Generl tidy, docstrings, copyright, tox.ini etc Sep 12, 2016

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.