[smukkamala,narindergupta,r=jamespage] Add support for Nuage VSP.
This commit is contained in:
commit
8f44171541
@ -320,14 +320,15 @@ def db_ssl(rdata, ctxt, ssl_dir):
|
|||||||
|
|
||||||
|
|
||||||
class IdentityServiceContext(OSContextGenerator):
|
class IdentityServiceContext(OSContextGenerator):
|
||||||
interfaces = ['identity-service']
|
|
||||||
|
|
||||||
def __init__(self, service=None, service_user=None):
|
def __init__(self, service=None, service_user=None, rel_name='identity-service'):
|
||||||
self.service = service
|
self.service = service
|
||||||
self.service_user = service_user
|
self.service_user = service_user
|
||||||
|
self.rel_name = rel_name
|
||||||
|
self.interfaces = [self.rel_name]
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
log('Generating template context for identity-service', level=DEBUG)
|
log('Generating template context for ' + self.rel_name, level=DEBUG)
|
||||||
ctxt = {}
|
ctxt = {}
|
||||||
|
|
||||||
if self.service and self.service_user:
|
if self.service and self.service_user:
|
||||||
@ -341,7 +342,7 @@ class IdentityServiceContext(OSContextGenerator):
|
|||||||
|
|
||||||
ctxt['signing_dir'] = cachedir
|
ctxt['signing_dir'] = cachedir
|
||||||
|
|
||||||
for rid in relation_ids('identity-service'):
|
for rid in relation_ids(self.rel_name):
|
||||||
for unit in related_units(rid):
|
for unit in related_units(rid):
|
||||||
rdata = relation_get(rid=rid, unit=unit)
|
rdata = relation_get(rid=rid, unit=unit)
|
||||||
serv_host = rdata.get('service_host')
|
serv_host = rdata.get('service_host')
|
||||||
@ -807,6 +808,19 @@ class NeutronContext(OSContextGenerator):
|
|||||||
|
|
||||||
return ovs_ctxt
|
return ovs_ctxt
|
||||||
|
|
||||||
|
def nuage_ctxt(self):
|
||||||
|
driver = neutron_plugin_attribute(self.plugin, 'driver',
|
||||||
|
self.network_manager)
|
||||||
|
config = neutron_plugin_attribute(self.plugin, 'config',
|
||||||
|
self.network_manager)
|
||||||
|
nuage_ctxt = {'core_plugin': driver,
|
||||||
|
'neutron_plugin': 'vsp',
|
||||||
|
'neutron_security_groups': self.neutron_security_groups,
|
||||||
|
'local_ip': unit_private_ip(),
|
||||||
|
'config': config}
|
||||||
|
|
||||||
|
return nuage_ctxt
|
||||||
|
|
||||||
def nvp_ctxt(self):
|
def nvp_ctxt(self):
|
||||||
driver = neutron_plugin_attribute(self.plugin, 'driver',
|
driver = neutron_plugin_attribute(self.plugin, 'driver',
|
||||||
self.network_manager)
|
self.network_manager)
|
||||||
@ -890,6 +904,8 @@ class NeutronContext(OSContextGenerator):
|
|||||||
ctxt.update(self.n1kv_ctxt())
|
ctxt.update(self.n1kv_ctxt())
|
||||||
elif self.plugin == 'Calico':
|
elif self.plugin == 'Calico':
|
||||||
ctxt.update(self.calico_ctxt())
|
ctxt.update(self.calico_ctxt())
|
||||||
|
elif self.plugin == 'vsp':
|
||||||
|
ctxt.update(self.nuage_ctxt())
|
||||||
|
|
||||||
alchemy_flags = config('neutron-alchemy-flags')
|
alchemy_flags = config('neutron-alchemy-flags')
|
||||||
if alchemy_flags:
|
if alchemy_flags:
|
||||||
|
@ -180,6 +180,19 @@ def neutron_plugins():
|
|||||||
'nova-api-metadata']],
|
'nova-api-metadata']],
|
||||||
'server_packages': ['neutron-server', 'calico-control'],
|
'server_packages': ['neutron-server', 'calico-control'],
|
||||||
'server_services': ['neutron-server']
|
'server_services': ['neutron-server']
|
||||||
|
},
|
||||||
|
'vsp': {
|
||||||
|
'config': '/etc/neutron/plugins/nuage/nuage_plugin.ini',
|
||||||
|
'driver': 'neutron.plugins.nuage.plugin.NuagePlugin',
|
||||||
|
'contexts': [
|
||||||
|
context.SharedDBContext(user=config('neutron-database-user'),
|
||||||
|
database=config('neutron-database'),
|
||||||
|
relation_prefix='neutron',
|
||||||
|
ssl_dir=NEUTRON_CONF_DIR)],
|
||||||
|
'services': [],
|
||||||
|
'packages': [],
|
||||||
|
'server_packages': ['neutron-server', 'neutron-plugin-nuage'],
|
||||||
|
'server_services': ['neutron-server']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if release >= 'icehouse':
|
if release >= 'icehouse':
|
||||||
|
@ -510,8 +510,10 @@ def git_clone_and_install(projects_yaml, core_project):
|
|||||||
repository: 'git://git.openstack.org/openstack/requirements.git',
|
repository: 'git://git.openstack.org/openstack/requirements.git',
|
||||||
branch: 'stable/icehouse'}
|
branch: 'stable/icehouse'}
|
||||||
directory: /mnt/openstack-git
|
directory: /mnt/openstack-git
|
||||||
|
http_proxy: http://squid.internal:3128
|
||||||
|
https_proxy: https://squid.internal:3128
|
||||||
|
|
||||||
The directory key is optional.
|
The directory, http_proxy, and https_proxy keys are optional.
|
||||||
"""
|
"""
|
||||||
global requirements_dir
|
global requirements_dir
|
||||||
parent_dir = '/mnt/openstack-git'
|
parent_dir = '/mnt/openstack-git'
|
||||||
@ -522,6 +524,12 @@ def git_clone_and_install(projects_yaml, core_project):
|
|||||||
projects = yaml.load(projects_yaml)
|
projects = yaml.load(projects_yaml)
|
||||||
_git_validate_projects_yaml(projects, core_project)
|
_git_validate_projects_yaml(projects, core_project)
|
||||||
|
|
||||||
|
if 'http_proxy' in projects.keys():
|
||||||
|
os.environ['http_proxy'] = projects['http_proxy']
|
||||||
|
|
||||||
|
if 'https_proxy' in projects.keys():
|
||||||
|
os.environ['https_proxy'] = projects['https_proxy']
|
||||||
|
|
||||||
if 'directory' in projects.keys():
|
if 'directory' in projects.keys():
|
||||||
parent_dir = projects['directory']
|
parent_dir = projects['directory']
|
||||||
|
|
||||||
|
@ -20,11 +20,13 @@
|
|||||||
# Authors:
|
# Authors:
|
||||||
# Charm Helpers Developers <juju@lists.ubuntu.com>
|
# Charm Helpers Developers <juju@lists.ubuntu.com>
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import yaml
|
import yaml
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import errno
|
||||||
from subprocess import CalledProcessError
|
from subprocess import CalledProcessError
|
||||||
|
|
||||||
import six
|
import six
|
||||||
@ -87,7 +89,18 @@ def log(message, level=None):
|
|||||||
if not isinstance(message, six.string_types):
|
if not isinstance(message, six.string_types):
|
||||||
message = repr(message)
|
message = repr(message)
|
||||||
command += [message]
|
command += [message]
|
||||||
subprocess.call(command)
|
# Missing juju-log should not cause failures in unit tests
|
||||||
|
# Send log output to stderr
|
||||||
|
try:
|
||||||
|
subprocess.call(command)
|
||||||
|
except OSError as e:
|
||||||
|
if e.errno == errno.ENOENT:
|
||||||
|
if level:
|
||||||
|
message = "{}: {}".format(level, message)
|
||||||
|
message = "juju-log: {}".format(message)
|
||||||
|
print(message, file=sys.stderr)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
class Serializable(UserDict):
|
class Serializable(UserDict):
|
||||||
|
154
templates/icehouse/nova.conf
Normal file
154
templates/icehouse/nova.conf
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
# icehouse
|
||||||
|
###############################################################################
|
||||||
|
# [ WARNING ]
|
||||||
|
# Configuration file maintained by Juju. Local changes may be overwritten.
|
||||||
|
{% if restart_trigger -%}
|
||||||
|
# restart trigger: {{ restart_trigger }}
|
||||||
|
{% endif -%}
|
||||||
|
###############################################################################
|
||||||
|
[DEFAULT]
|
||||||
|
dhcpbridge_flagfile=/etc/nova/nova.conf
|
||||||
|
dhcpbridge=/usr/bin/nova-dhcpbridge
|
||||||
|
logdir=/var/log/nova
|
||||||
|
state_path=/var/lib/nova
|
||||||
|
lock_path=/var/lock/nova
|
||||||
|
force_dhcp_release=True
|
||||||
|
|
||||||
|
{% if arch == 'aarch64' -%}
|
||||||
|
libvirt_use_virtio_for_bridges=False
|
||||||
|
libvirt_disk_prefix=vd
|
||||||
|
{% else -%}
|
||||||
|
libvirt_use_virtio_for_bridges=True
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
verbose=True
|
||||||
|
use_syslog = {{ use_syslog }}
|
||||||
|
ec2_private_dns_show_ip=True
|
||||||
|
api_paste_config=/etc/nova/api-paste.ini
|
||||||
|
enabled_apis=ec2,osapi_compute,metadata
|
||||||
|
auth_strategy=keystone
|
||||||
|
compute_driver=libvirt.LibvirtDriver
|
||||||
|
my_ip = {{ host_ip }}
|
||||||
|
|
||||||
|
{% include "parts/database" %}
|
||||||
|
|
||||||
|
{% include "parts/rabbitmq" %}
|
||||||
|
|
||||||
|
{% if glance_api_servers -%}
|
||||||
|
glance_api_servers = {{ glance_api_servers }}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if console_vnc_type -%}
|
||||||
|
vnc_enabled = True
|
||||||
|
novnc_enabled = True
|
||||||
|
vnc_keymap = {{ console_keymap }}
|
||||||
|
vncserver_listen = 0.0.0.0
|
||||||
|
vncserver_proxyclient_address = {{ console_listen_addr }}
|
||||||
|
{% if console_access_protocol == 'novnc' or console_access_protocol == 'vnc' -%}
|
||||||
|
novncproxy_base_url = {{ novnc_proxy_address }}
|
||||||
|
{% endif -%}
|
||||||
|
{% if console_access_protocol == 'xvpvnc' or console_access_protocol == 'vnc' -%}
|
||||||
|
xvpvncproxy_port = {{ xvpvnc_proxy_port }}
|
||||||
|
xvpvncproxy_host = {{ xvpvnc_proxy_host }}
|
||||||
|
xvpvncproxy_base_url = {{ xvpvnc_proxy_address }}
|
||||||
|
{% endif -%}
|
||||||
|
{% else -%}
|
||||||
|
vnc_enabled = False
|
||||||
|
novnc_enabled = False
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and neutron_plugin == 'ovs' -%}
|
||||||
|
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver
|
||||||
|
{% if neutron_security_groups -%}
|
||||||
|
security_group_api = neutron
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
|
||||||
|
network_api_class=nova.network.neutronv2.api.API
|
||||||
|
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver
|
||||||
|
neutron_ovs_bridge=alubr0
|
||||||
|
security_group_api=nova
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
|
||||||
|
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
|
||||||
|
security_group_api = neutron
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and neutron_plugin == 'Calico' -%}
|
||||||
|
security_group_api = neutron
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if network_manager_config -%}
|
||||||
|
{% for key, value in network_manager_config.iteritems() -%}
|
||||||
|
{{ key }} = {{ value }}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if network_manager == 'neutron' -%}
|
||||||
|
network_api_class = nova.network.neutronv2.api.API
|
||||||
|
{% else -%}
|
||||||
|
network_manager = nova.network.manager.FlatDHCPManager
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if network_device_mtu -%}
|
||||||
|
network_device_mtu = {{ network_device_mtu }}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if volume_service -%}
|
||||||
|
volume_api_class = nova.volume.cinder.API
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if user_config_flags -%}
|
||||||
|
{% for key, value in user_config_flags.iteritems() -%}
|
||||||
|
{{ key }} = {{ value }}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if live_migration_uri -%}
|
||||||
|
live_migration_uri = {{ live_migration_uri }}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if instances_path -%}
|
||||||
|
instances_path = {{ instances_path }}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if sections and 'DEFAULT' in sections -%}
|
||||||
|
{% for key, value in sections['DEFAULT'] -%}
|
||||||
|
{{ key }} = {{ value }}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if console_access_protocol == 'spice' -%}
|
||||||
|
[spice]
|
||||||
|
agent_enabled = True
|
||||||
|
enabled = True
|
||||||
|
html5proxy_base_url = {{ spice_proxy_address }}
|
||||||
|
keymap = {{ console_keymap }}
|
||||||
|
server_listen = 0.0.0.0
|
||||||
|
server_proxyclient_address = {{ console_listen_addr }}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
{% if libvirt_images_type -%}
|
||||||
|
images_type = {{ libvirt_images_type }}
|
||||||
|
images_rbd_pool = {{ rbd_pool }}
|
||||||
|
images_rbd_ceph_conf = {{ libvirt_rbd_images_ceph_conf }}
|
||||||
|
inject_password=false
|
||||||
|
inject_key=false
|
||||||
|
inject_partition=-2
|
||||||
|
{% endif -%}
|
||||||
|
{% if rbd_pool -%}
|
||||||
|
rbd_pool = {{ rbd_pool }}
|
||||||
|
rbd_user = {{ rbd_user }}
|
||||||
|
rbd_secret_uuid = {{ rbd_secret_uuid }}
|
||||||
|
{% endif -%}
|
||||||
|
{% if disk_cachemodes -%}
|
||||||
|
disk_cachemodes = {{ disk_cachemodes }}
|
||||||
|
{% endif -%}
|
||||||
|
|
@ -70,6 +70,14 @@ firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
|||||||
{% endif -%}
|
{% endif -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
|
||||||
|
network_api_class=nova.network.neutronv2.api.API
|
||||||
|
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver
|
||||||
|
neutron_ovs_bridge=alubr0
|
||||||
|
security_group_api=nova
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
|
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
|
||||||
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
|
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
|
||||||
security_group_api = neutron
|
security_group_api = neutron
|
||||||
|
@ -58,6 +58,14 @@ firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
|||||||
{% endif -%}
|
{% endif -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
|
||||||
|
network_api_class=nova.network.neutronv2.api.API
|
||||||
|
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver
|
||||||
|
neutron_ovs_bridge=alubr0
|
||||||
|
security_group_api=nova
|
||||||
|
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
|
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
|
||||||
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
|
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
|
||||||
security_group_api = neutron
|
security_group_api = neutron
|
||||||
|
Loading…
Reference in New Issue
Block a user