diff --git a/.pydevproject b/.pydevproject
index d96fc611..6ab714cf 100644
--- a/.pydevproject
+++ b/.pydevproject
@@ -6,6 +6,5 @@
Default
/quantum/hooks
-/quantum/files
diff --git a/README.md b/README.md
index 6e43baa6..6ccd47cb 100644
--- a/README.md
+++ b/README.md
@@ -3,9 +3,9 @@ Overview
Quantum provides flexible software defined networking (SDN) for OpenStack.
-This charm is designed to be used in conjunction with the 'quantum-agent'
-charm (and the rest of the OpenStack related charms in the charm store) to
-virtualized the network that Nova Compute instances plug into.
+This charm is designed to be used in conjunction with the rest of the OpenStack
+related charms in the charm store) to virtualized the network that Nova Compute
+instances plug into.
Its designed as a replacement for nova-network; however it does not yet
support all of the features as nova-network (such as multihost) so may not
@@ -14,8 +14,8 @@ be suitable for all.
Quantum supports a rich plugin/extension framework for propriety networking
solutions and supports (in core) Nicira NVP, NEC, Cisco and others...
-The charm currently only supports the fully free OpenvSwitch plugin and
-implements the 'Provider Router with Private Networks' use case.
+The Openstack charms currently only support the fully free OpenvSwitch plugin
+and implements the 'Provider Router with Private Networks' use case.
See the upstream [Quantum documentation](http://docs.openstack.org/trunk/openstack-network/admin/content/use_cases_single_router.html)
for more details.
@@ -24,70 +24,32 @@ for more details.
Usage
-----
-Assumming that you have already deployed OpenStack using Juju, Quantum can be
-added to the mix:
+In order to use Quantum with Openstack, you will need to deploy the
+nova-compute and nova-cloud-controller charms with the network-manager
+configuration set to 'Quantum':
- juju deploy quantum
- juju add-relation quantum mysql
- juju add-relation quantum rabbitmq-server
- juju add-relation keystone
- juju add-relation nova-cloud-controller
+ nova-compute:
+ network-manager: Quantum
+ nova-cloud-controller:
+ network-manager: Quantum
-This will setup a Quantum API server and the DHCP and L3 routing agents on the
-deployed servce unit. ATM it does not support multiple units (WIP).
+This decision must be made prior to deploying Openstack with Juju as
+Quantum is deployed baked into these charms from install onwards:
-To then integrate Quantum with nova-compute do:
+ juju deploy --config config.yaml nova-compute
+ juju deploy --config config.yaml nova-cloud-controller
+ juju add-relation nova-compute nova-cloud-controller
- juju deploy quantum-agent
- juju add-relation quantum-agent mysql
- juju add-relation quantum-agent rabbitmq-server
- juju add-relation quantum-agent nova-compute
+The Quantum Gateway can then be added to the deploying:
-All of the units supporting nova-compute will now be reconfigured to support
-use of Quantum instead of nova-network.
+ juju deploy quantum-gateway
+ juju add-relation quantum-gateway mysql
+ juju add-relation quantum-gateway rabbitmq-server
+ juju add-relation quantum-gateway nova-cloud-controller
-Configuration
--------------
+The gateway provides two key services; L3 network routing and DHCP services.
-External Network Configuration
-==============================
-
-The quantum charm supports a number of configuration options; at a minimum you
-will need to specify the external network configuration for you environment.
-These are used to configure the 'external network' in quantum which provides
-outbound public network access from tenant private networks and handles the
-allocation of floating IP's for inbound public network access.
-
-You will also need to provide the 'ext-port' configuration element; this should
-be the port on the server which should be used for routing external/public
-network traffic. This does of course mean that you need a server with more than
-one network interface to deploy the quantum charm.
-
-Example minimal configuration:
-
- quantum:
- ext-port: eth1
- conf-ext-net: yes
- ext-net-cidr: 192.168.21.0/24
- ext-net-gateway: 192.168.21.1
- pool-floating-start: 192.168.21.130
- pool-floating-end: 192.168.21.200
-
-The IP addresses above are for illustrative purposes only; in a real environment
-these would be configured with actual routable public addresses.
-
-Tenant Network Configuration
-============================
-
-The quantum charm provides a helper script for creating tenant networks:
-
- quantum-net-create -t admin -r provider-router \
- -N 192.168.21.1 adminnet 10.5.5.0/24
-
-will create a new network for the admin tenant called 'adminnet' with a
-default gateway of 10.5.5.1, a DNS nameserver at 192.168.21.1 and a dhcp
-allocation range of 10.5.5.2 to 10.5.5.254; external network access is
-provided through the 'provider-router' (created by the charm itself).
+These are both required in a fully functional Quantum Openstack deployment.
TODO
----
@@ -96,4 +58,3 @@ TODO
* Support VLAN in addition to GRE+OpenFlow for L2 separation.
* High Avaliability.
* Support for propriety plugins for Quantum.
-
diff --git a/config.yaml b/config.yaml
index 0fa55887..2183722b 100644
--- a/config.yaml
+++ b/config.yaml
@@ -18,55 +18,12 @@ options:
default: RegionOne
description: |
OpenStack region that this quantum service supports.
- conf-ext-net:
- type: string
- description: Configure external network for quantum using
- network configuration below.
- ext-net-name:
- type: string
- default: ext_net
- description: |
- Name of external network configuration to create for
- public access to instances/floating IP's.
- ext-gw-ip:
- type: string
- description: |
- IP address to assign to external bridge for external network
- access. Only use this when configuraing a single instance
- quantum gateway deployment.
- ext-net-cidr:
- type: string
- default: 192.168.21.0/24
- description: |
- External network addressing
- ext-net-gateway:
- type: string
- default: 192.168.21.1
- description: |
- IP of the public network gateway (i.e. external router)
- pool-floating-start:
- type: string
- default: 192.168.21.130
- description: |
- Start of default floating IP range.
- pool-floating-end:
- type: string
- default: 192.168.21.200
- description: |
- End of default floating IP range.
- source:
+ openstack-origin:
type: string
description: |
Optional configuration to support use of additional sources such as:
.
- ppa:myteam/ppa
- - cloud:precise-proposed/folsom
- - http://my.archive.com/ubuntu main
- .
- The last option should be used in conjunction with the key configuration
- option.
- key:
- type: string
- description: |
- Key ID to import to the apt keyring to support use with arbitary source
- configuration from outside of Launchpad archives or PPA's.
+ - cloud:precise-folsom/proposed
+ - cloud:precise-folsom
+ - deb http://my.archive.com/ubuntu main|KEYID
diff --git a/files/create_tenant_net.py b/files/create_tenant_net.py
deleted file mode 100755
index 473e5d9b..00000000
--- a/files/create_tenant_net.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/python
-
-from quantumclient.v2_0 import client
-from keystoneclient.v2_0 import client as ks_client
-import optparse
-import os
-import sys
-import logging
-
-usage = """Usage: %prog [options] name cidr
-
-For example:
-
- %prog -t admin -r provider-router admin_net 10.5.5.0/24
-
-will create a new network for the admin tenant called 'admin_net' with a
-default gateway of 10.5.5.1 and a dhcp allocation range of
-10.5.5.2->10.5.5.254
-"""
-
-if __name__ == '__main__':
- parser = optparse.OptionParser(usage)
- parser.add_option('-t', '--tenant',
- help='Tenant name to create network for',
- dest='tenant', action='store',
- default=None)
- parser.add_option('-s', '--shared',
- help='Create a shared rather than private network',
- dest='shared', action='store_true', default=False)
- parser.add_option('-r', '--router',
- help='Router to plug new network into',
- dest='router', action='store', default=None)
- parser.add_option("-d", "--debug",
- help="Enable debug logging",
- dest="debug", action="store_true", default=False)
- parser.add_option("-D", "--disable-dhcp",
- help="Disable dhcp on network",
- dest="dhcp", action="store_false", default=True)
- parser.add_option("-N", "--dns-nameservers",
- help="Comma separated list of dns servers to use.",
- dest="dns_servers", action="store", default=None)
- (opts, args) = parser.parse_args()
-
- if len(args) != 2:
- parser.print_help()
- sys.exit(1)
-
- if opts.debug:
- logging.basicConfig(level=logging.DEBUG)
- else:
- logging.basicConfig(level=logging.INFO)
-
- net_name = args[0]
- subnet_name = "{}_subnet".format(net_name)
- cidr = args[1]
-
- keystone = ks_client.Client(username=os.environ['OS_USERNAME'],
- password=os.environ['OS_PASSWORD'],
- tenant_name=os.environ['OS_TENANT_NAME'],
- auth_url=os.environ['OS_AUTH_URL'])
- quantum = client.Client(username=os.environ['OS_USERNAME'],
- password=os.environ['OS_PASSWORD'],
- tenant_name=os.environ['OS_TENANT_NAME'],
- auth_url=os.environ['OS_AUTH_URL'])
-
- # Resolve tenant id
- tenant_id = None
- for tenant in [t._info for t in keystone.tenants.list()]:
- if (tenant['name'] ==
- (opts.tenant or os.environ['OS_TENANT_NAME'])):
- tenant_id = tenant['id']
- break # Tenant ID found - stop looking
- if not tenant_id:
- logging.error("Unable to locate tenant id for %s.", opts.tenant)
- sys.exit(1)
-
- # Create network
- networks = quantum.list_networks(name=net_name)
- if len(networks['networks']) == 0:
- logging.info('Creating network: %s',
- net_name)
- network_msg = {
- 'network': {
- 'name': net_name,
- 'shared': opts.shared,
- 'tenant_id': tenant_id
- }
- }
- network = quantum.create_network(network_msg)['network']
- else:
- logging.warning('Network %s already exists.', net_name)
- network = networks['networks'][0]
-
- # Create subnet
- subnets = quantum.list_subnets(name=subnet_name)
- if len(subnets['subnets']) == 0:
- logging.info('Creating subnet for %s',
- net_name)
- subnet_msg = {
- 'subnet': {
- 'name': subnet_name,
- 'network_id': network['id'],
- 'enable_dhcp': opts.dhcp,
- 'cidr': cidr,
- 'ip_version': 4,
- 'tenant_id': tenant_id
- }
- }
- subnet = quantum.create_subnet(subnet_msg)['subnet']
- else:
- logging.warning('Subnet %s already exists.', subnet_name)
- subnet = subnets['subnets'][0]
-
- # Update dns_nameservers
- if opts.dns_servers:
- msg = {
- 'subnet': {
- 'dns_nameservers': opts.dns_servers.split(',')
- }
- }
- logging.info('Updating dns_nameservers (%s) for subnet %s',
- opts.dns_servers,
- subnet_name)
- quantum.update_subnet(subnet['id'], msg)
-
- # Plug subnet into router if provided
- if opts.router:
- routers = quantum.list_routers(name=opts.router)
- if len(routers['routers']) == 0:
- logging.error('Unable to locate provider router %s', opts.router)
- sys.exit(1)
- else:
- # Check to see if subnet already plugged into router
- ports = quantum.list_ports(device_owner='network:router_interface',
- network_id=network['id'])
- if len(ports['ports']) == 0:
- logging.info('Adding interface from %s to %s',
- opts.router, subnet_name)
- router = routers['routers'][0]
- quantum.add_interface_router(router['id'],
- {'subnet_id': subnet['id']})
- else:
- logging.warning('Router already connected to subnet')
diff --git a/hooks/hooks.py b/hooks/hooks.py
index b97ca3c6..fa95b2f0 100755
--- a/hooks/hooks.py
+++ b/hooks/hooks.py
@@ -4,15 +4,13 @@ import utils
import sys
import quantum_utils as qutils
import os
-import shutil
PLUGIN = utils.config_get('plugin')
def install():
utils.configure_source()
- shutil.copy('files/create_tenant_net.py', '/usr/bin/quantum-net-create')
- if PLUGIN in qutils.PLUGIN_PKGS.keys():
+ if PLUGIN in qutils.GATEWAY_PKGS.keys():
if PLUGIN == qutils.OVS:
# Install OVS DKMS first to ensure that the ovs module
# loaded supports GRE tunnels
@@ -24,12 +22,10 @@ def install():
def config_changed():
- if PLUGIN in qutils.PLUGIN_PKGS.keys():
- render_api_paste_conf()
+ if PLUGIN in qutils.GATEWAY_PKGS.keys():
render_quantum_conf()
render_plugin_conf()
render_l3_agent_conf()
- render_novarc()
if PLUGIN == qutils.OVS:
qutils.add_bridge(qutils.INT_BRIDGE)
qutils.add_bridge(qutils.EXT_BRIDGE)
@@ -42,31 +38,6 @@ def config_changed():
'Please provide a valid plugin config')
sys.exit(1)
- configure_networking()
-
-
-def configure_networking():
- keystone_conf = get_keystone_conf()
- db_conf = get_db_conf()
- if (utils.config_get('conf-ext-net') and
- keystone_conf and
- db_conf):
- qutils.configure_ext_net(
- username=keystone_conf['service_username'],
- password=keystone_conf['service_password'],
- tenant=keystone_conf['service_tenant'],
- url="http://{}:{}/v2.0/".format(
- keystone_conf['keystone_host'],
- keystone_conf['auth_port']
- ),
- ext_net_name=utils.config_get('ext-net-name'),
- gateway_ip=utils.config_get('ext-gw-ip'),
- default_gateway=utils.config_get('ext-net-gateway'),
- cidr=utils.config_get('ext-net-cidr'),
- start_floating_ip=utils.config_get('pool-floating-start'),
- end_floating_ip=utils.config_get('pool-floating-end')
- )
-
def upgrade_charm():
install()
@@ -85,25 +56,6 @@ def render_l3_agent_conf():
)
-def render_api_paste_conf():
- context = get_keystone_conf()
- if (context and
- os.path.exists(qutils.QUANTUM_API_CONF)):
- with open(qutils.QUANTUM_API_CONF, "w") as conf:
- conf.write(utils.render_template(
- os.path.basename(qutils.QUANTUM_API_CONF),
- context
- )
- )
-
-
-def render_novarc():
- context = get_keystone_conf()
- if context:
- with open('/etc/quantum/novarc', "w") as conf:
- conf.write(utils.render_template('novarc', context))
-
-
def render_quantum_conf():
context = get_rabbit_conf()
if (context and
@@ -132,31 +84,12 @@ def render_plugin_conf():
)
-def keystone_joined():
- url = "http://{}:9696/".format(utils.unit_get('private-address'))
- utils.relation_set(service=qutils.KEYSTONE_SERVICE,
- region=utils.config_get('region'),
- public_url=url,
- admin_url=url,
- internal_url=url)
-
-
-def keystone_changed():
- render_l3_agent_conf()
- render_api_paste_conf()
- render_novarc()
- utils.restart(*qutils.GATEWAY_AGENTS[PLUGIN])
- notify_agents()
- configure_networking()
-
-
def get_keystone_conf():
- for relid in utils.relation_ids('identity-service'):
+ for relid in utils.relation_ids('quantum-network-service'):
for unit in utils.relation_list(relid):
conf = {
- "keystone_host": utils.relation_get('private-address',
+ "keystone_host": utils.relation_get('keystone_host',
unit, relid),
- "token": utils.relation_get('admin_token', unit, relid),
"service_port": utils.relation_get('service_port',
unit, relid),
"auth_port": utils.relation_get('auth_port', unit, relid),
@@ -181,7 +114,6 @@ def db_joined():
def db_changed():
render_plugin_conf()
utils.restart(*qutils.GATEWAY_AGENTS[PLUGIN])
- configure_networking()
def get_db_conf():
@@ -226,33 +158,20 @@ def get_rabbit_conf():
return None
-def nm_joined():
- keystone_conf = get_keystone_conf()
- if keystone_conf:
- utils.relation_set(**keystone_conf) # IGNORE:W0142
- utils.relation_set(plugin=PLUGIN)
-
-
-def notify_agents():
- keystone_conf = get_keystone_conf()
- if keystone_conf:
- for relid in utils.relation_ids('quantum-network-service'):
- utils.relation_set(rid=relid, # IGNORE:W0142
- plugin=PLUGIN,
- **keystone_conf)
+def nm_changed():
+ render_l3_agent_conf()
+ utils.restart(*qutils.GATEWAY_AGENTS[PLUGIN])
utils.do_hooks({
"install": install,
"config-changed": config_changed,
"upgrade-charm": upgrade_charm,
- "identity-service-relation-joined": keystone_joined,
- "identity-service-relation-changed": keystone_changed,
"shared-db-relation-joined": db_joined,
"shared-db-relation-changed": db_changed,
"amqp-relation-joined": amqp_joined,
"amqp-relation-changed": amqp_changed,
- "quantum-network-service-relation-joined": nm_joined,
+ "quantum-network-service-relation-changed": nm_changed,
})
sys.exit(0)
diff --git a/hooks/identity-service-relation-joined b/hooks/identity-service-relation-joined
deleted file mode 120000
index 9416ca6a..00000000
--- a/hooks/identity-service-relation-joined
+++ /dev/null
@@ -1 +0,0 @@
-hooks.py
\ No newline at end of file
diff --git a/hooks/identity-service-relation-changed b/hooks/quantum-network-service-relation-changed
similarity index 100%
rename from hooks/identity-service-relation-changed
rename to hooks/quantum-network-service-relation-changed
diff --git a/hooks/quantum-network-service-relation-joined b/hooks/quantum-network-service-relation-joined
deleted file mode 120000
index 9416ca6a..00000000
--- a/hooks/quantum-network-service-relation-joined
+++ /dev/null
@@ -1 +0,0 @@
-hooks.py
\ No newline at end of file
diff --git a/hooks/quantum_utils.py b/hooks/quantum_utils.py
index adec9adc..423dbe2d 100644
--- a/hooks/quantum_utils.py
+++ b/hooks/quantum_utils.py
@@ -1,12 +1,6 @@
import subprocess
-import shutil
-from utils import juju_log as log, install, start, stop
+from utils import juju_log as log
-try:
- from quantumclient.v2_0 import client
-except ImportError:
- install('python-quantumclient')
- from quantumclient.v2_0 import client
OVS = "ovs"
NVP = "nvp"
@@ -31,11 +25,9 @@ PLUGIN_CONF = {
GATEWAY_PKGS = {
OVS: [
- "quantum-plugin-openvswitch",
"quantum-plugin-openvswitch-agent",
"quantum-l3-agent",
"quantum-dhcp-agent",
- 'quantum-server',
'python-mysqldb'
],
NVP: [
@@ -43,22 +35,9 @@ GATEWAY_PKGS = {
]
}
-PLUGIN_PKGS = {
- OVS: [
- "quantum-plugin-openvswitch-agent"
- ]
- }
-
-PLUGIN_AGENT = {
- OVS: [
- "quantum-plugin-openvswitch-agent"
- ]
- }
-
GATEWAY_AGENTS = {
OVS: [
"quantum-plugin-openvswitch-agent",
- "quantum-server",
"quantum-l3-agent",
"quantum-dhcp-agent"
]
@@ -70,12 +49,14 @@ KEYSTONE_SERVICE = "quantum"
QUANTUM_CONF = "/etc/quantum/quantum.conf"
L3_AGENT_CONF = "/etc/quantum/l3_agent.ini"
-QUANTUM_API_CONF = "/etc/quantum/api-paste.ini"
DHCP_AGENT_CONF = "/etc/quantum/dhcp_agent.ini"
RABBIT_USER = "nova"
RABBIT_VHOST = "nova"
+INT_BRIDGE = "br-int"
+EXT_BRIDGE = "br-ex"
+
def add_bridge(name):
status = subprocess.check_output(["ovs-vsctl", "show"])
@@ -109,104 +90,3 @@ def del_bridge_port(name, port):
'Deleting port {} from bridge {}'.format(port, name))
subprocess.check_call(["ovs-vsctl", "del-port", name, port])
subprocess.check_call(["ip", "link", "set", port, "down"])
-
-
-QEMU_CONF = '/etc/libvirt/qemu.conf'
-
-
-def configure_libvirt():
- log('INFO',
- 'Configuring default permissions in libvirt-bin')
- shutil.copyfile('files/qemu.conf',
- QEMU_CONF)
- stop('libvirt-bin')
- start('libvirt-bin')
-
-
-EXT_BRIDGE = 'br-ex'
-INT_BRIDGE = 'br-int'
-
-
-def configure_ext_net(username,
- password,
- tenant,
- url,
- ext_net_name,
- gateway_ip,
- default_gateway,
- cidr,
- start_floating_ip,
- end_floating_ip):
-
- ext_net_len = cidr.split('/')[1]
- quantum = client.Client(username=username,
- password=password,
- tenant_name=tenant,
- auth_url=url)
-
- networks = quantum.list_networks(name=ext_net_name)
- if len(networks['networks']) == 0:
- log('INFO',
- 'Configuring external bridge')
- network_msg = {
- 'network': {
- 'name': ext_net_name,
- 'router:external': True
- }
- }
- log('INFO',
- 'Creating new external network definition: {}'
- .format(ext_net_name))
- network = quantum.create_network(network_msg)
- log('INFO',
- 'New external network created: {}'
- .format(network['network']['id']))
-
- subnet_msg = {
- 'subnet': {
- 'name': '{}_subnet'.format(ext_net_name),
- 'network_id': network['network']['id'],
- 'enable_dhcp': False,
- 'gateway_ip': default_gateway,
- 'cidr': cidr,
- 'ip_version': 4,
- 'allocation_pools': [
- {
- 'start': start_floating_ip,
- 'end': end_floating_ip
- }
- ]
- }
- }
- log('INFO',
- 'Creating new subnet for {}'.format(ext_net_name))
- subnet = quantum.create_subnet(subnet_msg)
- log('INFO',
- 'New subnet created: {}'.format(subnet['subnet']['id']))
-
- log('INFO',
- 'Creating provider router for external network access')
- router = quantum.create_router({'router': {'name': 'provider-router'}})
- log('INFO',
- 'New router created: {}'.format(router['router']['id']))
-
- log('INFO',
- 'Plugging router into ext_net')
- router = \
- quantum.add_gateway_router(
- router=router['router']['id'],
- body={'network_id': network['network']['id']}
- )
- log('INFO',
- 'Router connected to ext_net')
-
- if gateway_ip:
- log('INFO',
- 'Configuring external bridge connectivity')
- subprocess.check_call(['ip', 'addr', 'flush',
- 'dev', EXT_BRIDGE])
- subprocess.check_call(['ip', 'addr', 'add',
- '{}/{}'.format(gateway_ip, ext_net_len),
- 'dev', EXT_BRIDGE])
- subprocess.check_call(['ip', 'link', 'set',
- EXT_BRIDGE, 'up'])
diff --git a/hooks/utils.py b/hooks/utils.py
index bdd89f18..5ccf6b2d 100644
--- a/hooks/utils.py
+++ b/hooks/utils.py
@@ -62,9 +62,15 @@ CLOUD_ARCHIVE = \
deb http://ubuntu-cloud.archive.canonical.com/ubuntu {} main
"""
+CLOUD_ARCHIVE_POCKETS = {
+ 'folsom': 'precise-updates/folsom',
+ 'folsom/updates': 'precise-updates/folsom',
+ 'folsom/proposed': 'precise-proposed/folsom'
+ }
+
def configure_source():
- source = str(config_get('source'))
+ source = str(config_get('openstack-origin'))
if not source:
return
if source.startswith('ppa:'):
@@ -77,18 +83,22 @@ def configure_source():
install('ubuntu-cloud-keyring')
pocket = source.split(':')[1]
with open('/etc/apt/sources.list.d/cloud-archive.list', 'w') as apt:
- apt.write(CLOUD_ARCHIVE.format(pocket))
- if source.startswith('http:'):
- with open('/etc/apt/sources.list.d/quantum.list', 'w') as apt:
- apt.write("deb " + source + "\n")
- key = config_get('key')
- if key:
+ apt.write(CLOUD_ARCHIVE.format(CLOUD_ARCHIVE_POCKETS[pocket]))
+ if source.startswith('deb'):
+ l = len(source.split('|'))
+ if l == 2:
+ (apt_line, key) = source.split('|')
cmd = [
'apt-key',
'adv', '--keyserver keyserver.ubuntu.com',
'--recv-keys', key
]
subprocess.check_call(cmd)
+ elif l == 1:
+ apt_line = source
+
+ with open('/etc/apt/sources.list.d/quantum.list', 'w') as apt:
+ apt.write(apt_line + "\n")
cmd = [
'apt-get',
'update'
diff --git a/metadata.yaml b/metadata.yaml
index f74769bc..5b6686b4 100644
--- a/metadata.yaml
+++ b/metadata.yaml
@@ -1,5 +1,5 @@
-name: quantum
-summary: Virtual Networking for OpenStack
+name: quantum-gateway
+summary: Virtual Networking for OpenStack - Quantum Gateway
maintainer: James Page
description: |
Quantum is a virtual network service for Openstack, and a part of
@@ -10,6 +10,9 @@ description: |
from Nova VMs). The Quantum API supports extensions to provide
advanced network capabilities (e.g., QoS, ACLs, network monitoring,
etc.)
+ .
+ This charm provides central Quantum networking services as part
+ of a Quantum based Openstack deployment
provides:
quantum-network-service:
interface: quantum
@@ -17,6 +20,4 @@ requires:
shared-db:
interface: mysql-shared
amqp:
- interface: rabbitmq
- identity-service:
- interface: keystone
+ interface: rabbitmq
\ No newline at end of file
diff --git a/revision b/revision
index f5c89552..bb95160c 100644
--- a/revision
+++ b/revision
@@ -1 +1 @@
-32
+33
diff --git a/templates/novarc b/templates/novarc
deleted file mode 100644
index dc7032a4..00000000
--- a/templates/novarc
+++ /dev/null
@@ -1,4 +0,0 @@
-export OS_USERNAME={{ service_username }}
-export OS_PASSWORD={{ service_password }}
-export OS_TENANT_NAME={{ service_tenant }}
-export OS_AUTH_URL=http://{{ keystone_host }}:{{ auth_port }}/v2.0/