charm-interface-neutron-plu.../README.md

100 lines
2.9 KiB
Markdown

# 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
```python
@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:
```python
@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:
```python
@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`:
```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:
```yaml
provides:
neutron-plugin-api-subordinate:
interface: neutron-plugin-api-subordinate
scope: container
```
# Bugs
Please report bugs on
[Launchpad](https://bugs.launchpad.net/openstack-charms/+filebug).
For development questions please refer to the OpenStack [Charm
Guide](https://github.com/openstack/charm-guide).