Nova base cleanups for hiera json hook
authorDan Prince <dprince@redhat.com>
Tue, 15 Nov 2016 22:12:37 +0000 (17:12 -0500)
committerDan Prince <dprince@redhat.com>
Wed, 16 Nov 2016 03:08:14 +0000 (22:08 -0500)
This patch resolves an issue with nova-base.yaml that prevents
it from working with the new heat hiera agent hook (which
uses Json instead of Yaml).

It updates the service so that we only set the upgrade level if it
is not an empty string.

Partial-bug: #1596373

Change-Id: I595f2e16c33a6f935c7ca8935fec445d19c7b8f3

puppet/services/nova-base.yaml

index 8db00d8..74a95d2 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   OpenStack Nova base service. Shared for all Nova services.
@@ -66,6 +66,9 @@ parameters:
     type: string
     description: Nova Compute upgrade level
     default: ''
+conditions:
+
+  compute_upgrade_level_empty: {equals : [{get_param: UpgradeLevelNovaCompute}, '']}
 
 outputs:
   role_data:
@@ -73,45 +76,50 @@ outputs:
     value:
       service_name: nova_base
       config_settings:
-        nova::rabbit_password: {get_param: RabbitPassword}
-        nova::rabbit_userid: {get_param: RabbitUserName}
-        nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
-        nova::rabbit_port: {get_param: RabbitClientPort}
-        nova::database_connection:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova'
-        nova::api_database_connection:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova_api:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova_api'
-        nova::debug: {get_param: Debug}
-        nova::purge_config: {get_param: EnableConfigPurge}
-        nova::network::neutron::neutron_project_name: 'service'
-        nova::network::neutron::neutron_username: 'neutron'
-        nova::network::neutron::dhcp_domain: ''
-        nova::network::neutron::neutron_password: {get_param: NeutronPassword}
-        nova::network::neutron::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
-        nova::network::neutron::neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
-        nova::rabbit_heartbeat_timeout_threshold: 60
-        nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
-        nova::host: '"%{::fqdn}"'    # NOTE: extra quoting is needed.
-        nova::notify_on_state_change: 'vm_and_task_state'
-        nova::notification_driver: messagingv2
-        nova::network::neutron::neutron_auth_type: 'v3password'
-        nova::db::database_db_max_retries: -1
-        nova::db::database_max_retries: -1
-        nova::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
-        nova::use_ipv6: {get_param: NovaIPv6}
-        nova::upgrade_level_compute: {get_param: UpgradeLevelNovaCompute}
-        nova::network::neutron::neutron_ovs_bridge: {get_param: NovaOVSBridge}
+        map_merge:
+        - nova::rabbit_password: {get_param: RabbitPassword}
+          nova::rabbit_userid: {get_param: RabbitUserName}
+          nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
+          nova::rabbit_port: {get_param: RabbitClientPort}
+          nova::database_connection:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                - '://nova:'
+                - {get_param: NovaPassword}
+                - '@'
+                - {get_param: [EndpointMap, MysqlInternal, host]}
+                - '/nova'
+          nova::api_database_connection:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                - '://nova_api:'
+                - {get_param: NovaPassword}
+                - '@'
+                - {get_param: [EndpointMap, MysqlInternal, host]}
+                - '/nova_api'
+          nova::debug: {get_param: Debug}
+          nova::purge_config: {get_param: EnableConfigPurge}
+          nova::network::neutron::neutron_project_name: 'service'
+          nova::network::neutron::neutron_username: 'neutron'
+          nova::network::neutron::dhcp_domain: ''
+          nova::network::neutron::neutron_password: {get_param: NeutronPassword}
+          nova::network::neutron::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
+          nova::network::neutron::neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
+          nova::rabbit_heartbeat_timeout_threshold: 60
+          nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
+          nova::host: '"%{::fqdn}"'    # NOTE: extra quoting is needed.
+          nova::notify_on_state_change: 'vm_and_task_state'
+          nova::notification_driver: messagingv2
+          nova::network::neutron::neutron_auth_type: 'v3password'
+          nova::db::database_db_max_retries: -1
+          nova::db::database_max_retries: -1
+          nova::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
+          nova::use_ipv6: {get_param: NovaIPv6}
+          nova::network::neutron::neutron_ovs_bridge: {get_param: NovaOVSBridge}
+        - 
+          if:
+          - compute_upgrade_level_empty
+          - {}
+          - nova::upgrade_level_compute: {get_param: UpgradeLevelNovaCompute}