Merge "Do not try to update the 'ceph' metapackage from CephMon role"
[apex-tripleo-heat-templates.git] / puppet / services / glance-api.yaml
index b47d98a..09ea5d2 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: ocata
 
 description: >
   OpenStack Glance API service configured with Puppet
@@ -18,32 +18,14 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  CephClientUserName:
-    default: openstack
-    type: string
   Debug:
     default: ''
     description: Set to True to enable debugging on all services.
     type: string
-  GlanceNotifierStrategy:
-    description: Strategy to use for Glance notification queue
-    type: string
-    default: noop
-  GlanceLogFile:
-    description: The filepath of the file to use for logging messages from Glance.
-    type: string
-    default: ''
   GlancePassword:
     description: The password for the glance service and db account, used by the glance services.
     type: string
     hidden: true
-  GlanceBackend:
-    default: swift
-    description: The short name of the Glance backend to use. Should be one
-      of swift, rbd, or file
-    type: string
-    constraints:
-    - allowed_values: ['swift', 'file', 'rbd']
   GlanceWorkers:
     default: ''
     description: |
@@ -55,31 +37,6 @@ parameters:
       memory consumption. It is recommended that a suitable non-default value
       be selected on such systems.
     type: string
-  GlanceRbdPoolName:
-    default: images
-    type: string
-  RabbitPassword:
-    description: The password for RabbitMQ
-    type: string
-    hidden: true
-  RabbitUserName:
-    default: guest
-    description: The username for RabbitMQ
-    type: string
-  RabbitClientPort:
-    default: 5672
-    description: Set rabbit subscriber port, change this if using SSL
-    type: number
-  RabbitClientUseSSL:
-    default: false
-    description: >
-        Rabbit client subscriber parameter to specify
-        an SSL connection to the RabbitMQ host.
-    type: string
-  KeystoneRegion:
-    type: string
-    default: 'regionOne'
-    description: Keystone region for endpoint
   MonitoringSubscriptionGlanceApi:
     default: 'overcloud-glance-api'
     type: string
@@ -88,6 +45,29 @@ parameters:
     default:
       tag: openstack.glance.api
       path: /var/log/glance/api.log
+  EnableInternalTLS:
+    type: boolean
+    default: false
+
+conditions:
+  use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
+
+resources:
+
+  TLSProxyBase:
+    type: OS::TripleO::Services::TLSProxyBase
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      EnableInternalTLS: {get_param: EnableInternalTLS}
+
+  GlanceBase:
+    type: ./glance-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
 
 outputs:
   role_data:
@@ -99,66 +79,71 @@ outputs:
       logging_groups:
         - glance
       config_settings:
