Only set NovaWorkers in the non-default case
authorDan Prince <dprince@redhat.com>
Tue, 11 Oct 2016 16:09:43 +0000 (12:09 -0400)
committerDan Prince <dprince@redhat.com>
Wed, 12 Oct 2016 18:17:54 +0000 (14:17 -0400)
This patch updates the t-h-t templates for
nova services so that we only set the value of workers in
the non-default case. TripleO has always defaulted the
workers count to 0 and there was recently a regression in
nova where they treat the default of 0 as invalid (a bug
that may get fixed in nova but we don't want to wait on it)

This patch avoids the issue by allowing the default value
to be unset if the TripleO default of 0 is configured.

Change-Id: I175977b88129d87caeb32332d47eb14816a6d5d4
Closes-bug: #1631133

puppet/services/nova-api.yaml
puppet/services/nova-conductor.yaml
puppet/services/nova-metadata.yaml

index e1e1856..a12742f 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   OpenStack Nova API service configured with Puppet
@@ -52,6 +52,9 @@ parameters:
       tag: openstack.nova.api
       path: /var/log/nova/nova-api.log
 
+conditions:
+  nova_workers_zero: {equals : [{get_param: NovaWorkers}, 0]}
+
 resources:
   ApacheServiceBase:
     type: ./apache.yaml
@@ -78,49 +81,52 @@ outputs:
         - nova
       config_settings:
         map_merge:
-          - get_attr: [NovaBase, role_data, config_settings]
-          - get_attr: [ApacheServiceBase, role_data, config_settings]
+        - get_attr: [NovaBase, role_data, config_settings]
+        - get_attr: [ApacheServiceBase, role_data, config_settings]
+        - nova::cron::archive_deleted_rows::hour: '"*/12"'
+          nova::cron::archive_deleted_rows::destination: '"/dev/null"'
+          tripleo.nova_api.firewall_rules:
+            '113 nova_api':
+              dport:
+                - 6080
+                - 13080
+                - 8773
+                - 3773
+                - 8774
+                - 13774
+                - 8775
+          nova::keystone::authtoken::project_name: 'service'
+          nova::keystone::authtoken::password: {get_param: NovaPassword}
+          nova::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+          nova::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
+          nova::api::enabled: true
+          nova::api::default_floating_pool: 'public'
+          nova::api::sync_db_api: true
+          nova::api::enable_proxy_headers_parsing: true
+          # NOTE: bind IP is found in Heat replacing the network name with the local node IP
+          # for the given network; replacement examples (eg. for internal_api):
+          # internal_api -> IP
+          # internal_api_uri -> [IP]
+          # internal_api_subnet - > IP/CIDR
+          nova::api::api_bind_address: {get_param: [ServiceNetMap, NovaApiNetwork]}
+          nova::wsgi::apache::ssl: false
+          nova::wsgi::apache::bind_host: {get_param: [ServiceNetMap, NovaApiNetwork]}
+          nova::wsgi::apache::servername:
+            str_replace:
+              template:
+                '"%{::fqdn_$NETWORK}"'
+              params:
+                $NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
+          nova::wsgi::apache::workers: {get_param: NovaWorkers}
+          nova::wsgi::apache::bind_host: {get_param: [ServiceNetMap, NovaApiNetwork]}
+          nova::api::neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+          nova::api::instance_name_template: {get_param: InstanceNameTemplate}
+          nova_enable_db_purge: {get_param: NovaEnableDBPurge}
+        -
+          if:
+          - nova_workers_zero
+          - {}
           - nova::api::osapi_compute_workers: {get_param: NovaWorkers}
-            nova::cron::archive_deleted_rows::hour: '"*/12"'
-            nova::cron::archive_deleted_rows::destination: '"/dev/null"'
-            tripleo.nova_api.firewall_rules:
-              '113 nova_api':
-                dport:
-                  - 6080
-                  - 13080
-                  - 8773
-                  - 3773
-                  - 8774
-                  - 13774
-                  - 8775
-            nova::keystone::authtoken::project_name: 'service'
-            nova::keystone::authtoken::password: {get_param: NovaPassword}
-            nova::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
-            nova::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
-            nova::api::enabled: true
-            nova::api::default_floating_pool: 'public'
-            nova::api::sync_db_api: true
-            nova::api::enable_proxy_headers_parsing: true
-            # NOTE: bind IP is found in Heat replacing the network name with the local node IP
-            # for the given network; replacement examples (eg. for internal_api):
-            # internal_api -> IP
-            # internal_api_uri -> [IP]
-            # internal_api_subnet - > IP/CIDR
-            nova::api::api_bind_address: {get_param: [ServiceNetMap, NovaApiNetwork]}
-            nova::wsgi::apache::ssl: false
-            nova::wsgi::apache::bind_host: {get_param: [ServiceNetMap, NovaApiNetwork]}
-            nova::wsgi::apache::servername:
-              str_replace:
-                template:
-                  '"%{::fqdn_$NETWORK}"'
-                params:
-                  $NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
-            nova::wsgi::apache::workers: {get_param: NovaWorkers}
-            nova::wsgi::apache::bind_host: {get_param: [ServiceNetMap, NovaApiNetwork]}
-            nova::api::neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
-            nova::api::instance_name_template: {get_param: InstanceNameTemplate}
-            nova_enable_db_purge: {get_param: NovaEnableDBPurge}
-
       step_config: |
         include tripleo::profile::base::nova::api
       service_config_settings:
index 2671cdd..a10d956 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   OpenStack Nova Conductor service configured with Puppet
@@ -31,6 +31,9 @@ parameters:
       tag: openstack.nova.scheduler
       path: /var/log/nova/nova-scheduler.log
 
+conditions:
+  nova_workers_zero: {equals : [{get_param: NovaWorkers}, 0]}
+
 resources:
   NovaBase:
     type: ./nova-base.yaml
@@ -50,7 +53,11 @@ outputs:
         - nova
       config_settings:
         map_merge:
-          - get_attr: [NovaBase, role_data, config_settings]
+        - get_attr: [NovaBase, role_data, config_settings]
+        -
+          if:
+          - nova_workers_zero
+          - {}
           - nova::conductor::workers: {get_param: NovaWorkers}
       step_config: |
         include tripleo::profile::base::nova::conductor
index 92373c5..40931da 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   OpenStack Nova API service configured with Puppet
@@ -23,12 +23,20 @@ parameters:
     description: Number of workers for Nova API service.
     type: number
 
+conditions:
+  nova_workers_zero: {equals : [{get_param: NovaWorkers}, 0]}
+
 outputs:
   role_data:
     description: Role data for the Nova Metadata service.
     value:
       service_name: nova_metadata
       config_settings:
-        nova::api::metadata_workers: {get_param: NovaWorkers}
-        nova::api::metadata_listen: {get_param: [ServiceNetMap, NovaMetadataNetwork]}
+        map_merge:
+        - nova::api::metadata_listen: {get_param: [ServiceNetMap, NovaMetadataNetwork]}
+        -
+          if:
+          - nova_workers_zero
+          - {}
+          - nova::api::metadata_workers: {get_param: NovaWorkers}
       step_config: ""