diff --git a/packstack/installer/run_setup.py b/packstack/installer/run_setup.py index c4829a6d9..48bbefb3a 100644 --- a/packstack/installer/run_setup.py +++ b/packstack/installer/run_setup.py @@ -651,13 +651,12 @@ def single_step_aio_install(options): if not options.novanetwork_privif: options.novanetwork_privif = "lo" - # If we are doing an all-in-one install and neutron isn't disabled - # go ahead and set up a basic network and external bridge unless - # specifically told not to - if options.os_neutron_install != "n": - if not options.provision_demo: - options.provision_demo = "y" - if not options.provision_all_in_one_ovs_bridge: + # If we are doing an all-in-one install, do demo provisioning + # unless specifically told not to + if not options.provision_demo: + options.provision_demo = "y" + if options.os_neutron_install != "n" and \ + not options.provision_all_in_one_ovs_bridge: options.provision_all_in_one_ovs_bridge = "y" single_step_install(options) diff --git a/packstack/plugins/provision_700.py b/packstack/plugins/provision_700.py index a5274d024..d8ce8067e 100644 --- a/packstack/plugins/provision_700.py +++ b/packstack/plugins/provision_700.py @@ -110,13 +110,12 @@ def initConfig(controllerObject): def allow_provisioning(config): # Provisioning is currently supported only for all-in-one (due # to a limitation with how the custom types for OpenStack - # resources are implemented) and neutron with namespaces (due - # to the provisioning manifest assuming this configuration). - return is_all_in_one(config) and \ - config['CONFIG_NEUTRON_INSTALL'] == 'y' + # resources are implemented). + return is_all_in_one(config) def allow_all_in_one_ovs_bridge(config): return allow_provisioning(config) and \ + config['CONFIG_NEUTRON_INSTALL'] == 'y' and \ config['CONFIG_NEUTRON_L2_PLUGIN'] == 'openvswitch' conf_groups = [ @@ -174,9 +173,24 @@ def initSequences(controller): def create_manifest(config): - # Using the server host will suffice for the all-in-one case. - manifest_file = '%s_provision.pp' % ( - controller.CONF['CONFIG_NEUTRON_SERVER_HOST'] - ) + # Using the neutron or nova api servers as the provisioning target + # will suffice for the all-in-one case. + if config['CONFIG_NEUTRON_INSTALL'] == "y": + host = config['CONFIG_NEUTRON_SERVER_HOST'] + else: + host = config['CONFIG_NOVA_API_HOST'] + # The provisioning template requires the name of the external + # bridge but the value will be missing if neutron isn't + # configured to be installed. + config['CONFIG_NEUTRON_L3_EXT_BRIDGE'] = 'br-ex' + + # Set template-specific parameter to configure whether neutron is + # available. The value needs to be true/false rather than the y/n. + # provided by CONFIG_NEUTRON_INSTALL. + config['PROVISION_NEUTRON_AVAILABLE'] = config['CONFIG_NEUTRON_INSTALL'] + marshall_conf_bool(config, 'PROVISION_NEUTRON_AVAILABLE') + + manifest_file = '%s_provision.pp' % host + manifest_data = getManifestTemplate("provision.pp") appendManifestFile(manifest_file, manifest_data) diff --git a/packstack/puppet/modules/openstack b/packstack/puppet/modules/openstack index a5f9a18c6..050fa67b2 160000 --- a/packstack/puppet/modules/openstack +++ b/packstack/puppet/modules/openstack @@ -1 +1 @@ -Subproject commit a5f9a18c6819f39801bcee5f080e1ec27d30b718 +Subproject commit 050fa67b230b320e096c3a66420f692cd1adf69b diff --git a/packstack/puppet/templates/provision.pp b/packstack/puppet/templates/provision.pp index 60a974446..3aedbef28 100644 --- a/packstack/puppet/templates/provision.pp +++ b/packstack/puppet/templates/provision.pp @@ -4,6 +4,7 @@ configure_tempest => %(CONFIG_PROVISION_TEMPEST)s, tempest_repo_uri => '%(CONFIG_PROVISION_TEMPEST_REPO_URI)s', tempest_repo_revision => '%(CONFIG_PROVISION_TEMPEST_REPO_REVISION)s', + neutron_available => %(PROVISION_NEUTRON_AVAILABLE)s, setup_ovs_bridge => %(CONFIG_PROVISION_ALL_IN_ONE_OVS_BRIDGE)s, public_bridge_name => '%(CONFIG_NEUTRON_L3_EXT_BRIDGE)s', floating_range => '%(CONFIG_PROVISION_DEMO_FLOATRANGE)s',