Merge "Nova Neutron configuration now uses keystone v3 endpoint"
[apex-tripleo-heat-templates.git] / puppet / controller.yaml
index 26271aa..51c9b6c 100644 (file)
@@ -39,6 +39,11 @@ parameters:
     default: 0
     description: Number of workers for Ceilometer service.
     type: number
+  CinderEnableDBPurge:
+    default: true
+    description: |
+      Whether to create cron job for purging soft deleted rows in Cinder database.
+    type: boolean
   CinderEnableNfsBackend:
     default: false
     description: Whether to enable or not the NFS backend for Cinder
@@ -56,7 +61,7 @@ parameters:
     description: The iSCSI helper to use with cinder.
     type: string
   CinderLVMLoopDeviceSize:
-    default: 5000
+    default: 10280
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
   CinderNfsMountOptions:
@@ -84,10 +89,6 @@ parameters:
     default: 0
     description: Number of workers for Cinder service.
     type: number
-  CloudName:
-    default: ''
-    description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
-    type: string
   ControllerExtraConfig:
     default: {}
     description: |
@@ -271,6 +272,11 @@ parameters:
     default: ''
     description: Keystone self-signed certificate authority certificate.
     type: string
+  KeystoneEnableDBPurge:
+    default: true
+    description: |
+        Whether to create cron job for purging soft deleted rows in Keystone database.
+    type: boolean
   KeystoneSigningCertificate:
     default: ''
     description: Keystone certificate for verifying token validity.
@@ -315,6 +321,14 @@ parameters:
     default: 0
     description: Number of workers for Keystone service.
     type: number
+  SaharaApiVirtualIP:
+    type: string
+    default: ''
+  SaharaPassword:
+    default: unset
+    description: The password for the sahara service account, used by sahara-api.
+    type: string
+    hidden: true
   MysqlClusterUniquePart:
     description: A unique identifier of the MySQL cluster the controller is in.
     type: string
@@ -398,7 +412,7 @@ parameters:
         from neutron.core_plugins namespace.
     type: string
   NeutronServicePlugins:
-    default: "router"
+    default: "router,qos"
     description: |
         Comma-separated list of service plugin entrypoints to be loaded from the
         neutron.service_plugins namespace.
@@ -442,7 +456,7 @@ parameters:
     description: The tenant network type for Neutron.
     type: comma_delimited_list
   NeutronNetworkVLANRanges:
-    default: 'datacentre'
+    default: 'datacentre:1:1000'
     description: >
       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
       Neutron documentation for permitted values. Defaults to permitting any
@@ -478,6 +492,15 @@ parameters:
     default: ''
     description: If set, the public interface is a vlan with this device as the raw device.
     type: string
+  NeutronTenantMtu:
+    description: >
+      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
+      be at least 50 bytes smaller than the MTU on the physical network. This
+      value will be used to set the MTU on the virtual Ethernet device.
+      This number is related to the value of NeutronDnsmasqOptions, since that
+      will determine the MTU that is assigned to the VM host through DHCP.
+    default: 1400
+    type: number
   NeutronTunnelTypes:
     default: 'vxlan'
     description: |
@@ -487,13 +510,23 @@ parameters:
     description: |
         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
         of GRE tunnel IDs that are available for tenant network allocation
-    default: ["1:1000", ]
+    default: ["1:4094", ]
     type: comma_delimited_list
   NeutronVniRanges:
     description: |
         Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
         of VXLAN VNI IDs that are available for tenant network allocation
-    default: ["1:1000", ]
+    default: ["1:4094", ]
+    type: comma_delimited_list
+  NeutronPluginExtensions:
+    default: "qos,port_security"
+    description: |
+        Comma-separated list of extensions enabled for the Neutron plugin.
+    type: comma_delimited_list
+  NeutronAgentExtensions:
+    default: "qos"
+    description: |
+        Comma-separated list of extensions enabled for the Neutron agents.
     type: comma_delimited_list
   NovaApiVirtualIP:
     type: string
@@ -502,6 +535,11 @@ parameters:
     default: 0
     description: Number of workers for Neutron service.
     type: number
+  NovaEnableDBPurge:
+    default: true
+    description: |
+        Whether to create cron job for purging soft deleted rows in Nova database.
+    type: boolean
   NovaPassword:
     description: The password for the nova service and db account, used by nova-api.
     type: string
@@ -799,6 +837,7 @@ resources:
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
+      name: NetworkDeployment
       config: {get_resource: NetworkConfig}
       server: {get_resource: Controller}
       actions: {get_param: NetworkDeploymentActions}
@@ -821,10 +860,12 @@ resources:
       server: {get_resource: Controller}
       NodeIndex: {get_param: NodeIndex}
 
+
   ControllerDeployment:
     type: OS::TripleO::SoftwareDeployment
     depends_on: NetworkDeployment
     properties:
+      name: ControllerDeployment
       config: {get_resource: ControllerConfig}
       server: {get_resource: Controller}
       input_values:
@@ -867,6 +908,7 @@ resources:
         admin_token: {get_param: AdminToken}
         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
         debug: {get_param: Debug}
+        cinder_enable_db_purge: {get_param: CinderEnableDBPurge}
         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
         cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
@@ -883,7 +925,7 @@ resources:
         cinder_dsn:
           list_join:
             - ''
-            - - 'mysql://cinder:'
+            - - 'mysql+pymysql://cinder:'
               - {get_param: CinderPassword}
               - '@'
               - {get_param: MysqlVirtualIP}
@@ -900,7 +942,7 @@ resources:
         glance_dsn:
           list_join:
             - ''
-            - - 'mysql://glance:'
+            - - 'mysql+pymysql://glance:'
               - {get_param: GlancePassword}
               - '@'
               - {get_param: MysqlVirtualIP}
@@ -910,7 +952,7 @@ resources:
         heat_dsn:
           list_join:
             - ''
-            - - 'mysql://heat:'
+            - - 'mysql+pymysql://heat:'
               - {get_param: HeatPassword}
               - '@'
               - {get_param: MysqlVirtualIP}
@@ -922,10 +964,11 @@ resources:
         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
         keystone_notification_driver: {get_param: KeystoneNotificationDriver}
         keystone_notification_format: {get_param: KeystoneNotificationFormat}
+        keystone_enable_db_purge: {get_param: KeystoneEnableDBPurge}
         keystone_dsn:
           list_join:
             - ''
-            - - 'mysql://keystone:'
+            - - 'mysql+pymysql://keystone:'
               - {get_param: AdminToken}
               - '@'
               - {get_param: MysqlVirtualIP}
@@ -1016,12 +1059,23 @@ resources:
             template: TYPES
             params:
               TYPES: {get_param: NeutronTunnelTypes}
+        neutron_plugin_extensions:
+          str_replace:
+            template: PLUGIN_EXTENSIONS
+            params:
+              PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
+        neutron_agent_extensions:
+          str_replace:
+            template: AGENT_EXTENSIONS
+            params:
+              AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
         neutron_password: {get_param: NeutronPassword}
+        neutron_tenant_mtu: {get_param: NeutronTenantMtu}
         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
         neutron_dsn:
           list_join:
             - ''
-            - - 'mysql://neutron:'
+            - - 'mysql+pymysql://neutron:'
               - {get_param: NeutronPassword}
               - '@'
               - {get_param: MysqlVirtualIP}
@@ -1029,7 +1083,7 @@ resources:
         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
         neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
-        neutron_admin_auth_url: { get_param: [ EndpointMap, KeystoneAdmin, uri ] }
+        neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
         nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
         ceilometer_backend: {get_param: CeilometerBackend}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
@@ -1043,22 +1097,31 @@ resources:
         ceilometer_dsn:
           list_join:
             - ''
-            - - 'mysql://ceilometer:'
+            - - 'mysql+pymysql://ceilometer:'
               - {get_param: CeilometerPassword}
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/ceilometer'
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
+        nova_enable_db_purge: {get_param: NovaEnableDBPurge}
         nova_password: {get_param: NovaPassword}
         nova_dsn:
           list_join:
             - ''
-            - - 'mysql://nova:'
+            - - 'mysql+pymysql://nova:'
               - {get_param: NovaPassword}
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/nova'
+        nova_api_dsn:
+          list_join:
+            - ''
+            - - 'mysql+pymysql://nova_api:'
+              - {get_param: NovaPassword}
+              - '@'
+              - {get_param: MysqlVirtualIP}
+              - '/nova_api'
         instance_name_template: {get_param: InstanceNameTemplate}
         fencing_config: {get_param: FencingConfig}
         pcsd_password: {get_param: PcsdPassword}
@@ -1088,6 +1151,15 @@ resources:
         swift_mount_check: {get_param: SwiftMountCheck}
         enable_package_install: {get_param: EnablePackageInstall}
         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
+        sahara_password: {get_param: SaharaPassword}
+        sahara_dsn:
+          list_join:
+            - ''
+            - - 'mysql://sahara:'
+              - {get_param: SaharaPassword}
+              - '@'
+              - {get_param: MysqlVirtualIP}
+              - '/sahara'
         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
         cinder_iscsi_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
@@ -1110,6 +1182,7 @@ resources:
         rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
         redis_vip: {get_param: RedisVirtualIP}
+        sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
         mysql_virtual_ip: {get_param: MysqlVirtualIP}
@@ -1140,7 +1213,9 @@ resources:
             - vip_data # provided by vip-config
             - '"%{::osfamily}"'
             - common
+            - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
+            - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
@@ -1192,6 +1267,7 @@ resources:
                 tripleo::ringbuilder::build_ring: True
 
                 # Cinder
+                cinder_enable_db_purge: {get_input: cinder_enable_db_purge}
                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
                 cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
@@ -1276,8 +1352,10 @@ resources:
                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
                 keystone::database_connection: {get_input: keystone_dsn}
-                keystone::public_bind_host: {get_input: keystone_public_api_network}
                 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
+                keystone::public_bind_host: {get_input: keystone_public_api_network}
+                keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
+                keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
                 keystone::debug: {get_input: debug}
                 keystone::db::mysql::password: {get_input: admin_token}
                 keystone::rabbit_userid: {get_input: rabbit_username}
@@ -1294,7 +1372,8 @@ resources:
                 keystone::endpoint::region: {get_input: keystone_region}
                 keystone::admin_workers: {get_input: keystone_workers}
                 keystone::public_workers: {get_input: keystone_workers}
-
+                keystone_enable_db_purge: {get_input: keystone_enable_db_purge}
+                keystone::public_endpoint: {get_input: keystone_public_url}
                 # MongoDB
                 mongodb::server::bind_ip: {get_input: mongo_db_network}
                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
@@ -1322,6 +1401,7 @@ resources:
                 neutron::server::database_connection: {get_input: neutron_dsn}
                 neutron::server::api_workers: {get_input: neutron_workers}
                 neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
+                neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron::agents::dhcp::enable_isolated_metadata: {get_input: neutron_enable_isolated_metadata}
@@ -1340,19 +1420,21 @@ resources:
                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
+                neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
                 neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
-                neutron::agents::ml2::ovs:bridge_mappings: {get_input: neutron_bridge_mappings}
+                neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
                 neutron_public_interface: {get_input: neutron_public_interface}
                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
+                neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
                 neutron::server::auth_password: {get_input: neutron_password}
                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
@@ -1365,8 +1447,9 @@ resources:
                 neutron::keystone::auth::password: {get_input: neutron_password }
                 neutron::keystone::auth::region: {get_input: keystone_region}
                 neutron::server::notifications::nova_url: {get_input: nova_internal_url}
-                neutron::server::notifications::auth_url: {get_input: neutron_admin_auth_url}
+                neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
                 neutron::server::notifications::tenant_name: 'service'
+                neutron::server::notifications::project_name: 'service'
                 neutron::server::notifications::password: {get_input: nova_password}
 
                 # Ceilometer
@@ -1403,15 +1486,19 @@ resources:
                 nova::api::osapi_compute_workers: {get_input: nova_workers}
                 nova::api::ec2_workers: {get_input: nova_workers}
                 nova::api::metadata_workers: {get_input: nova_workers}
+                nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
                 nova::database_connection: {get_input: nova_dsn}
+                nova::api_database_connection: {get_input: nova_api_dsn}
                 nova::glance_api_servers: {get_input: glance_api_servers}
                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 nova::api::instance_name_template: {get_input: instance_name_template}
-                nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
+                nova::network::neutron::neutron_password: {get_input: neutron_password}
                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
-                nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
+                nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
                 nova::vncproxy::host: {get_input: nova_api_network}
                 nova::db::mysql::password: {get_input: nova_password}
+                nova::db::mysql_api::password: {get_input: nova_password}
+                nova_enable_db_purge: {get_input: nova_enable_db_purge}
 
                 # Horizon
                 apache::ip: {get_input: horizon_network}
@@ -1421,6 +1508,29 @@ resources:
                 horizon::bind_address: {get_input: horizon_network}
                 horizon::keystone_url: {get_input: keystone_auth_uri}
 
+                # Sahara
+                sahara::host: {get_input: sahara_api_network}
+                sahara::plugins:
+                  - cdh
+                  - hdp
+                  - mapr
+                  - vanilla
+                  - spark
+                  - storm
+                sahara::admin_password: {get_input: sahara_password}
+                sahara::auth_uri: {get_input: keystone_auth_uri}
+                sahara::admin_user: sahara
+                sahara::identity_uri: {get_input: keystone_identity_uri}
+                sahara::use_neutron: true
+                sahara::database_connection: {get_input: sahara_dsn}
+                sahara::debug: {get_input: debug}
+                sahara::rpc_backend: rabbit
+                sahara::rabbit_userid: {get_input: rabbit_username}
+                sahara::rabbit_password: {get_input: rabbit_password}
+                sahara::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
+                sahara::rabbit_port: {get_input: rabbit_client_port}
+                sahara::db::mysql::password: {get_input: sahara_password}
+
                 # Rabbit
                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
@@ -1468,6 +1578,7 @@ resources:
   UpdateDeployment:
     type: OS::Heat::SoftwareDeployment
     properties:
+      name: UpdateDeployment
       config: {get_resource: UpdateConfig}
       server: {get_resource: Controller}
       input_values:
@@ -1511,12 +1622,11 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: IP HOST.DOMAIN HOST CLOUDNAME
+        template: IP HOST.DOMAIN HOST
         params:
           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
           DOMAIN: {get_param: CloudDomain}
           HOST: {get_attr: [Controller, name]}
-          CLOUDNAME: {get_param: CloudName}
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
     value: