Merge "Add keystone cron container to run token_flush"
[apex-tripleo-heat-templates.git] / puppet / services / nova-compute.yaml
index e39e997..a12bfd0 100644 (file)
@@ -4,6 +4,10 @@ description: >
   OpenStack Nova Compute service configured with Puppet
 
 parameters:
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
   ServiceNetMap:
     default: {}
     description: Mapping of service_name -> network name. Typically set
@@ -32,6 +36,13 @@ parameters:
   CephClientUserName:
     default: openstack
     type: string
+  CephClientKey:
+    description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
+    type: string
+    hidden: true
+  CephClusterFSID:
+    type: string
+    description: The Ceph cluster FSID. Must be a UUID.
   CinderEnableNfsBackend:
     default: false
     description: Whether to enable or not the NFS backend for Cinder
@@ -93,18 +104,41 @@ parameters:
       SSH key for migration.
       Expects a dictionary with keys 'public_key' and 'private_key'.
       Values should be identical to SSH public/private key files.
-    default: {}
+    default:
+      public_key: ''
+      private_key: ''
+  MigrationSshPort:
+    default: 22
+    description: Target port for migration over ssh
+    type: number
 
 resources:
   NovaBase:
     type: ./nova-base.yaml
     properties:
+      ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
       RoleName: {get_param: RoleName}
       RoleParameters: {get_param: RoleParameters}
 
+  # Merging role-specific parameters (RoleParameters) with the default parameters.
+  # RoleParameters will have the precedence over the default parameters.
+  RoleParametersValue:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        map_replace:
+          - map_replace:
+            - nova::compute::vcpu_pin_set: NovaVcpuPinSet
+              nova::compute::reserved_host_memory: NovaReservedHostMemory
+            - values: {get_param: [RoleParameters]}
+          - values:
+              NovaVcpuPinSet: {get_param: NovaVcpuPinSet}
+              NovaReservedHostMemory: {get_param: NovaReservedHostMemory}
+
 outputs:
   role_data:
     description: Role data for the Nova Compute service.
@@ -117,34 +151,29 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
+          - get_attr: [RoleParametersValue, value]
           - nova::compute::libvirt::manage_libvirt_services: false
             nova::compute::pci_passthrough:
               str_replace:
                 template: "JSON_PARAM"
                 params:
-                  JSON_PARAM: {get_param: NovaPCIPassthrough}
-            nova::compute::vcpu_pin_set: {get_param: NovaVcpuPinSet}
-            nova::compute::reserved_host_memory: {get_param: NovaReservedHostMemory}
+                  map_replace:
+                    - map_replace:
+                      - JSON_PARAM: NovaPCIPassthrough
+                      - values: {get_param: [RoleParameters]}
+                    - values:
+                        NovaPCIPassthrough: {get_param: NovaPCIPassthrough}
             # we manage migration in nova common puppet profile
             nova::compute::libvirt::migration_support: false
-            tripleo::profile::base::nova::manage_migration: true
-            tripleo::profile::base::nova::migration_ssh_key: {get_param: MigrationSshKey}
-            tripleo::profile::base::nova::migration_ssh_localaddrs:
-              - "%{hiera('cold_migration_ssh_inbound_addr')}"
-              - "%{hiera('live_migration_ssh_inbound_addr')}"
-            live_migration_ssh_inbound_addr: {get_param: [ServiceNetMap, NovaLibvirtNetwork]}
-            cold_migration_ssh_inbound_addr: {get_param: [ServiceNetMap, NovaColdMigrationNetwork]}
-            tripleo::profile::base::nova::nova_compute_enabled: true
+            tripleo::profile::base::nova::migration::client::nova_compute_enabled: true
+            tripleo::profile::base::nova::migration::client::ssh_private_key: {get_param: [ MigrationSshKey, private_key ]}
+            tripleo::profile::base::nova::migration::client::ssh_port: {get_param: MigrationSshPort}
             nova::compute::rbd::libvirt_images_rbd_pool: {get_param: NovaRbdPoolName}
             nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
             tripleo::profile::base::nova::compute::cinder_nfs_backend: {get_param: CinderEnableNfsBackend}
             rbd_persistent_storage: {get_param: CinderEnableRbdBackend}
-            nova::compute::rbd::rbd_keyring:
-              list_join:
-              - '.'
-              - - 'client'
-                - {get_param: CephClientUserName}
-            nova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera('ceph::profile::params::fsid')}"
+            nova::compute::rbd::libvirt_rbd_secret_key: {get_param: CephClientKey}
+            nova::compute::rbd::libvirt_rbd_secret_uuid: {get_param: CephClusterFSID}
             nova::compute::instance_usage_audit: true
             nova::compute::instance_usage_audit_period: 'hour'
             nova::compute::rbd::ephemeral_storage: {get_param: NovaEnableRbdBackend}