aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--environments/enable-tls.yaml3
-rw-r--r--environments/external-loadbalancer-vip.yaml7
-rw-r--r--environments/network-isolation-v6.yaml2
-rw-r--r--environments/puppet-ceph-devel.yaml3
-rw-r--r--net-config-bond.yaml6
-rw-r--r--network/endpoints/endpoint_data.yaml9
-rw-r--r--network/endpoints/endpoint_map.yaml118
-rw-r--r--overcloud.yaml6
-rw-r--r--puppet/controller.yaml37
-rw-r--r--puppet/hieradata/controller.yaml1
-rw-r--r--puppet/manifests/overcloud_controller.pp18
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp10
-rw-r--r--puppet/swift-storage.yaml10
-rwxr-xr-xtools/yaml-validate.py11
14 files changed, 88 insertions, 153 deletions
diff --git a/environments/enable-tls.yaml b/environments/enable-tls.yaml
index d6328c06..49a87bb5 100644
--- a/environments/enable-tls.yaml
+++ b/environments/enable-tls.yaml
@@ -14,9 +14,6 @@ parameter_defaults:
GlanceAdmin: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
GlanceInternal: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
GlancePublic: {protocol: 'https', port: '13292', host: 'CLOUDNAME'}
- GlanceRegistryAdmin: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
- GlanceRegistryInternal: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
- GlanceRegistryPublic: {protocol: 'https', port: '9191', host: 'IP_ADDRESS'} # Not set on the loadbalancer yet.
HeatAdmin: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
HeatInternal: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
HeatPublic: {protocol: 'https', port: '13004', host: 'CLOUDNAME'}
diff --git a/environments/external-loadbalancer-vip.yaml b/environments/external-loadbalancer-vip.yaml
index 198892cd..8656ba1a 100644
--- a/environments/external-loadbalancer-vip.yaml
+++ b/environments/external-loadbalancer-vip.yaml
@@ -10,7 +10,8 @@ resource_registry:
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage_from_pool.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_from_pool.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant_from_pool.yaml
- OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management_from_pool.yaml
+ # Management network is optional and disabled by default
+ #OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management_from_pool.yaml
parameter_defaults:
# When using an external loadbalancer set the following in parameter_defaults
@@ -35,6 +36,6 @@ parameter_defaults:
- 172.16.3.253
tenant:
- 172.16.0.253
- management:
- - 172.16.4.253
+ #management:
+ #- 172.16.4.253
EnableLoadBalancer: false
diff --git a/environments/network-isolation-v6.yaml b/environments/network-isolation-v6.yaml
index 599a08b1..11ca5b31 100644
--- a/environments/network-isolation-v6.yaml
+++ b/environments/network-isolation-v6.yaml
@@ -53,3 +53,5 @@ parameter_defaults:
NovaIPv6: True
# Enable IPv6 environment for RabbitMQ.
RabbitIPv6: true
+ # Enable IPv6 environment for Memcached.
+ MemcachedIPv6: true
diff --git a/environments/puppet-ceph-devel.yaml b/environments/puppet-ceph-devel.yaml
index d782e8d8..fc4b8c7d 100644
--- a/environments/puppet-ceph-devel.yaml
+++ b/environments/puppet-ceph-devel.yaml
@@ -1,8 +1,7 @@
# A Heat environment file which can be used to enable a Ceph
-# storage cluster using the controller and 2 ceph nodes.
+# storage cluster using the controller and ceph nodes.
# Rbd backends are enabled for Cinder, Glance, and Nova.
parameters:
- CephStorageCount: 2
#NOTE: These ID's and keys should be regenerated for
# a production deployment. What is here is suitable for
# developer and CI testing only.
diff --git a/net-config-bond.yaml b/net-config-bond.yaml
index b624563f..0a162e77 100644
--- a/net-config-bond.yaml
+++ b/net-config-bond.yaml
@@ -4,6 +4,11 @@ description: >
Software Config to drive os-net-config with 2 bonded nics on a bridge.
parameters:
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ type: string
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
@@ -58,6 +63,7 @@ resources:
type: ovs_bond
name: bond1
use_dhcp: true
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
# os-net-config translates nic1 => em1 (for example)
-
diff --git a/network/endpoints/endpoint_data.yaml b/network/endpoints/endpoint_data.yaml
index 7a0bbf4a..46148dfb 100644
--- a/network/endpoints/endpoint_data.yaml
+++ b/network/endpoints/endpoint_data.yaml
@@ -37,15 +37,6 @@ Glance:
vip_param: GlanceApi
port: 9292
-GlanceRegistry:
- Internal:
- vip_param: GlanceRegistry
- Public:
- vip_param: Public
- Admin:
- vip_param: GlanceRegistry
- port: 9191
-
Mysql:
'':
vip_param: Mysql
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
index a31094a1..8f0f587a 100644
--- a/network/endpoints/endpoint_map.yaml
+++ b/network/endpoints/endpoint_map.yaml
@@ -11,7 +11,6 @@ parameters:
CeilometerApiVirtualIP: {type: string, default: ''}
CinderApiVirtualIP: {type: string, default: ''}
GlanceApiVirtualIP: {type: string, default: ''}
- GlanceRegistryVirtualIP: {type: string, default: ''}
HeatApiVirtualIP: {type: string, default: ''}
KeystoneAdminApiVirtualIP: {type: string, default: ''}
KeystonePublicApiVirtualIP: {type: string, default: ''}
@@ -33,9 +32,6 @@ parameters:
GlanceAdmin: {protocol: http, port: '9292', host: IP_ADDRESS}
GlanceInternal: {protocol: http, port: '9292', host: IP_ADDRESS}
GlancePublic: {protocol: http, port: '9292', host: IP_ADDRESS}
- GlanceRegistryAdmin: {protocol: http, port: '9191', host: IP_ADDRESS}
- GlanceRegistryInternal: {protocol: http, port: '9191', host: IP_ADDRESS}
- GlanceRegistryPublic: {protocol: http, port: '9191', host: IP_ADDRESS}
HeatAdmin: {protocol: http, port: '8004', host: IP_ADDRESS}
HeatInternal: {protocol: http, port: '8004', host: IP_ADDRESS}
HeatPublic: {protocol: http, port: '8004', host: IP_ADDRESS}
@@ -533,120 +529,6 @@ outputs:
IP_ADDRESS: {get_param: PublicVirtualIP}
- ':'
- get_param: [EndpointMap, GlancePublic, port]
- GlanceRegistryAdmin:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- port:
- get_param: [EndpointMap, GlanceRegistryAdmin, port]
- protocol:
- get_param: [EndpointMap, GlanceRegistryAdmin, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryAdmin, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryAdmin, port]
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryAdmin, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryAdmin, port]
- GlanceRegistryInternal:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- port:
- get_param: [EndpointMap, GlanceRegistryInternal, port]
- protocol:
- get_param: [EndpointMap, GlanceRegistryInternal, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryInternal, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryInternal, port]
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryInternal, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: GlanceRegistryVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryInternal, port]
- GlanceRegistryPublic:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- port:
- get_param: [EndpointMap, GlanceRegistryPublic, port]
- protocol:
- get_param: [EndpointMap, GlanceRegistryPublic, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryPublic, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryPublic, port]
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, GlanceRegistryPublic, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, GlanceRegistryPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- - ':'
- - get_param: [EndpointMap, GlanceRegistryPublic, port]
HeatAdmin:
host:
str_replace:
diff --git a/overcloud.yaml b/overcloud.yaml
index 5ad68913..22675210 100644
--- a/overcloud.yaml
+++ b/overcloud.yaml
@@ -104,6 +104,10 @@ parameters:
type: string
constraints:
- custom_constraint: nova.keypair
+ MemcachedIPv6:
+ default: false
+ description: Enable IPv6 features in Memcached.
+ type: boolean
NeutronExternalNetworkBridge:
description: Name of bridge used for external network traffic.
type: string
@@ -872,7 +876,6 @@ resources:
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
- GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
@@ -940,6 +943,7 @@ resources:
KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
KeystoneNotificationDriver: {get_param: KeystoneNotificationDriver}
KeystoneNotificationFormat: {get_param: KeystoneNotificationFormat}
+ MemcachedIPv6: {get_param: MemcachedIPv6}
MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
MysqlMaxConnections: {get_param: MysqlMaxConnections}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 14b70484..2e01c0cf 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -225,6 +225,13 @@ parameters:
Mount options for Pacemaker mount used as Glance storage.
Effective when GlanceFilePcmkManage is true.
type: string
+ HAProxyStatsPassword:
+ description: Password for HAProxy stats endpoint
+ type: string
+ HAProxyStatsUser:
+ description: User for HAProxy stats endpoint
+ default: admin
+ type: string
HAProxySyslogAddress:
default: /dev/log
description: Syslog address where HAproxy will send its log
@@ -326,6 +333,10 @@ parameters:
default: false
description: Whether to manage IPtables rules.
type: boolean
+ MemcachedIPv6:
+ default: false
+ description: Enable IPv6 features in Memcached.
+ type: boolean
PurgeFirewallRules:
default: false
description: Whether IPtables rules should be purged before setting up the new ones.
@@ -656,6 +667,10 @@ parameters:
default: 10
description: Partition Power to use when building Swift rings
type: number
+ SwiftRingBuild:
+ default: true
+ description: Whether to manage Swift rings or not
+ type: boolean
SwiftPassword:
description: The password for the swift service account, used by the swift proxy
services.
@@ -939,6 +954,8 @@ resources:
neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
neutron_enable_isolated_metadata: {get_param: NeutronEnableIsolatedMetadata}
haproxy_log_address: {get_param: HAProxySyslogAddress}
+ haproxy_stats_password: {get_param: HAProxyStatsPassword}
+ haproxy_stats_user: {get_param: HAProxyStatsUser}
heat.watch_server_url:
list_join:
- ''
@@ -1150,10 +1167,11 @@ resources:
ceilometer_coordination_url:
list_join:
- ''
- - - 'redis://'
- - {get_param: RedisVirtualIPUri}
- - ':6379/?password='
+ - - 'redis://:'
- {get_param: RedisPassword}
+ - '@'
+ - {get_param: RedisVirtualIPUri}
+ - ':6379/'
ceilometer_dsn:
list_join:
- ''
@@ -1167,6 +1185,7 @@ resources:
nova_enable_db_purge: {get_param: NovaEnableDBPurge}
nova_ipv6: {get_param: NovaIPv6}
corosync_ipv6: {get_param: CorosyncIPv6}
+ memcached_ipv6: {get_param: MemcachedIPv6}
nova_password: {get_param: NovaPassword}
nova_dsn:
list_join:
@@ -1204,6 +1223,7 @@ resources:
swift_hash_suffix: {get_param: SwiftHashSuffix}
swift_password: {get_param: SwiftPassword}
swift_part_power: {get_param: SwiftPartPower}
+ swift_ring_build: {get_param: SwiftRingBuild}
swift_replicas: {get_param: SwiftReplicas}
swift_min_part_hours: {get_param: SwiftMinPartHours}
swift_mount_check: {get_param: SwiftMountCheck}
@@ -1220,7 +1240,7 @@ resources:
- '/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]}]}
+ cinder_iscsi_network: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
@@ -1318,15 +1338,12 @@ resources:
swift::swift_hash_suffix: {get_input: swift_hash_suffix}
swift::proxy::authtoken::admin_password: {get_input: swift_password}
swift::proxy::workers: {get_input: swift_workers}
+ tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
tripleo::ringbuilder::part_power: {get_input: swift_part_power}
tripleo::ringbuilder::replicas: {get_input: swift_replicas}
tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
swift_mount_check: {get_input: swift_mount_check}
- # NOTE(dprince): build_ring support is currently not wired in.
- # See: https://review.openstack.org/#/c/109225/
- 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}
@@ -1619,6 +1636,7 @@ resources:
tripleo::firewall::manage_firewall: {get_input: manage_firewall}
tripleo::firewall::purge_firewall_rules: {get_input: purge_firewall_rules}
# Misc
+ memcached_ipv6: {get_input: memcached_ipv6}
memcached::listen_ip: {get_input: memcached_network}
neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
ntp::servers: {get_input: ntp_servers}
@@ -1629,6 +1647,9 @@ resources:
tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
tripleo::loadbalancer::haproxy_log_address: {get_input: haproxy_log_address}
tripleo::loadbalancer::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
+ tripleo::loadbalancer::haproxy_stats_user: {get_input: haproxy_stats_user}
+ tripleo::loadbalancer::haproxy_stats_password: {get_input: haproxy_stats_password}
+ tripleo::loadbalancer::redis_password: {get_input: redis_password}
tripleo::packages::enable_install: {get_input: enable_package_install}
tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index 288d224f..6d1d3b61 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -80,7 +80,6 @@ glance::api::pipeline: 'keystone'
glance::api::show_image_direct_url: true
glance::registry::pipeline: 'keystone'
glance::backend::swift::swift_store_create_container_on_put: true
-glance::backend::rbd::rbd_store_user: 'openstack'
glance_file_pcmk_directory: '/var/lib/glance/images'
# neutron
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index 5556a40c..a4d4784b 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -267,8 +267,15 @@ if hiera('step') >= 3 {
include ::glance::notify::rabbitmq
include join(['::glance::backend::', $glance_backend])
+ $nova_ipv6 = hiera('nova::use_ipv6', false)
+ if $nova_ipv6 {
+ $memcached_servers = suffix(hiera('memcache_node_ips_v6'), ':11211')
+ } else {
+ $memcached_servers = suffix(hiera('memcache_node_ips'), ':11211')
+ }
+
class { '::nova' :
- memcached_servers => suffix(hiera('memcache_node_ips'), ':11211'),
+ memcached_servers => $memcached_servers
}
include ::nova::config
include ::nova::api
@@ -626,8 +633,15 @@ if hiera('step') >= 3 {
}
$neutron_options = {'profile_support' => $_profile_support }
+ $memcached_ipv6 = hiera('memcached_ipv6', false)
+ if $memcached_ipv6 {
+ $horizon_memcached_servers = hiera('memcache_node_ips_v6', '[::1]')
+ } else {
+ $horizon_memcached_servers = hiera('memcache_node_ips', '127.0.0.1')
+ }
+
class { '::horizon':
- cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
+ cache_server_ip => $horizon_memcached_servers,
neutron_options => $neutron_options,
}
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 33338f2d..1e639529 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -1118,8 +1118,16 @@ if hiera('step') >= 3 {
$_profile_support = 'None'
}
$neutron_options = {'profile_support' => $_profile_support }
+
+ $memcached_ipv6 = hiera('memcached_ipv6', false)
+ if $memcached_ipv6 {
+ $horizon_memcached_servers = hiera('memcache_node_ips_v6', '[::1]')
+ } else {
+ $horizon_memcached_servers = hiera('memcache_node_ips', '127.0.0.1')
+ }
+
class { '::horizon':
- cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
+ cache_server_ip => $horizon_memcached_servers,
neutron_options => $neutron_options,
}
diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml
index c26aca77..8a4ea21f 100644
--- a/puppet/swift-storage.yaml
+++ b/puppet/swift-storage.yaml
@@ -30,6 +30,10 @@ parameters:
default: 10
description: Partition Power to use when building Swift rings
type: number
+ RingBuild:
+ default: true
+ description: Whether to manage Swift rings or not
+ type: boolean
Replicas:
type: number
default: 3
@@ -263,17 +267,14 @@ resources:
raw_data: {get_file: hieradata/object.yaml}
mapped_data: # data supplied directly to this deployment configuration, etc
swift::swift_hash_suffix: { get_input: swift_hash_suffix }
+ tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
tripleo::ringbuilder::part_power: { get_input: swift_part_power }
tripleo::ringbuilder::replicas: {get_input: swift_replicas }
- # Swift
swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
swift_mount_check: {get_input: swift_mount_check }
tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
ntp::servers: {get_input: ntp_servers}
timezone::timezone: {get_input: timezone}
- # NOTE(dprince): build_ring support is currently not wired in.
- # See: https://review.openstack.org/#/c/109225/
- tripleo::ringbuilder::build_ring: True
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
tripleo::packages::enable_install: {get_input: enable_package_install}
@@ -294,6 +295,7 @@ resources:
swift_hash_suffix: {get_param: HashSuffix}
swift_mount_check: {get_param: MountCheck}
swift_min_part_hours: {get_param: MinPartHours}
+ swift_ring_build: {get_param: RingBuild}
swift_part_power: {get_param: PartPower}
swift_replicas: { get_param: Replicas}
ntp_servers: {get_param: NtpServer}
diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py
index fe690d8c..2da873d0 100755
--- a/tools/yaml-validate.py
+++ b/tools/yaml-validate.py
@@ -24,10 +24,19 @@ def exit_usage():
def validate(filename):
print('Validating %s' % filename)
try:
- yaml.load(open(filename).read())
+ tpl = yaml.load(open(filename).read())
except Exception:
print(traceback.format_exc())
return 1
+ # yaml is OK, now walk the parameters and output a warning for unused ones
+ for p in tpl.get('parameters', {}):
+ str_p = '\'%s\'' % p
+ in_resources = str_p in str(tpl.get('resources', {}))
+ in_outputs = str_p in str(tpl.get('outputs', {}))
+ if not in_resources and not in_outputs:
+ print('Warning: parameter %s in template %s appears to be unused'
+ % (p, filename))
+
return 0
if len(sys.argv) < 2: