diff --git a/config.yaml b/config.yaml index e4efcca..b9e2d7d 100644 --- a/config.yaml +++ b/config.yaml @@ -57,3 +57,17 @@ options: type: string default: Default description: Keystone project domain name + enable-deb-networking-install: + type: boolean + default: False + description: | + If enabled networking plumgrid is installed from deb package on LCM instead of + installation using pip + enable-flow-tap: + type: boolean + default: True + description: Toggles reverse flow creation for tap based policies + enable-metaconfig: + type: boolean + default: True + description: Enables/disables nova communication for metaconfig diff --git a/hooks/neutron_plumgrid_context.py b/hooks/neutron_plumgrid_context.py index 06fca6e..a17599f 100644 --- a/hooks/neutron_plumgrid_context.py +++ b/hooks/neutron_plumgrid_context.py @@ -120,6 +120,8 @@ class NeutronPGPluginContext(context.NeutronContext): pg_ctxt['connector_type'] = config('connector-type') pg_ctxt['user_domain_name'] = config('user-domain-name') pg_ctxt['project_domain_name'] = config('project-domain-name') + pg_ctxt['enable_reverse_flow_tap'] = config('enable-flow-tap') + pg_ctxt['nova_metaconfig'] = config('enable-metaconfig') if enable_metadata: plumgrid_edge_ctxt = _edge_context() pg_ctxt['nova_metadata_proxy_secret'] = \ diff --git a/hooks/neutron_plumgrid_utils.py b/hooks/neutron_plumgrid_utils.py index ffc0e32..eae024e 100644 --- a/hooks/neutron_plumgrid_utils.py +++ b/hooks/neutron_plumgrid_utils.py @@ -12,6 +12,7 @@ from charmhelpers.contrib.openstack import templating from charmhelpers.contrib.openstack.neutron import neutron_plugin_attribute from charmhelpers.contrib.python.packages import pip_install from charmhelpers.fetch import ( + apt_install, apt_cache ) from charmhelpers.core.hookenv import ( @@ -166,18 +167,23 @@ def install_networking_plumgrid(): ''' Installs networking-plumgrid package ''' - release = os_release('neutron-common', base='kilo') - if config('networking-plumgrid-version') is None: - package_version = NETWORKING_PLUMGRID_VERSION[release] + if not config('enable-deb-networking-install'): + release = os_release('neutron-common', base='kilo') + if config('networking-plumgrid-version') is None: + package_version = NETWORKING_PLUMGRID_VERSION[release] + else: + package_version = config('networking-plumgrid-version') + package_name = 'networking-plumgrid==%s' % package_version + if config('pip-proxy') != "None": + pip_install(package_name, fatal=True, proxy=config('pip-proxy')) + else: + pip_install(package_name, fatal=True) + if is_leader() and package_version != '2015.1.1.1': + migrate_neutron_db() else: - package_version = config('networking-plumgrid-version') - package_name = 'networking-plumgrid==%s' % package_version - if config('pip-proxy') != "None": - pip_install(package_name, fatal=True, proxy=config('pip-proxy')) - else: - pip_install(package_name, fatal=True) - if is_leader() and package_version != '2015.1.1.1': - migrate_neutron_db() + apt_install('networking-plumgrid', options=['--force-yes'], fatal=True) + if is_leader(): + migrate_neutron_db() def migrate_neutron_db(): diff --git a/templates/kilo/plumlib.ini b/templates/kilo/plumlib.ini index 8376775..75f95e1 100644 --- a/templates/kilo/plumlib.ini +++ b/templates/kilo/plumlib.ini @@ -14,9 +14,15 @@ enable_pg_security = True # Reverse Flow Flag enable_reverse_flow = True +# Reverse Flow Flag Tap +enable_reverse_flow_tap = {{ enable_reverse_flow_tap }} + # Flag to enable/disable virtual appliance creation vapp_flag = False +# Flag to enable/disable nova communication for metaconfig +nova_metaconfig = {{ nova_metaconfig }} + # Metadata Flags. If "metadata_ns" is set to false, respective # namespace for metadata won't be created on this node [PLUMgridMetadata] diff --git a/unit_tests/test_neutron_plumgrid_plugin_context.py b/unit_tests/test_neutron_plumgrid_plugin_context.py index 619f513..8c364bb 100644 --- a/unit_tests/test_neutron_plumgrid_plugin_context.py +++ b/unit_tests/test_neutron_plumgrid_plugin_context.py @@ -61,7 +61,9 @@ class NeutronPGContextTest(CharmTestCase): 'switch-password': 'plumgrid', 'connector-type': 'service', 'user-domain-name': 'Default', - 'project-domain-name': 'Default' + 'project-domain-name': 'Default', + 'enable-flow-tap': 'True', + 'enable-metaconfig': 'True', } def mock_config(key=None): @@ -98,5 +100,7 @@ class NeutronPGContextTest(CharmTestCase): 'pg_metadata_ip': '169.254.169.254', 'pg_metadata_subnet': '169.254.169.254/30', 'pg_metadata_port': '8775', + 'enable_reverse_flow_tap': 'True', + 'nova_metaconfig': 'True', } self.assertEquals(expect, napi_ctxt())