-        glance::api::database_connection:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://glance:'
-              - {get_param: GlancePassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/glance'
-        glance::api::bind_port: {get_param: [EndpointMap, GlanceInternal, port]}
-        glance::api::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
-        glance::api::authtoken::auth_url: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
-        glance::api::registry_host:
-          str_replace:
-            template: "'REGISTRY_HOST'"
-            params:
-              REGISTRY_HOST: {get_param: [EndpointMap, GlanceRegistryInternal, host]}
-        glance::api::registry_client_protocol: {get_param: [EndpointMap, GlanceRegistryInternal, protocol] }
-        glance::api::authtoken::password: {get_param: GlancePassword}
-        glance::api::enable_proxy_headers_parsing: true
-        glance::api::debug: {get_param: Debug}
-        glance::api::workers: {get_param: GlanceWorkers}
-        glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
-        glance_log_file: {get_param: GlanceLogFile}
-        glance::backend::swift::swift_store_auth_address: {get_param: [EndpointMap, KeystoneInternal, uri] }
-        glance::backend::swift::swift_store_user: service:glance
-        glance::backend::swift::swift_store_key: {get_param: GlancePassword}
-        glance::backend::swift::swift_store_create_container_on_put: true
-        glance::backend::rbd::rbd_store_pool: {get_param: GlanceRbdPoolName}
-        glance::backend::rbd::rbd_store_user: {get_param: CephClientUserName}
-        glance_backend: {get_param: GlanceBackend}
-        glance::notify::rabbitmq::rabbit_userid: {get_param: RabbitUserName}
-        glance::notify::rabbitmq::rabbit_port: {get_param: RabbitClientPort}
-        glance::notify::rabbitmq::rabbit_password: {get_param: RabbitPassword}
-        glance::notify::rabbitmq::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
-        glance::notify::rabbitmq::notification_driver: messagingv2
-        glance::registry::db::database_db_max_retries: -1
-        glance::registry::db::database_max_retries: -1
-        tripleo.glance_api.firewall_rules:
-          '112 glance_api':
-            dport:
-              - 9292
-              - 13292
-        glance::api::authtoken::project_name: 'service'
-        glance::api::pipeline: 'keystone'
-        glance::api::show_image_direct_url: 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
-        glance::api::bind_host: {get_param: [ServiceNetMap, GlanceApiNetwork]}
+        map_merge:
+          - get_attr: [GlanceBase, role_data, config_settings]
+          - get_attr: [TLSProxyBase, role_data, config_settings]
+          - glance::api::database_connection:
+              list_join:
+                - ''
+                - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                  - '://glance:'
+                  - {get_param: GlancePassword}
+                  - '@'
+                  - {get_param: [EndpointMap, MysqlInternal, host]}
+                  - '/glance'
+                  - '?bind_address='
+                  - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
+            glance::api::bind_port: {get_param: [EndpointMap, GlanceInternal, port]}
+            glance::api::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+            glance::api::authtoken::auth_url: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
+            glance::api::enable_v1_api: false
+            glance::api::enable_v2_api: true
+            glance::api::authtoken::password: {get_param: GlancePassword}
+            glance::api::enable_proxy_headers_parsing: true
+            glance::api::debug: {get_param: Debug}
+            glance::api::workers: {get_param: GlanceWorkers}
+            tripleo.glance_api.firewall_rules:
+              '112 glance_api':
+                dport:
+                  - 9292
+                  - 13292
+            glance::api::authtoken::project_name: 'service'
+            glance::api::pipeline: 'keystone'
+            glance::api::show_image_direct_url: 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
+            tripleo::profile::base::glance::api::tls_proxy_bind_ip:
+              get_param: [ServiceNetMap, GlanceApiNetwork]
+            tripleo::profile::base::glance::api::tls_proxy_fqdn:
+              str_replace:
+                template:
+                  "%{hiera('fqdn_$NETWORK')}"
+                params:
+                  $NETWORK: {get_param: [ServiceNetMap, GlanceApiNetwork]}
+            tripleo::profile::base::glance::api::tls_proxy_port:
+              get_param: [EndpointMap, GlanceInternal, port]
+            # Bind to localhost if internal TLS is enabled, since we put a TLs
+            # proxy in front.
+            glance::api::bind_host:
+              if:
+              - use_tls_proxy
+              - 'localhost'
+              - {get_param: [ServiceNetMap, GlanceApiNetwork]}
       step_config: |
         include ::tripleo::profile::base::glance::api
       service_config_settings:
-        keystone:
-          glance::keystone::auth::public_url: {get_param: [EndpointMap, GlancePublic, uri]}
-          glance::keystone::auth::internal_url: {get_param: [EndpointMap, GlanceInternal, uri]}
-          glance::keystone::auth::admin_url: {get_param: [EndpointMap, GlanceAdmin, uri]}
-          glance::keystone::auth::password: {get_param: GlancePassword }
-          glance::keystone::auth::region: {get_param: KeystoneRegion}
-          glance::keystone::auth::tenant: 'service'
+        get_attr: [GlanceBase, role_data, service_config_settings]
+      upgrade_tasks:
+        - name: Stop glance_api service
+          tags: step2
+          service: name=openstack-glance-api state=stopped
+        - name: Stop and disable glance registry (removed for Ocata)
+          tags: step2
+          service: name=openstack-glance-registry state=stopped enabled=no
+        - name: Sync glance_api DB
+          tags: step5
+          command: glance-manage --config-file=/etc/glance/glance-api.conf db_sync