Merge "refactor: Drop unsupported configurations and code"

This commit is contained in:
Jenkins 2016-03-03 17:13:05 +00:00 committed by Gerrit Code Review
commit 3e994ce425
36 changed files with 83 additions and 645 deletions

1
.gitignore vendored
View File

@ -3,5 +3,6 @@ bin
tags
.tox
.testrepository
*.pyc
*.sw[nop]
*.pyc

View File

@ -9,7 +9,7 @@ from charmhelpers.contrib.openstack.utils import (
from neutron_utils import (
do_openstack_upgrade,
get_common_package,
NEUTRON_COMMON,
)
from neutron_hooks import (
@ -26,7 +26,7 @@ def openstack_upgrade():
code to run, otherwise a full service level upgrade will fire
on config-changed."""
if do_action_openstack_upgrade(get_common_package(),
if do_action_openstack_upgrade(NEUTRON_COMMON,
do_openstack_upgrade,
CONFIGS):
config_changed()

View File

@ -33,7 +33,8 @@ options:
For series=Trusty we support cloud archives for openstack-release:
* juno
* kilo
* ...
* liberty
* mitaka
NOTE: updating this setting to a source that is known to provide
a later version of OpenStack will trigger a software upgrade.
@ -60,10 +61,10 @@ options:
Network configuration plugin to use for quantum.
Supported values include:
ovs - Open vSwitch
nvp|nsx - Nicira NVP/VMware NSX
ovs - ML2 + Open vSwitch
nsx - VMware NSX
n1kv - Cisco N1kv
ovs-odl - Open vSwitch with OpenDayLight Controller
ovs-odl - ML2 + Open vSwitch with OpenDayLight Controller
ext-port:
type: string
default:
@ -140,14 +141,6 @@ options:
description: |
Optional configuration to support use of linux router
Note that this is used only for Cisco n1kv plugin.
database-user:
default: nova
type: string
description: Username for database access
database:
default: nova
type: string
description: Database name
nagios_context:
default: "juju"
type: string

View File

@ -15,9 +15,6 @@ from charmhelpers.contrib.openstack.context import (
NeutronAPIContext,
config_flags_parser
)
from charmhelpers.contrib.openstack.utils import (
get_os_codename_install_source
)
from charmhelpers.contrib.hahelpers.cluster import(
eligible_leader
)
@ -25,75 +22,29 @@ from charmhelpers.contrib.network.ip import (
get_address_in_network,
)
DB_USER = "quantum"
QUANTUM_DB = "quantum"
NOVA_DB_USER = "nova"
NOVA_DB = "nova"
QUANTUM_OVS_PLUGIN = \
"quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2"
QUANTUM_NVP_PLUGIN = \
"quantum.plugins.nicira.nicira_nvp_plugin.QuantumPlugin.NvpPluginV2"
NEUTRON_OVS_PLUGIN = \
"neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2"
NEUTRON_ML2_PLUGIN = \
"neutron.plugins.ml2.plugin.Ml2Plugin"
NEUTRON_NVP_PLUGIN = \
"neutron.plugins.nicira.nicira_nvp_plugin.NeutronPlugin.NvpPluginV2"
NEUTRON_ML2_PLUGIN = "ml2"
NEUTRON_N1KV_PLUGIN = \
"neutron.plugins.cisco.n1kv.n1kv_neutron_plugin.N1kvNeutronPluginV2"
NEUTRON_NSX_PLUGIN = "vmware"
NEUTRON_OVS_ODL_PLUGIN = "ml2"
NEUTRON = 'neutron'
QUANTUM = 'quantum'
def networking_name():
''' Determine whether neutron or quantum should be used for name '''
if get_os_codename_install_source(config('openstack-origin')) >= 'havana':
return NEUTRON
else:
return QUANTUM
OVS = 'ovs'
NVP = 'nvp'
N1KV = 'n1kv'
NSX = 'nsx'
OVS_ODL = 'ovs-odl'
NEUTRON = 'neutron'
CORE_PLUGIN = {
QUANTUM: {
OVS: QUANTUM_OVS_PLUGIN,
NVP: QUANTUM_NVP_PLUGIN,
},
NEUTRON: {
OVS: NEUTRON_OVS_PLUGIN,
NVP: NEUTRON_NVP_PLUGIN,
N1KV: NEUTRON_N1KV_PLUGIN,
NSX: NEUTRON_NSX_PLUGIN,
OVS_ODL: NEUTRON_OVS_ODL_PLUGIN,
},
OVS: NEUTRON_ML2_PLUGIN,
N1KV: NEUTRON_N1KV_PLUGIN,
NSX: NEUTRON_NSX_PLUGIN,
OVS_ODL: NEUTRON_OVS_ODL_PLUGIN,
}
def remap_plugin(plugin):
''' Remaps plugin name for renames/switches in packaging '''
release = get_os_codename_install_source(config('openstack-origin'))
if plugin == 'nvp' and release >= 'icehouse':
plugin = 'nsx'
elif plugin == 'nsx' and release < 'icehouse':
plugin = 'nvp'
return plugin
def core_plugin():
plugin = remap_plugin(config('plugin'))
if (get_os_codename_install_source(config('openstack-origin')) >=
'icehouse' and plugin == OVS):
return NEUTRON_ML2_PLUGIN
else:
return CORE_PLUGIN[networking_name()][plugin]
return CORE_PLUGIN[config('plugin')]
class L3AgentContext(OSContextGenerator):
@ -189,7 +140,7 @@ SHARED_SECRET = "/etc/{}/secret.txt"
def get_shared_secret():
secret = None
_path = SHARED_SECRET.format(networking_name())
_path = SHARED_SECRET.format(NEUTRON)
if not os.path.exists(_path):
secret = str(uuid.uuid4())
with open(_path, 'w') as secret_file:

View File

@ -5,11 +5,9 @@ from base64 import b64decode
from charmhelpers.core.hookenv import (
log, ERROR, WARNING,
config,
is_relation_made,
relation_get,
relation_set,
relation_ids,
unit_get,
Hooks,
UnregisteredHookError,
status_set,
@ -52,7 +50,6 @@ from neutron_utils import (
do_openstack_upgrade,
get_packages,
get_early_packages,
get_common_package,
get_topics,
git_install,
git_install_requested,
@ -69,6 +66,7 @@ from neutron_utils import (
use_l3ha,
REQUIRED_INTERFACES,
check_optional_relations,
NEUTRON_COMMON,
)
hooks = Hooks()
@ -82,7 +80,7 @@ def install():
src = config('openstack-origin')
if (lsb_release()['DISTRIB_CODENAME'] == 'precise' and
src == 'distro'):
src = 'cloud:precise-folsom'
src = 'cloud:precise-icehouse'
configure_installation_source(src)
status_set('maintenance', 'Installing apt packages')
apt_update(fatal=True)
@ -115,7 +113,7 @@ def config_changed():
CONFIGS.write_all()
elif not config('action-managed-upgrade'):
if openstack_upgrade_available(get_common_package()):
if openstack_upgrade_available(NEUTRON_COMMON):
status_set('maintenance', 'Running openstack upgrade')
do_openstack_upgrade(CONFIGS)
@ -126,10 +124,6 @@ def config_changed():
create_sysctl(sysctl_dict, '/etc/sysctl.d/50-quantum-gateway.conf')
# Re-run joined hooks as config might have changed
for r_id in relation_ids('shared-db'):
db_joined(relation_id=r_id)
for r_id in relation_ids('pgsql-db'):
pgsql_db_joined(relation_id=r_id)
for r_id in relation_ids('amqp'):
amqp_joined(relation_id=r_id)
for r_id in relation_ids('amqp-nova'):
@ -163,32 +157,6 @@ def upgrade_charm():
update_legacy_ha_files(force=True)
@hooks.hook('shared-db-relation-joined')
def db_joined(relation_id=None):
if is_relation_made('pgsql-db'):
# raise error
e = ('Attempting to associate a mysql database when there is already '
'associated a postgresql one')
log(e, level=ERROR)
raise Exception(e)
relation_set(username=config('database-user'),
database=config('database'),
hostname=unit_get('private-address'),
relation_id=relation_id)
@hooks.hook('pgsql-db-relation-joined')
def pgsql_db_joined(relation_id=None):
if is_relation_made('shared-db'):
# raise error
e = ('Attempting to associate a postgresql database when there'
' is already associated a mysql one')
log(e, level=ERROR)
raise Exception(e)
relation_set(database=config('database'),
relation_id=relation_id)
@hooks.hook('amqp-nova-relation-joined')
def amqp_nova_joined(relation_id=None):
relation_set(relation_id=relation_id,
@ -222,13 +190,11 @@ def amqp_departed():
CONFIGS.write_all()
@hooks.hook('shared-db-relation-changed',
'pgsql-db-relation-changed',
'amqp-relation-changed',
@hooks.hook('amqp-relation-changed',
'cluster-relation-changed',
'cluster-relation-joined')
@restart_on_change(restart_map())
def db_amqp_changed():
def amqp_changed():
CONFIGS.write_all()
@ -280,7 +246,7 @@ def stop():
@hooks.hook('zeromq-configuration-relation-joined')
@os_requires_version('kilo', 'neutron-common')
@os_requires_version('kilo', NEUTRON_COMMON)
def zeromq_configuration_relation_joined(relid=None):
relation_set(relation_id=relid,
topics=" ".join(get_topics()),

View File

@ -43,7 +43,6 @@ from charmhelpers.contrib.hahelpers.cluster import (
from charmhelpers.contrib.openstack.utils import (
configure_installation_source,
get_os_codename_install_source,
get_os_codename_package,
git_install_requested,
git_clone_and_install,
git_src_dir,
@ -68,12 +67,9 @@ from charmhelpers.contrib.openstack.context import (
import charmhelpers.contrib.openstack.templating as templating
from charmhelpers.contrib.openstack.neutron import headers_package
from neutron_contexts import (
CORE_PLUGIN, OVS, NVP, NSX, N1KV, OVS_ODL,
NEUTRON, QUANTUM,
networking_name,
CORE_PLUGIN, OVS, NSX, N1KV, OVS_ODL,
NeutronGatewayContext,
L3AgentContext,
remap_plugin,
)
from charmhelpers.contrib.openstack.neutron import (
parse_bridge_mappings,
@ -83,23 +79,12 @@ from copy import deepcopy
def valid_plugin():
return config('plugin') in CORE_PLUGIN[networking_name()]
return config('plugin') in CORE_PLUGIN
QUANTUM_CONF_DIR = '/etc/quantum'
QUANTUM_OVS_PLUGIN_CONF = \
"/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini"
QUANTUM_NVP_PLUGIN_CONF = \
"/etc/quantum/plugins/nicira/nvp.ini"
QUANTUM_PLUGIN_CONF = {
OVS: QUANTUM_OVS_PLUGIN_CONF,
NVP: QUANTUM_NVP_PLUGIN_CONF,
}
NEUTRON_COMMON = 'neutron-common'
NEUTRON_CONF_DIR = '/etc/neutron'
NEUTRON_OVS_PLUGIN_CONF = \
"/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini"
NEUTRON_ML2_PLUGIN_CONF = \
"/etc/neutron/plugins/ml2/ml2_conf.ini"
NEUTRON_OVS_AGENT_CONF = \
@ -110,30 +95,11 @@ NEUTRON_NSX_PLUGIN_CONF = \
"/etc/neutron/plugins/vmware/nsx.ini"
NEUTRON_PLUGIN_CONF = {
OVS: NEUTRON_OVS_PLUGIN_CONF,
NVP: NEUTRON_NVP_PLUGIN_CONF,
OVS: NEUTRON_ML2_PLUGIN_CONF,
NSX: NEUTRON_NSX_PLUGIN_CONF,
}
QUANTUM_GATEWAY_PKGS = {
OVS: [
"quantum-plugin-openvswitch-agent",
"quantum-l3-agent",
"quantum-dhcp-agent",
'python-mysqldb',
'python-psycopg2',
"nova-api-metadata"
],
NVP: [
"openvswitch-switch",
"quantum-dhcp-agent",
'python-mysqldb',
'python-psycopg2',
"nova-api-metadata"
]
}
NEUTRON_GATEWAY_PKGS = {
GATEWAY_PKGS = {
OVS: [
"neutron-plugin-openvswitch-agent",
"openvswitch-switch",
@ -146,7 +112,7 @@ NEUTRON_GATEWAY_PKGS = {
"neutron-plugin-metering-agent",
"neutron-lbaas-agent",
],
NVP: [
NSX: [
"neutron-dhcp-agent",
'python-mysqldb',
'python-psycopg2',
@ -171,16 +137,10 @@ NEUTRON_GATEWAY_PKGS = {
"neutron-lbaas-agent",
],
}
NEUTRON_GATEWAY_PKGS[NSX] = NEUTRON_GATEWAY_PKGS[NVP]
GATEWAY_PKGS = {
QUANTUM: QUANTUM_GATEWAY_PKGS,
NEUTRON: NEUTRON_GATEWAY_PKGS,
}
EARLY_PACKAGES = {
OVS: ['openvswitch-datapath-dkms'],
NVP: [],
NSX: [],
N1KV: [],
OVS_ODL: [],
}
@ -261,8 +221,8 @@ def get_early_packages():
def get_packages():
'''Return a list of packages for install based on the configured plugin'''
plugin = remap_plugin(config('plugin'))
packages = deepcopy(GATEWAY_PKGS[networking_name()][plugin])
plugin = config('plugin')
packages = deepcopy(GATEWAY_PKGS[plugin])
source = get_os_codename_install_source(config('openstack-origin'))
if plugin == 'ovs':
if (source >= 'icehouse' and
@ -304,13 +264,6 @@ def determine_l3ha_packages():
return []
def get_common_package():
if get_os_codename_package('quantum-common', fatal=False) is not None:
return 'quantum-common'
else:
return 'neutron-common'
def use_l3ha():
return NeutronAPIContext()()['enable_l3ha']
@ -347,19 +300,6 @@ NOVA_CONFIG_FILES = {
},
}
QUANTUM_SHARED_CONFIG_FILES = {
QUANTUM_DHCP_AGENT_CONF: {
'hook_contexts': [NeutronGatewayContext()],
'services': ['quantum-dhcp-agent']
},
QUANTUM_METADATA_AGENT_CONF: {
'hook_contexts': [NetworkServiceContext(),
NeutronGatewayContext()],
'services': ['quantum-metadata-agent']
},
}
QUANTUM_SHARED_CONFIG_FILES.update(NOVA_CONFIG_FILES)
NEUTRON_SHARED_CONFIG_FILES = {
NEUTRON_DHCP_AGENT_CONF: {
'hook_contexts': [NeutronGatewayContext()],
@ -377,38 +317,6 @@ NEUTRON_SHARED_CONFIG_FILES = {
}
NEUTRON_SHARED_CONFIG_FILES.update(NOVA_CONFIG_FILES)
QUANTUM_OVS_CONFIG_FILES = {
QUANTUM_CONF: {
'hook_contexts': [context.AMQPContext(ssl_dir=QUANTUM_CONF_DIR),
NeutronGatewayContext(),
SyslogContext(),
context.ZeroMQContext(),
context.NotificationDriverContext()],
'services': ['quantum-l3-agent',
'quantum-dhcp-agent',
'quantum-metadata-agent',
'quantum-plugin-openvswitch-agent']
},
QUANTUM_L3_AGENT_CONF: {
'hook_contexts': [NetworkServiceContext(),
NeutronGatewayContext()],
'services': ['quantum-l3-agent']
},
QUANTUM_OVS_PLUGIN_CONF: {
'hook_contexts': [NeutronGatewayContext()],
'services': ['quantum-plugin-openvswitch-agent']
},
EXT_PORT_CONF: {
'hook_contexts': [ExternalPortContext()],
'services': ['ext-port']
},
PHY_NIC_MTU_CONF: {
'hook_contexts': [PhyNICMTUContext()],
'services': ['os-charm-phy-nic-mtu']
}
}
QUANTUM_OVS_CONFIG_FILES.update(QUANTUM_SHARED_CONFIG_FILES)
NEUTRON_OVS_CONFIG_FILES = {
NEUTRON_CONF: {
'hook_contexts': [context.AMQPContext(ssl_dir=NEUTRON_CONF_DIR),
@ -450,7 +358,7 @@ NEUTRON_OVS_CONFIG_FILES = {
'hook_contexts': [NeutronGatewayContext()],
'services': ['neutron-l3-agent', 'neutron-vpn-agent']
},
NEUTRON_OVS_PLUGIN_CONF: {
NEUTRON_ML2_PLUGIN_CONF: {
'hook_contexts': [NeutronGatewayContext()],
'services': ['neutron-plugin-openvswitch-agent']
},
@ -524,18 +432,7 @@ NEUTRON_OVS_ODL_CONFIG_FILES = {
}
NEUTRON_OVS_ODL_CONFIG_FILES.update(NEUTRON_SHARED_CONFIG_FILES)
QUANTUM_NVP_CONFIG_FILES = {
QUANTUM_CONF: {
'hook_contexts': [context.AMQPContext(ssl_dir=QUANTUM_CONF_DIR),
NeutronGatewayContext(),
SyslogContext()],
'services': ['quantum-dhcp-agent', 'quantum-metadata-agent']
},
}
QUANTUM_NVP_CONFIG_FILES.update(QUANTUM_SHARED_CONFIG_FILES)
NEUTRON_NVP_CONFIG_FILES = {
NEUTRON_NSX_CONFIG_FILES = {
NEUTRON_CONF: {
'hook_contexts': [context.AMQPContext(ssl_dir=NEUTRON_CONF_DIR),
NeutronGatewayContext(),
@ -543,7 +440,7 @@ NEUTRON_NVP_CONFIG_FILES = {
'services': ['neutron-dhcp-agent', 'neutron-metadata-agent']
},
}
NEUTRON_NVP_CONFIG_FILES.update(NEUTRON_SHARED_CONFIG_FILES)
NEUTRON_NSX_CONFIG_FILES.update(NEUTRON_SHARED_CONFIG_FILES)
NEUTRON_N1KV_CONFIG_FILES = {
NEUTRON_CONF: {
@ -564,17 +461,10 @@ NEUTRON_N1KV_CONFIG_FILES = {
NEUTRON_N1KV_CONFIG_FILES.update(NEUTRON_SHARED_CONFIG_FILES)
CONFIG_FILES = {
QUANTUM: {
NVP: QUANTUM_NVP_CONFIG_FILES,
OVS: QUANTUM_OVS_CONFIG_FILES,
},
NEUTRON: {
NSX: NEUTRON_NVP_CONFIG_FILES,
NVP: NEUTRON_NVP_CONFIG_FILES,
OVS: NEUTRON_OVS_CONFIG_FILES,
N1KV: NEUTRON_N1KV_CONFIG_FILES,
OVS_ODL: NEUTRON_OVS_ODL_CONFIG_FILES
},
NSX: NEUTRON_NSX_CONFIG_FILES,
OVS: NEUTRON_OVS_CONFIG_FILES,
N1KV: NEUTRON_N1KV_CONFIG_FILES,
OVS_ODL: NEUTRON_OVS_ODL_CONFIG_FILES
}
SERVICE_RENAMES = {
@ -601,33 +491,26 @@ def remap_service(service_name):
return service_name
def resolve_config_files(name, plugin, release):
def resolve_config_files(plugin, release):
'''
Resolve configuration files and contexts
:param name: neutron or quantum
:param plugin: shortname of plugin e.g. ovs
:param release: openstack release codename
:returns: dict of configuration files, contexts
and associated services
'''
config_files = deepcopy(CONFIG_FILES)
if plugin == 'ovs':
if plugin == OVS:
# NOTE: deal with switch to ML2 plugin for >= icehouse
drop_config = [NEUTRON_ML2_PLUGIN_CONF,
NEUTRON_OVS_AGENT_CONF]
if release >= 'icehouse':
# ovs -> ml2
drop_config = [NEUTRON_OVS_PLUGIN_CONF,
NEUTRON_OVS_AGENT_CONF]
drop_config = [NEUTRON_OVS_AGENT_CONF]
if release >= 'mitaka':
# ml2 -> ovs_agent
drop_config = [NEUTRON_OVS_PLUGIN_CONF,
NEUTRON_ML2_PLUGIN_CONF]
drop_config = [NEUTRON_ML2_PLUGIN_CONF]
for _config in drop_config:
if _config in config_files[name][plugin]:
config_files[name][plugin].pop(_config)
if _config in config_files[plugin]:
config_files[plugin].pop(_config)
if is_relation_made('amqp-nova'):
amqp_nova_ctxt = context.AMQPContext(
@ -638,7 +521,7 @@ def resolve_config_files(name, plugin, release):
amqp_nova_ctxt = context.AMQPContext(
ssl_dir=NOVA_CONF_DIR,
rel_name='amqp')
config_files[name][plugin][NOVA_CONF][
config_files[plugin][NOVA_CONF][
'hook_contexts'].append(amqp_nova_ctxt)
return config_files
@ -646,24 +529,22 @@ def resolve_config_files(name, plugin, release):
def register_configs():
''' Register config files with their respective contexts. '''
release = get_os_codename_install_source(config('openstack-origin'))
plugin = remap_plugin(config('plugin'))
name = networking_name()
config_files = resolve_config_files(name, plugin, release)
plugin = config('plugin')
config_files = resolve_config_files(plugin, release)
configs = templating.OSConfigRenderer(templates_dir=TEMPLATES,
openstack_release=release)
for conf in config_files[name][plugin]:
for conf in config_files[plugin]:
configs.register(conf,
config_files[name][plugin][conf]['hook_contexts'])
config_files[plugin][conf]['hook_contexts'])
return configs
def stop_services():
release = get_os_codename_install_source(config('openstack-origin'))
plugin = remap_plugin(config('plugin'))
name = networking_name()
config_files = resolve_config_files(name, plugin, release)
plugin = config('plugin')
config_files = resolve_config_files(plugin, release)
svcs = set()
for ctxt in config_files[name][config('plugin')].itervalues():
for ctxt in config_files[config('plugin')].itervalues():
for svc in ctxt['services']:
svcs.add(remap_service(svc))
for svc in svcs:
@ -679,11 +560,10 @@ def restart_map():
that should be restarted when file changes.
'''
release = get_os_codename_install_source(config('openstack-origin'))
plugin = remap_plugin(config('plugin'))
name = networking_name()
config_files = resolve_config_files(name, plugin, release)
plugin = config('plugin')
config_files = resolve_config_files(plugin, release)
_map = {}
for f, ctxt in config_files[name][plugin].iteritems():
for f, ctxt in config_files[plugin].iteritems():
svcs = set()
for svc in ctxt['services']:
svcs.add(remap_service(svc))

View File

@ -1 +0,0 @@
neutron_hooks.py

View File

@ -1 +0,0 @@
neutron_hooks.py

View File

@ -1 +0,0 @@
neutron_hooks.py

View File

@ -1 +0,0 @@
neutron_hooks.py

View File

@ -22,10 +22,6 @@ provides:
quantum-network-service:
interface: quantum
requires:
shared-db:
interface: mysql-shared
pgsql-db:
interface: pgsql
amqp:
interface: rabbitmq
amqp-nova:

View File

@ -1,10 +0,0 @@
[DEFAULT]
state_path = /var/lib/quantum
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = quantum.agent.linux.dhcp.Dnsmasq
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf
{% if plugin == 'nvp' -%}
ovs_use_veth = True
enable_metadata_network = True
enable_isolated_metadata = True
{% endif -%}

View File

@ -1,8 +0,0 @@
[DEFAULT]
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
auth_url = {{ service_protocol }}://{{ keystone_host }}:{{ service_port }}/v2.0
auth_region = {{ region }}
admin_tenant_name = {{ service_tenant }}
admin_user = {{ service_username }}
admin_password = {{ service_password }}
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

View File

@ -1,12 +0,0 @@
[DEFAULT]
auth_url = {{ service_protocol }}://{{ keystone_host }}:{{ service_port }}/v2.0
auth_region = {{ region }}
admin_tenant_name = {{ service_tenant }}
admin_user = {{ service_username }}
admin_password = {{ service_password }}
root_helper = sudo quantum-rootwrap /etc/quantum/rootwrap.conf
state_path = /var/lib/quantum
# Gateway runs a metadata API server locally
nova_metadata_ip = {{ local_ip }}
nova_metadata_port = 8775
metadata_proxy_shared_secret = {{ shared_secret }}

View File

@ -1,26 +0,0 @@
[DEFAULT]
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
verbose=True
use_syslog = {{ use_syslog }}
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=metadata
multi_host=True
{% include "parts/database" %}
quantum_metadata_proxy_shared_secret={{ shared_secret }}
service_quantum_metadata_proxy=True
# Access to message bus
rabbit_userid={{ rabbitmq_user }}
rabbit_virtual_host={{ rabbitmq_virtual_host }}
rabbit_host={{ rabbitmq_host }}
rabbit_password={{ rabbitmq_password }}
# Access to quantum API services
network_api_class=nova.network.quantumv2.api.API
quantum_auth_strategy=keystone
quantum_url={{ quantum_url }}
quantum_admin_tenant_name={{ service_tenant }}
quantum_admin_username={{ service_username }}
quantum_admin_password={{ service_password }}
quantum_admin_auth_url={{ service_protocol }}://{{ keystone_host }}:{{ service_port }}/v2.0

View File

@ -1,8 +0,0 @@
[OVS]
local_ip = {{ local_ip }}
tenant_network_type = gre
enable_tunneling = True
tunnel_id_ranges = 1:1000
[AGENT]
polling_interval = 10
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

View File

@ -1,15 +0,0 @@
[DEFAULT]
verbose = {{ verbose }}
debug = {{ debug }}
use_syslog = {{ use_syslog }}
lock_path = /var/lock/quantum
core_plugin = {{ core_plugin }}
rabbit_userid = {{ rabbitmq_user }}
rabbit_virtual_host = {{ rabbitmq_virtual_host }}
rabbit_host = {{ rabbitmq_host }}
rabbit_password = {{ rabbitmq_password }}
control_exchange = quantum
notification_driver = quantum.openstack.common.notifier.list_notifier
list_notifier_drivers = quantum.openstack.common.notifier.rabbit_notifier
[AGENT]
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

View File

@ -1,22 +0,0 @@
[DEFAULT]
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
verbose=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=metadata
multi_host=True
{% include "parts/database" %}
quantum_metadata_proxy_shared_secret={{ shared_secret }}
service_quantum_metadata_proxy=True
# Access to message bus
{% include "parts/rabbitmq" %}
# Access to quantum API services
network_api_class=nova.network.quantumv2.api.API
quantum_auth_strategy=keystone
quantum_url={{ quantum_url }}
quantum_admin_tenant_name={{ service_tenant }}
quantum_admin_username={{ service_username }}
quantum_admin_password={{ service_password }}
quantum_admin_auth_url={{ service_protocol }}://{{ keystone_host }}:{{ service_port }}/v2.0

View File

@ -1,11 +0,0 @@
[DEFAULT]
verbose = {{ verbose }}
debug = {{ debug }}
lock_path = /var/lock/quantum
core_plugin = {{ core_plugin }}
{% include "parts/rabbitmq" %}
control_exchange = quantum
notification_driver = quantum.openstack.common.notifier.list_notifier
list_notifier_drivers = quantum.openstack.common.notifier.rabbit_notifier
[AGENT]
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

View File

@ -1,18 +0,0 @@
###############################################################################
# [ WARNING ]
# Configuration file maintained by Juju. Local changes may be overwritten.
###############################################################################
# Metadata service seems to cache neutron api url from keystone so trigger
# restart if it changes: {{ quantum_url }}
[DEFAULT]
auth_url = {{ service_protocol }}://{{ keystone_host }}:{{ service_port }}/v2.0
auth_region = {{ region }}
admin_tenant_name = {{ service_tenant }}
admin_user = {{ service_username }}
admin_password = {{ service_password }}
root_helper = sudo neutron-rootwrap /etc/neutron/rootwrap.conf
state_path = /var/lib/neutron
# Gateway runs a metadata API server locally
nova_metadata_ip = {{ local_ip }}
nova_metadata_port = 8775
metadata_proxy_shared_secret = {{ shared_secret }}

View File

@ -1,16 +0,0 @@
###############################################################################
# [ WARNING ]
# Configuration file maintained by Juju. Local changes may be overwritten.
###############################################################################
[DEFAULT]
verbose = {{ verbose }}
debug = {{ debug }}
use_syslog = {{ use_syslog }}
lock_path = /var/lock/neutron
core_plugin = {{ core_plugin }}
{% include "parts/rabbitmq" %}
control_exchange = neutron
notification_driver = neutron.openstack.common.notifier.list_notifier
list_notifier_drivers = neutron.openstack.common.notifier.rabbit_notifier
[agent]
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

View File

@ -1,14 +0,0 @@
###############################################################################
# [ WARNING ]
# Configuration file maintained by Juju. Local changes may be overwritten.
###############################################################################
[ovs]
local_ip = {{ local_ip }}
tenant_network_type = gre
enable_tunneling = True
tunnel_id_ranges = 1:1000
[agent]
{% if veth_mtu -%}
veth_mtu = {{ veth_mtu }}
{% endif %}

View File

@ -61,7 +61,6 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
"""Add all of the relations for the services."""
relations = {
'keystone:shared-db': 'mysql:shared-db',
'neutron-gateway:shared-db': 'mysql:shared-db',
'neutron-gateway:amqp': 'rabbitmq-server:amqp',
'nova-cloud-controller:quantum-network-service':
'neutron-gateway:quantum-network-service',
@ -173,6 +172,12 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
tenant_name='admin',
region_name='RegionOne')
def get_private_address(self, unit):
"""Return the private address of the given sentry unit."""
address, retcode = unit.run('unit-get private-address')
assert retcode == 0, 'error retrieving unit private address'
return address.strip()
def test_100_services(self):
"""Verify the expected services are running on the corresponding
service units."""
@ -293,39 +298,6 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
if ret:
amulet.raise_status(amulet.FAIL, msg=ret)
def test_200_neutron_gateway_mysql_shared_db_relation(self):
"""Verify the neutron-gateway to mysql shared-db relation data"""
u.log.debug('Checking neutron-gateway:mysql db relation data...')
unit = self.neutron_gateway_sentry
relation = ['shared-db', 'mysql:shared-db']
expected = {
'private-address': u.valid_ip,
'database': 'nova',
'username': 'nova',
'hostname': u.valid_ip
}
ret = u.validate_relation_data(unit, relation, expected)
if ret:
message = u.relation_error('neutron-gateway shared-db', ret)
amulet.raise_status(amulet.FAIL, msg=message)
def test_201_mysql_neutron_gateway_shared_db_relation(self):
"""Verify the mysql to neutron-gateway shared-db relation data"""
u.log.debug('Checking mysql:neutron-gateway db relation data...')
unit = self.mysql_sentry
relation = ['shared-db', 'neutron-gateway:shared-db']
expected = {
'private-address': u.valid_ip,
'password': u.not_null,
'db_host': u.valid_ip
}
ret = u.validate_relation_data(unit, relation, expected)
if ret:
message = u.relation_error('mysql shared-db', ret)
amulet.raise_status(amulet.FAIL, msg=message)
def test_202_neutron_gateway_rabbitmq_amqp_relation(self):
"""Verify the neutron-gateway to rabbitmq-server amqp relation data"""
u.log.debug('Checking neutron-gateway:rmq amqp relation data...')
@ -575,7 +547,7 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
'DEFAULT': {
'verbose': 'False',
'debug': 'False',
'core_plugin': 'neutron.plugins.ml2.plugin.Ml2Plugin',
'core_plugin': 'ml2',
'control_exchange': 'neutron',
'notification_driver': 'neutron.openstack.common.notifier.'
'list_notifier',
@ -624,7 +596,6 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
unit = self.neutron_gateway_sentry
conf = '/etc/neutron/plugins/ml2/ml2_conf.ini'
ng_db_rel = unit.relation('shared-db', 'mysql:shared-db')
expected = {
'ml2': {
@ -640,7 +611,7 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
},
'ovs': {
'enable_tunneling': 'True',
'local_ip': ng_db_rel['private-address']
'local_ip': self.get_private_address(unit)
},
'agent': {
'tunnel_types': 'gre',
@ -787,8 +758,6 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
unit = self.neutron_gateway_sentry
ep = self.keystone.service_catalog.url_for(service_type='identity',
endpoint_type='publicURL')
ng_db_rel = unit.relation('shared-db',
'mysql:shared-db')
nova_cc_relation = self.nova_cc_sentry.relation(
'quantum-network-service',
'neutron-gateway:quantum-network-service')
@ -802,7 +771,7 @@ class NeutronGatewayBasicDeployment(OpenStackAmuletDeployment):
'root_helper': 'sudo neutron-rootwrap '
'/etc/neutron/rootwrap.conf',
'state_path': '/var/lib/neutron',
'nova_metadata_ip': ng_db_rel['private-address'],
'nova_metadata_ip': self.get_private_address(unit),
'nova_metadata_port': '8775',
'cache_url': 'memory://?default_ttl=5'
}

View File

@ -8,6 +8,7 @@ setenv = VIRTUAL_ENV={envdir}
install_command =
pip install --allow-unverified python-apt {opts} {packages}
commands = ostestr {posargs}
sitepackages = True
[testenv:py27]
basepython = python2.7

View File

@ -14,7 +14,6 @@ with patch('charmhelpers.core.hookenv.status_set'):
TO_PATCH = [
'do_openstack_upgrade',
'config_changed',
'get_common_package',
]

View File

@ -15,7 +15,6 @@ TO_PATCH = [
'apt_install',
'config',
'eligible_leader',
'get_os_codename_install_source',
'unit_get',
]
@ -132,7 +131,6 @@ class TestNeutronGatewayContext(CharmTestCase):
_rids.return_value = ['neutron-plugin-api:0']
_runits.return_value = ['neutron-api/0']
_rget.side_effect = lambda *args, **kwargs: rdata
self.get_os_codename_install_source.return_value = 'folsom'
_host_ip.return_value = '10.5.0.1'
_secret.return_value = 'testsecret'
ctxt = neutron_contexts.NeutronGatewayContext()()
@ -142,8 +140,7 @@ class TestNeutronGatewayContext(CharmTestCase):
'enable_l3ha': True,
'local_ip': '10.5.0.1',
'instance_mtu': 1420,
'core_plugin': "quantum.plugins.openvswitch.ovs_quantum_plugin."
"OVSQuantumPluginV2",
'core_plugin': "ml2",
'plugin': 'ovs',
'debug': False,
'verbose': True,
@ -177,7 +174,7 @@ class TestSharedSecret(CharmTestCase):
self.assertEquals(neutron_contexts.get_shared_secret(),
'secret_thing')
_open.assert_called_with(
neutron_contexts.SHARED_SECRET.format('quantum'), 'w')
neutron_contexts.SHARED_SECRET.format('neutron'), 'w')
_file.write.assert_called_with('secret_thing')
@patch('os.path')
@ -188,7 +185,7 @@ class TestSharedSecret(CharmTestCase):
self.assertEquals(neutron_contexts.get_shared_secret(),
'secret_thing')
_open.assert_called_with(
neutron_contexts.SHARED_SECRET.format('quantum'), 'r')
neutron_contexts.SHARED_SECRET.format('neutron'), 'r')
class TestHostIP(CharmTestCase):
@ -245,36 +242,7 @@ class TestMisc(CharmTestCase):
self).setUp(neutron_contexts,
TO_PATCH)
def test_lt_havana(self):
self.get_os_codename_install_source.return_value = 'folsom'
self.assertEquals(neutron_contexts.networking_name(), 'quantum')
def test_ge_havana(self):
self.get_os_codename_install_source.return_value = 'havana'
self.assertEquals(neutron_contexts.networking_name(), 'neutron')
def test_remap_plugin(self):
self.get_os_codename_install_source.return_value = 'havana'
self.assertEquals(neutron_contexts.remap_plugin('nvp'), 'nvp')
self.assertEquals(neutron_contexts.remap_plugin('nsx'), 'nvp')
def test_remap_plugin_icehouse(self):
self.get_os_codename_install_source.return_value = 'icehouse'
self.assertEquals(neutron_contexts.remap_plugin('nvp'), 'nsx')
self.assertEquals(neutron_contexts.remap_plugin('nsx'), 'nsx')
def test_remap_plugin_noop(self):
self.get_os_codename_install_source.return_value = 'icehouse'
self.assertEquals(neutron_contexts.remap_plugin('ovs'), 'ovs')
def test_core_plugin(self):
self.get_os_codename_install_source.return_value = 'havana'
self.config.return_value = 'ovs'
self.assertEquals(neutron_contexts.core_plugin(),
neutron_contexts.NEUTRON_OVS_PLUGIN)
def test_core_plugin_ml2(self):
self.get_os_codename_install_source.return_value = 'icehouse'
self.config.return_value = 'ovs'
self.assertEquals(neutron_contexts.core_plugin(),
neutron_contexts.NEUTRON_ML2_PLUGIN)

View File

@ -35,15 +35,12 @@ TO_PATCH = [
'configure_ovs',
'relation_set',
'relation_ids',
'unit_get',
'relation_get',
'install_ca_cert',
'get_common_package',
'execd_preinstall',
'lsb_release',
'stop_services',
'b64decode',
'is_relation_made',
'create_sysctl',
'update_nrpe_config',
'update_legacy_ha_files',
@ -98,7 +95,7 @@ class TestQuantumHooks(CharmTestCase):
self.test_config.set('openstack-origin', 'distro')
self._call_hook('install')
self.configure_installation_source.assert_called_with(
'cloud:precise-folsom'
'cloud:precise-icehouse'
)
@patch('sys.exit')
@ -152,16 +149,12 @@ class TestQuantumHooks(CharmTestCase):
self.openstack_upgrade_available.return_value = True
self.valid_plugin.return_value = True
self.relation_ids.side_effect = mock_relids
_db_joined = self.patch('db_joined')
_pgsql_db_joined = self.patch('pgsql_db_joined')
_amqp_joined = self.patch('amqp_joined')
_amqp_nova_joined = self.patch('amqp_nova_joined')
_zmq_joined = self.patch('zeromq_configuration_relation_joined')
self._call_hook('config-changed')
self.assertTrue(self.do_openstack_upgrade.called)
self.assertTrue(self.configure_ovs.called)
self.assertTrue(_db_joined.called)
self.assertTrue(_pgsql_db_joined.called)
self.assertTrue(_amqp_joined.called)
self.assertTrue(_amqp_nova_joined.called)
self.assertTrue(_zmq_joined.called)
@ -208,8 +201,6 @@ class TestQuantumHooks(CharmTestCase):
self.openstack_upgrade_available.return_value = True
self.valid_plugin.return_value = True
self.relation_ids.side_effect = mock_relids
_db_joined = self.patch('db_joined')
_pgsql_db_joined = self.patch('pgsql_db_joined')
_amqp_joined = self.patch('amqp_joined')
_amqp_nova_joined = self.patch('amqp_nova_joined')
_zmq_joined = self.patch('zeromq_configuration_relation_joined')
@ -233,8 +224,6 @@ class TestQuantumHooks(CharmTestCase):
self.git_install.assert_called_with(projects_yaml)
self.assertFalse(self.do_openstack_upgrade.called)
self.assertTrue(self.configure_ovs.called)
self.assertTrue(_db_joined.called)
self.assertTrue(_pgsql_db_joined.called)
self.assertTrue(_amqp_joined.called)
self.assertTrue(_amqp_nova_joined.called)
self.assertTrue(_zmq_joined.called)
@ -247,44 +236,6 @@ class TestQuantumHooks(CharmTestCase):
self.assertTrue(_install.called)
self.assertTrue(_config_changed.called)
def test_db_joined(self):
self.is_relation_made.return_value = False
self.unit_get.return_value = 'myhostname'
self._call_hook('shared-db-relation-joined')
self.relation_set.assert_called_with(
username='nova',
database='nova',
hostname='myhostname',
relation_id=None
)
def test_db_joined_with_postgresql(self):
self.is_relation_made.return_value = True
with self.assertRaises(Exception) as context:
hooks.db_joined()
self.assertEqual(context.exception.message,
'Attempting to associate a mysql database when there '
'is already associated a postgresql one')
def test_postgresql_db_joined(self):
self.unit_get.return_value = 'myhostname'
self.is_relation_made.return_value = False
self._call_hook('pgsql-db-relation-joined')
self.relation_set.assert_called_with(
database='nova',
relation_id=None
)
def test_postgresql_joined_with_db(self):
self.is_relation_made.return_value = True
with self.assertRaises(Exception) as context:
hooks.pgsql_db_joined()
self.assertEqual(context.exception.message,
'Attempting to associate a postgresql database when'
' there is already associated a mysql one')
def test_amqp_joined(self):
self._call_hook('amqp-relation-joined')
self.relation_set.assert_called_with(
@ -325,14 +276,6 @@ class TestQuantumHooks(CharmTestCase):
self._call_hook('amqp-nova-relation-changed')
self.assertTrue(self.CONFIGS.write_all.called)
def test_shared_db_changed(self):
self._call_hook('shared-db-relation-changed')
self.assertTrue(self.CONFIGS.write_all.called)
def test_pgsql_db_changed(self):
self._call_hook('pgsql-db-relation-changed')
self.assertTrue(self.CONFIGS.write_all.called)
def test_nm_changed(self):
self.relation_get.return_value = "cert"
self._call_hook('quantum-network-service-relation-changed')

View File

@ -22,7 +22,6 @@ import charmhelpers.core.hookenv as hookenv
TO_PATCH = [
'config',
'get_os_codename_install_source',
'get_os_codename_package',
'apt_update',
'apt_upgrade',
'apt_install',
@ -30,7 +29,6 @@ TO_PATCH = [
'log',
'add_bridge',
'add_bridge_port',
'networking_name',
'headers_package',
'full_restart',
'service_running',
@ -41,7 +39,6 @@ TO_PATCH = [
'service_stop',
'determine_dkms_package',
'service_restart',
'remap_plugin',
'is_relation_made',
'lsb_release',
'mkdir',
@ -59,7 +56,7 @@ openstack_origin_git = \
branch: stable/juno}"""
class TestQuantumUtils(CharmTestCase):
class TestNeutronUtils(CharmTestCase):
def assertDictEqual(self, d1, d2, msg=None): # assertEqual uses for dicts
for k, v1 in d1.iteritems():
@ -72,15 +69,10 @@ class TestQuantumUtils(CharmTestCase):
self.assertEqual(v1, v2, msg)
def setUp(self):
super(TestQuantumUtils, self).setUp(neutron_utils, TO_PATCH)
self.networking_name.return_value = 'neutron'
super(TestNeutronUtils, self).setUp(neutron_utils, TO_PATCH)
self.headers_package.return_value = 'linux-headers-2.6.18'
self._set_distrib_codename('trusty')
def noop(value):
return value
self.remap_plugin.side_effect = noop
def tearDown(self):
# Reset cached cache
hookenv.cache = {}
@ -91,8 +83,6 @@ class TestQuantumUtils(CharmTestCase):
def test_valid_plugin(self):
self.config.return_value = 'ovs'
self.assertTrue(neutron_utils.valid_plugin())
self.config.return_value = 'nvp'
self.assertTrue(neutron_utils.valid_plugin())
self.config.return_value = 'nsx'
self.assertTrue(neutron_utils.valid_plugin())
@ -108,8 +98,8 @@ class TestQuantumUtils(CharmTestCase):
neutron_utils.get_early_packages(),
['openvswitch-datapath-dkms', 'linux-headers-2.6.18'])
def test_get_early_packages_nvp(self):
self.config.return_value = 'nvp'
def test_get_early_packages_nsx(self):
self.config.return_value = 'nsx'
self.assertEquals(
neutron_utils.get_early_packages(),
[])
@ -119,13 +109,6 @@ class TestQuantumUtils(CharmTestCase):
self.assertEquals(neutron_utils.get_early_packages(),
[])
@patch.object(neutron_utils, 'git_install_requested')
def test_get_packages_ovs(self, git_requested):
git_requested.return_value = False
self.config.return_value = 'ovs'
self.get_os_codename_install_source.return_value = 'havana'
self.assertNotEqual(neutron_utils.get_packages(), [])
@patch.object(neutron_utils, 'git_install_requested')
def test_get_packages_ovs_icehouse(self, git_requested):
git_requested.return_value = False
@ -297,7 +280,7 @@ class TestQuantumUtils(CharmTestCase):
neutron_utils.NOVA_CONF,
neutron_utils.NEUTRON_CONF,
neutron_utils.NEUTRON_L3_AGENT_CONF,
neutron_utils.NEUTRON_OVS_PLUGIN_CONF,
neutron_utils.NEUTRON_ML2_PLUGIN_CONF,
neutron_utils.EXT_PORT_CONF]
for conf in confs:
configs.register.assert_any_call(conf, ANY)
@ -326,7 +309,7 @@ class TestQuantumUtils(CharmTestCase):
neutron_utils.NOVA_CONF,
neutron_utils.NEUTRON_CONF,
neutron_utils.NEUTRON_L3_AGENT_CONF,
neutron_utils.NEUTRON_OVS_PLUGIN_CONF,
neutron_utils.NEUTRON_ML2_PLUGIN_CONF,
neutron_utils.EXT_PORT_CONF]
for conf in confs:
configs.register.assert_any_call(conf, ANY)
@ -347,7 +330,7 @@ class TestQuantumUtils(CharmTestCase):
neutron_utils.NEUTRON_DNSMASQ_CONF: ['neutron-dhcp-agent'],
neutron_utils.NEUTRON_LBAAS_AGENT_CONF:
['neutron-lbaas-agent'],
neutron_utils.NEUTRON_OVS_PLUGIN_CONF:
neutron_utils.NEUTRON_ML2_PLUGIN_CONF:
['neutron-plugin-openvswitch-agent'],
neutron_utils.NEUTRON_METADATA_AGENT_CONF:
['neutron-metadata-agent'],
@ -437,17 +420,6 @@ class TestQuantumUtils(CharmTestCase):
self.assertDictEqual(neutron_utils.restart_map(), ex_map)
def test_register_configs_nvp(self):
self.config.return_value = 'nvp'
self.is_relation_made.return_value = False
configs = neutron_utils.register_configs()
confs = [neutron_utils.NEUTRON_DHCP_AGENT_CONF,
neutron_utils.NEUTRON_METADATA_AGENT_CONF,
neutron_utils.NOVA_CONF,
neutron_utils.NEUTRON_CONF]
for conf in confs:
configs.register.assert_any_call(conf, ANY)
def test_register_configs_nsx(self):
self.config.return_value = 'nsx'
configs = neutron_utils.register_configs()
@ -458,19 +430,6 @@ class TestQuantumUtils(CharmTestCase):
for conf in confs:
configs.register.assert_any_call(conf, ANY)
def test_stop_services_nvp(self):
self.config.return_value = 'nvp'
neutron_utils.stop_services()
calls = [
call('neutron-dhcp-agent'),
call('nova-api-metadata'),
call('neutron-metadata-agent')
]
self.service_stop.assert_has_calls(
calls,
any_order=True,
)
def test_stop_services_ovs(self):
self.config.return_value = 'ovs'
neutron_utils.stop_services()
@ -484,42 +443,18 @@ class TestQuantumUtils(CharmTestCase):
any_order=True,
)
def test_restart_map_nvp(self):
self.config.return_value = 'nvp'
ex_map = {
neutron_utils.NEUTRON_DHCP_AGENT_CONF: ['neutron-dhcp-agent'],
neutron_utils.NEUTRON_DNSMASQ_CONF: ['neutron-dhcp-agent'],
neutron_utils.NOVA_CONF: ['nova-api-metadata'],
neutron_utils.NEUTRON_CONF: ['neutron-dhcp-agent',
'neutron-metadata-agent'],
neutron_utils.NEUTRON_METADATA_AGENT_CONF:
['neutron-metadata-agent'],
}
self.assertEquals(neutron_utils.restart_map(), ex_map)
def test_register_configs_pre_install(self):
self.config.return_value = 'ovs'
self.is_relation_made.return_value = False
self.networking_name.return_value = 'quantum'
configs = neutron_utils.register_configs()
confs = [neutron_utils.QUANTUM_DHCP_AGENT_CONF,
neutron_utils.QUANTUM_METADATA_AGENT_CONF,
neutron_utils.NOVA_CONF,
neutron_utils.QUANTUM_CONF,
neutron_utils.QUANTUM_L3_AGENT_CONF,
neutron_utils.QUANTUM_OVS_PLUGIN_CONF,
confs = [neutron_utils.NOVA_CONF,
neutron_utils.NEUTRON_CONF,
neutron_utils.NEUTRON_L3_AGENT_CONF,
neutron_utils.NEUTRON_ML2_PLUGIN_CONF,
neutron_utils.EXT_PORT_CONF]
for conf in confs:
configs.register.assert_any_call(conf, ANY)
def test_get_common_package_quantum(self):
self.get_os_codename_package.return_value = 'folsom'
self.assertEquals(neutron_utils.get_common_package(), 'quantum-common')
def test_get_common_package_neutron(self):
self.get_os_codename_package.return_value = None
self.assertEquals(neutron_utils.get_common_package(), 'neutron-common')
def test_copy_file_without_update(self):
src = 'dummy_source_dir/dummy_file'
dst = 'dummy_des_dir'
@ -707,12 +642,12 @@ cluster2 = ['cluster2-machine1.internal', 'cluster2-machine2.internal'
'cluster2-machine3.internal']
class TestQuantumAgentReallocation(CharmTestCase):
class TestNeutronAgentReallocation(CharmTestCase):
def setUp(self):
if not neutronclient:
raise self.skipTest('Skipping, no neutronclient installed')
super(TestQuantumAgentReallocation, self).setUp(neutron_utils,
super(TestNeutronAgentReallocation, self).setUp(neutron_utils,
TO_PATCH)
def tearDown(self):