Description

Neutron is a virtual network service for OpenStack, and a part of
Netstack. Just like OpenStack Nova provides an API to dynamically
request and configure virtual servers, Neutron provides an API to
dynamically request and configure virtual networks. These networks
connect "interfaces" from other OpenStack services (e.g., virtual NICs
from Nova VMs). The Neutron API supports extensions to provide
advanced network capabilities (e.g., QoS, ACLs, network monitoring,
etc.)
.
This charm provides the OpenStack Neutron API service.

Overview

This principle charm provides the OpenStack Neutron API service which was previously provided by the nova-cloud-controller charm.

When this charm is related to the nova-cloud-controller charm the nova-cloud controller charm will shutdown its api service, de-register it from keystone and inform the compute nodes of the new neutron url.

Usage

To deploy (partial deployment only):

juju deploy neutron-api
juju deploy neutron-openvswitch

juju add-relation neutron-api mysql
juju add-relation neutron-api rabbitmq-server
juju add-relation neutron-api neutron-openvswitch
juju add-relation neutron-api nova-cloud-controller

This charm also supports scale out and high availability using the hacluster charm:

juju deploy hacluster neutron-hacluster
juju add-unit neutron-api
juju set neutron-api vip=<VIP FOR ACCESS>
juju add-relation neutron-hacluster neutron-api

Deploying from source

The minimum openstack-origin-git config required to deploy from source is:

openstack-origin-git: include-file://neutron-juno.yaml

neutron-juno.yaml
    repositories:
    - {name: requirements,
       repository: 'git://github.com/openstack/requirements',
       branch: stable/juno}
    - {name: neutron,
       repository: 'git://github.com/openstack/neutron',
       branch: stable/juno}

Note that there are only two 'name' values the charm knows about: 'requirements'
and 'neutron'. These repositories must correspond to these 'name' values.
Additionally, the requirements repository must be specified first and the
neutron repository must be specified last. All other repostories are installed
in the order in which they are specified.

The following is a full list of current tip repos (may not be up-to-date):

openstack-origin-git: include-file://neutron-master.yaml

neutron-master.yaml
    repositories:
    - {name: requirements,
       repository: 'git://github.com/openstack/requirements',
       branch: master}
    - {name: oslo-concurrency,
       repository: 'git://github.com/openstack/oslo.concurrency',
       branch: master}
    - {name: oslo-config,
       repository: 'git://github.com/openstack/oslo.config',
       branch: master}
    - {name: oslo-context,
       repository: 'git://github.com/openstack/oslo.context',
       branch: master}
    - {name: oslo-db,
       repository: 'git://github.com/openstack/oslo.db',
       branch: master}
    - {name: oslo-i18n,
       repository: 'git://github.com/openstack/oslo.i18n',
       branch: master}
    - {name: oslo-messaging,
       repository: 'git://github.com/openstack/oslo.messaging',
       branch: master}
    - {name: oslo-middleware,
       repository': 'git://github.com/openstack/oslo.middleware',
       branch: master}
    - {name: oslo-rootwrap',
       repository: 'git://github.com/openstack/oslo.rootwrap',
       branch: master}
    - {name: oslo-serialization,
       repository: 'git://github.com/openstack/oslo.serialization',
       branch: master}
    - {name: oslo-utils,
       repository: 'git://github.com/openstack/oslo.utils',
       branch: master}
    - {name: pbr,
       repository: 'git://github.com/openstack-dev/pbr',
       branch: master}
    - {name: stevedore,
       repository: 'git://github.com/openstack/stevedore',
       branch: 'master'}
    - {name: python-keystoneclient,
       repository: 'git://github.com/openstack/python-keystoneclient',
       branch: master}
    - {name: python-neutronclient,
       repository: 'git://github.com/openstack/python-neutronclient',
       branch: master}
    - {name: python-novaclient,
       repository': 'git://github.com/openstack/python-novaclient',
       branch: master}
    - {name: keystonemiddleware,
       repository: 'git://github.com/openstack/keystonemiddleware',
       branch: master}
    - {name: neutron-fwaas,
       repository': 'git://github.com/openstack/neutron-fwaas',
       branch: master}
    - {name: neutron-lbaas,
       repository: 'git://github.com/openstack/neutron-lbaas',
       branch: master}
    - {name: neutron-vpnaas,
       repository: 'git://github.com/openstack/neutron-vpnaas',
       branch: master}
    - {name: neutron,
       repository: 'git://github.com/openstack/neutron',
       branch: master}

Restrictions

This charm only support deployment with OpenStack Icehouse or better.

Configuration

ssl_key
(string) SSL key to use with certificate specified as ssl_cert.
quota-port
(int) Number of ports allowed per tenant. A negative value means unlimited.
50
vip_iface
(string) Default network interface to use for HA vip when it cannot be automatically determined.
eth0
verbose
(boolean) Enable verbose logging.
os-admin-network
(string) The IP address and netmask of the OpenStack Admin network (e.g., 192.168.0.0/24) . This network will be used for admin endpoints.
nsx-username
(string) Username to connect to NSX controllers with
admin
nsx-controllers
(string) Space delimited addresses of NSX controllers
vip
(string) Virtual IP(s) to use to front API services in HA configuration. . If multiple networks are being used, a VIP should be provided for each network, separated by spaces.
quota-member
(int) Number of pool members allowed per tenant. A negative value means unlimited. The default is unlimited because a member is not a real resource consumer on Openstack. However, on back-end, a member is a resource consumer and that is the reason why quota is possible.
-1
quota-health-monitors
(int) Number of health monitors allowed per tenant. A negative value means unlimited. The default is unlimited because a health monitor is not a real resource consumer on Openstack. However, on back-end, a member is a resource consumer and that is the reason why quota is possible.
-1
max-l3-agents-per-router
(int) Maximum number of l3 agents to host a router. Only used when enable-l3ha is True
2
ssl_ca
(string) SSL CA to use with the certificate and key provided - this is only required if you are providing a privately signed ssl_cert and ssl_key.
vip_cidr
(int) Default CIDR netmask to use for HA vip when it cannot be automatically determined.
24
use-syslog
(boolean) Setting this to True will allow supporting services to log to syslog.
worker-multiplier
(int) The CPU core multiplier to use when configuring worker processes for Neutron. By default, the number of workers for each daemon is set to twice the number of CPU cores a service unit has.
2
rabbit-user
(string) Username used to access rabbitmq queue
neutron
enable-l3ha
(boolean) Enable L3 HA (juno and above).
enable-dvr
(boolean) Enable Distributed Virtual Routing (juno and above).
quota-floatingip
(int) Number of floating IPs allowed per tenant. A negative value means unlimited.
50
ssl_cert
(string) SSL certificate to install and use for API ports. Setting this value and ssl_key will enable reverse proxying, point Neutron's entry in the Keystone catalog to use https, and override any certficiate and key issued by Keystone (if it is configured to do so).
neutron-external-network
(string) Name of the external network for floating IP addresses provided by Neutron.
ext_net
neutron-plugin
(string) Neutron plugin to use for network management; supports . ovs - OpenvSwitch Plugin nsx - VMWare NSX Calico - Project Calico Networking .
ovs
os-public-network
(string) The IP address and netmask of the OpenStack Public network (e.g., 192.168.0.0/24) . This network will be used for public endpoints.
plumgrid-virtual-ip
(string) IP address of PLUMgrid Director
calico-origin
(string) Repository from which to install Calico packages. If set, must be a PPA URL, of the form ppa:somecustom/ppa. Changing this value after installation will force an immediate software upgrade.
nsx-tz-uuid
(string) This is uuid of the default NSX Transport zone that will be used for creating tunneled isolated Quantum networks. It needs to be created in NSX before starting Quantum with the nsx plugin.
ha-bindiface
(string) Default network interface on which HA cluster will bind to communication with the other members of the HA Cluster.
eth0
quota-network
(int) Number of networks allowed per tenant. A negative value means unlimited.
10
nagios_servicegroups
(string) A comma-separated list of nagios servicegroups. If left empty, the nagios_context will be used as the servicegroup
l2-population
(boolean) Populate the forwarding tables of virtual switches (LinuxBridge or OVS), to decrease broadcast traffics inside the physical networks fabric while using overlays networks (VXLan, GRE).
True
overlay-network-type
(string) Overlay network types to use, valid options include: . gre vxlan . Multiple types can be provided - field is space delimited.
gre
ha-mcastport
(int) Default multicast port number that will be used to communicate between HA Cluster nodes.
5424
os-public-hostname
(string) The hostname or address of the public endpoints created for neutron-api in the keystone identity provider. . This value will be used for public endpoints. For example, an os-public-hostname set to 'neutron-api.example.com' with ssl enabled will create the following endpoint for neutron-api: . https://neutron-api.example.com:9696/
quota-subnet
(int) Number of subnets allowed per tenant. A negative value means unlimited.
10
quota-vip
(int) Number of vips allowed per tenant. A negative value means unlimited.
10
nsx-password
(string) Password to connect to NSX controllers with
admin
nsx-l3-uuid
(string) This is uuid of the default NSX L3 Gateway Service.
quota-security-group
(int) Number of security groups allowed per tenant. A negative value means unlimited.
10
region
(string) OpenStack Region
RegionOne
manage-neutron-plugin-legacy-mode
(boolean) If True neutron-server will install neutron packages for the plugin configured.
True
vlan-ranges
(string) Space-delimited list of <physical_network>:<vlan_min>:<vlan_max> or <physical_network> specifying physical_network names usable for VLAN provider and tenant networks, as well as ranges of VLAN tags on each available for allocation to tenant networks.
physnet1:1000:2000
plumgrid-password
(string) Password to access PLUMgrid Director
plumgrid
openstack-origin
(string) Repository from which to install. May be one of the following: distro (default), ppa:somecustom/ppa, a deb url sources entry, or a supported Cloud Archive release pocket. Supported Cloud Archive sources include: cloud:<series>-<openstack-release> cloud:<series>-<openstack-release>/updates cloud:<series>-<openstack-release>/staging cloud:<series>-<openstack-release>/proposed For series=Precise we support cloud archives for openstack-release: * icehouse For series=Trusty we support cloud archives for openstack-release: * juno * kilo * ... NOTE: updating this setting to a source that is known to provide a later version of OpenStack will trigger a software upgrade. NOTE: when openstack-origin-git is specified, openstack specific packages will be installed from source rather than from the openstack-origin repository.
distro
os-internal-network
(string) The IP address and netmask of the OpenStack Internal network (e.g., 192.168.0.0/24) . This network will be used for internal endpoints.
database
(string) Database name for Neutron (if enabled)
neutron
network-device-mtu
(int) The MTU size for interfaces managed by neutron. If unset or set to 0, no value will be applied. This value will be provided to neutron-plugin-api relations.
quota-router
(int) Number of routers allowed per tenant. A negative value means unlimited.
10
nagios_context
(string) Used by the nrpe-external-master subordinate charm. A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like: juju-myservice-0 If you're running multiple environments with the same services in them this allows you to differentiate between them.
juju
flat-network-providers
(string) Space-delimited list of Neutron flat network providers.
openstack-origin-git
(string) Specifies a YAML-formatted dictionary listing the git repositories and branches from which to install OpenStack and its dependencies. Note that the installed config files will be determined based on the OpenStack release of the openstack-origin option. For more details see README.md.
rabbit-vhost
(string) Rabbitmq vhost
openstack
quota-security-group-rule
(int) Number of security group rules allowed per tenant. A negative value means unlimited
100
debug
(boolean) Enable debug logging.
plumgrid-username
(string) Username to access PLUMgrid Director
plumgrid
prefer-ipv6
(boolean) If True enables IPv6 support. The charm will expect network interfaces to be configured with an IPv6 address. If set to False (default) IPv4 is expected. . NOTE: these charms do not currently support IPv6 privacy extension. In order for this charm to function correctly, the privacy extension must be disabled and a non-temporary address must be configured/available on your network interface.
database-user
(string) Username for Neutron database access (if enabled)
neutron
quota-pool
(int) Number of pools allowed per tenant. A negative value means unlimited.
10
neutron-security-groups
(boolean) Use quantum for security group management.
min-l3-agents-per-router
(int) Minimum number of l3 agents to host a router. Only used when enable-l3ha is True
2