Add 'service_name' to composable services
authorDan Prince <dprince@redhat.com>
Tue, 19 Jul 2016 20:08:22 +0000 (16:08 -0400)
committerDan Prince <dprince@redhat.com>
Fri, 22 Jul 2016 11:29:39 +0000 (07:29 -0400)
This patch adds a new service_name section to each composable
service. We now have an explicit unit test check to ensure that
service_name exists in tools/yaml-validate.py.

This patch also wires service_names into hieradata on each
of the roles so that tools can access the deployed services locally
during deployment and upgrades.

Change-Id: I60861c5aa760534db3e314bba16a13b90ea72f0c

123 files changed:
overcloud.yaml
puppet/ceph-storage.yaml
puppet/cinder-storage.yaml
puppet/compute.yaml
puppet/controller.yaml
puppet/services/ceilometer-agent-central.yaml
puppet/services/ceilometer-agent-compute.yaml
puppet/services/ceilometer-agent-notification.yaml
puppet/services/ceilometer-api.yaml
puppet/services/ceilometer-base.yaml
puppet/services/ceilometer-collector.yaml
puppet/services/ceilometer-expirer.yaml
puppet/services/ceph-base.yaml
puppet/services/ceph-client.yaml
puppet/services/ceph-external.yaml
puppet/services/ceph-mon.yaml
puppet/services/ceph-osd.yaml
puppet/services/cinder-api.yaml
puppet/services/cinder-base.yaml
puppet/services/cinder-scheduler.yaml
puppet/services/cinder-volume.yaml
puppet/services/database/mongodb-base.yaml
puppet/services/database/mongodb.yaml
puppet/services/database/mysql.yaml
puppet/services/database/redis-base.yaml
puppet/services/database/redis.yaml
puppet/services/glance-api.yaml
puppet/services/glance-registry.yaml
puppet/services/gnocchi-api.yaml
puppet/services/gnocchi-base.yaml
puppet/services/gnocchi-metricd.yaml
puppet/services/gnocchi-statsd.yaml
puppet/services/haproxy.yaml
puppet/services/heat-api-cfn.yaml
puppet/services/heat-api-cloudwatch.yaml
puppet/services/heat-api.yaml
puppet/services/heat-base.yaml
puppet/services/heat-engine.yaml
puppet/services/horizon.yaml
puppet/services/ironic-api.yaml
puppet/services/ironic-base.yaml
puppet/services/ironic-conductor.yaml
puppet/services/keepalived.yaml
puppet/services/kernel.yaml
puppet/services/keystone.yaml
puppet/services/memcached.yaml
puppet/services/neutron-base.yaml
puppet/services/neutron-compute-plugin-midonet.yaml
puppet/services/neutron-compute-plugin-nuage.yaml
puppet/services/neutron-compute-plugin-opencontrail.yaml
puppet/services/neutron-compute-plugin-plumgrid.yaml
puppet/services/neutron-dhcp.yaml
puppet/services/neutron-l3.yaml
puppet/services/neutron-metadata.yaml
puppet/services/neutron-midonet.yaml
puppet/services/neutron-ovs-agent.yaml
puppet/services/neutron-plugin-ml2.yaml
puppet/services/neutron-plugin-nuage.yaml
puppet/services/neutron-plugin-opencontrail.yaml
puppet/services/neutron-plugin-plumgrid.yaml
puppet/services/neutron-server.yaml
puppet/services/nova-api.yaml
puppet/services/nova-base.yaml
puppet/services/nova-compute.yaml
puppet/services/nova-conductor.yaml
puppet/services/nova-consoleauth.yaml
puppet/services/nova-libvirt.yaml
puppet/services/nova-scheduler.yaml
puppet/services/nova-vncproxy.yaml
puppet/services/pacemaker.yaml
puppet/services/pacemaker/ceilometer-agent-central.yaml
puppet/services/pacemaker/ceilometer-agent-notification.yaml
puppet/services/pacemaker/ceilometer-api.yaml
puppet/services/pacemaker/ceilometer-collector.yaml
puppet/services/pacemaker/cinder-api.yaml
puppet/services/pacemaker/cinder-scheduler.yaml
puppet/services/pacemaker/cinder-volume.yaml
puppet/services/pacemaker/database/mongodb.yaml
puppet/services/pacemaker/database/mysql.yaml
puppet/services/pacemaker/database/redis.yaml
puppet/services/pacemaker/glance-api.yaml
puppet/services/pacemaker/glance-registry.yaml
puppet/services/pacemaker/gnocchi-api.yaml
puppet/services/pacemaker/gnocchi-metricd.yaml
puppet/services/pacemaker/gnocchi-statsd.yaml
puppet/services/pacemaker/haproxy.yaml
puppet/services/pacemaker/heat-api-cfn.yaml
puppet/services/pacemaker/heat-api-cloudwatch.yaml
puppet/services/pacemaker/heat-api.yaml
puppet/services/pacemaker/heat-engine.yaml
puppet/services/pacemaker/horizon.yaml
puppet/services/pacemaker/keystone.yaml
puppet/services/pacemaker/memcached.yaml
puppet/services/pacemaker/neutron-dhcp.yaml
puppet/services/pacemaker/neutron-l3.yaml
puppet/services/pacemaker/neutron-metadata.yaml
puppet/services/pacemaker/neutron-midonet.yaml
puppet/services/pacemaker/neutron-ovs-agent.yaml
puppet/services/pacemaker/neutron-plugin-ml2.yaml
puppet/services/pacemaker/neutron-plugin-nuage.yaml
puppet/services/pacemaker/neutron-plugin-opencontrail.yaml
puppet/services/pacemaker/neutron-plugin-plumgrid.yaml
puppet/services/pacemaker/neutron-server.yaml
puppet/services/pacemaker/nova-api.yaml
puppet/services/pacemaker/nova-conductor.yaml
puppet/services/pacemaker/nova-consoleauth.yaml
puppet/services/pacemaker/nova-scheduler.yaml
puppet/services/pacemaker/nova-vncproxy.yaml
puppet/services/pacemaker/rabbitmq.yaml
puppet/services/pacemaker/sahara-api.yaml
puppet/services/pacemaker/sahara-engine.yaml
puppet/services/rabbitmq.yaml
puppet/services/sahara-api.yaml
puppet/services/sahara-base.yaml
puppet/services/sahara-engine.yaml
puppet/services/services.yaml
puppet/services/snmp.yaml
puppet/services/swift-proxy.yaml
puppet/services/swift-storage.yaml
puppet/services/time/ntp.yaml
puppet/services/time/timezone.yaml
puppet/swift-storage.yaml
tools/yaml-validate.py

index 4e00b97..503acf5 100644 (file)
@@ -731,6 +731,7 @@ resources:
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: ControllerSchedulerHints}
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
 
   ComputeServiceChain:
 
@@ -793,6 +794,7 @@ resources:
           SchedulerHints: {get_param: NovaComputeSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
 
   BlockStorageServiceChain:
     type: OS::TripleO::Services
@@ -826,6 +828,7 @@ resources:
           SchedulerHints: {get_param: BlockStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
 
   ObjectStorageServiceChain:
     type: OS::TripleO::Services
@@ -863,6 +866,7 @@ resources:
           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
 
   CephStorageServiceChain:
     type: OS::TripleO::Services
@@ -896,6 +900,7 @@ resources:
           SchedulerHints: {get_param: CephStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
 
   ControllerIpListMap:
     type: OS::TripleO::Network::Ports::NetIpListMap
index b294814..77ca4dc 100644 (file)
@@ -91,6 +91,9 @@ parameters:
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -247,6 +250,7 @@ resources:
             - heat_config_%{::deploy_config_name}
             - ceph_extraconfig
             - extraconfig
+            - service_names
             - service_configs
             - ceph_cluster # provided by CephClusterConfig
             - ceph
@@ -256,6 +260,9 @@ resources:
             - network
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
               mapped_data: {get_param: ServiceConfigSettings}
             common:
index 0591802..edd81b9 100644 (file)
@@ -91,6 +91,9 @@ parameters:
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -253,6 +256,7 @@ resources:
             - heat_config_%{::deploy_config_name}
             - volume_extraconfig
             - extraconfig
+            - service_names
             - service_configs
             - volume
             - all_nodes # provided by allNodesConfig
@@ -261,6 +265,9 @@ resources:
             - network
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
               mapped_data: {get_param: ServiceConfigSettings}
             common:
index d4fdea3..0e02916 100644 (file)
@@ -212,6 +212,9 @@ parameters:
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -361,6 +364,7 @@ resources:
             - heat_config_%{::deploy_config_name}
             - compute_extraconfig
             - extraconfig
+            - service_names
             - service_configs
             - compute
             - ceph_cluster # provided by CephClusterConfig
@@ -376,6 +380,9 @@ resources:
             - neutron_opencontrail_data  # Optionally provided by ComputeExtraConfigPre
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
               mapped_data: {get_param: ServiceConfigSettings}
             compute_extraconfig:
index ee4311d..6519a1d 100644 (file)
@@ -334,6 +334,9 @@ parameters:
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -660,6 +663,7 @@ resources:
             - controller_extraconfig
             - extraconfig
             - service_configs
+            - service_names
             - controller
             - database
             - object
@@ -681,6 +685,9 @@ resources:
             - midonet_data #Optionally provided by AllNodesExtraConfig
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
               mapped_data: {get_param: ServiceConfigSettings}
             controller_extraconfig:
index 294e7dd..34735f7 100644 (file)
@@ -28,6 +28,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Central Agent role.
     value:
+      service_name: ceilometer-agent-central
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 737836a..9e4d057 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Compute Agent role.
     value:
+      service_name: ceilometer-agent-compute
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 523dabb..b65e189 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Notification Agent role.
     value:
+      service_name: ceilometer-agent-notification
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 06c2ed1..5dce7c3 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer API role.
     value:
+      service_name: ceilometer-api
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 1dea785..0370da5 100644 (file)
@@ -62,6 +62,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer role.
     value:
+      service_name: ceilometer-base
       config_settings:
         ceilometer::db::database_connection:
           list_join:
index 2962721..540a465 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Collector role.
     value:
+      service_name: ceilometer-collector
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 796abe1..7816a85 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Expirer role.
     value:
+      service_name: ceilometer-expirer
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 065901b..76f649b 100644 (file)
@@ -57,6 +57,7 @@ outputs:
   role_data:
     description: Role data for the Ceph base service.
     value:
+      service_name: ceph-base
       config_settings:
         tripleo::profile::base::ceph::ceph_ipv6: {get_param: CephIPv6}
         tripleo::profile::base::ceph::enable_ceph_storage: {get_param: ControllerEnableCephStorage}
index ca920a5..fc23f71 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Cinder OSD service.
     value:
+      service_name: ceph-client
       config_settings:
         get_attr: [CephBase, role_data, config_settings]
       step_config: |
index 4522f41..b656e24 100644 (file)
@@ -40,6 +40,7 @@ outputs:
   role_data:
     description: Role data for the Ceph External service.
     value:
+      service_name: ceph-external
       config_settings:
         tripleo::profile::base::ceph::ceph_mon_host: {get_param: CephExternalMonHost}
         ceph::profile::params::fsid: {get_param: CephClusterFSID}
index d6e3aa7..68a5945 100644 (file)
@@ -41,6 +41,7 @@ outputs:
   role_data:
     description: Role data for the Ceph Monitor service.
     value:
+      service_name: ceph-mon
       config_settings:
         map_merge:
           - get_attr: [CephBase, role_data, config_settings]
index 24f6028..eaba271 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Cinder OSD service.
     value:
+      service_name: ceph-osd
       config_settings:
         get_attr: [CephBase, role_data, config_settings]
       step_config: |
index c53bef6..0b4817a 100644 (file)
@@ -30,6 +30,7 @@ outputs:
   role_data:
     description: Role data for the Cinder API role.
     value:
+      service_name: cinder-api
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index f6d2b64..b6ffdec 100644 (file)
@@ -40,6 +40,7 @@ outputs:
   role_data:
     description: Role data for the Cinder base service.
     value:
+      service_name: cinder-base
       config_settings:
         cinder::database_connection:
           list_join:
index 6bdf86b..2e1e852 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Cinder Scheduler role.
     value:
+      service_name: cinder-scheduler
       config_settings:
         get_attr: [CinderBase, role_data, config_settings]
       step_config: |
index 41f3827..69a38b0 100644 (file)
@@ -59,6 +59,7 @@ outputs:
   role_data:
     description: Role data for the Cinder Volume role.
     value:
+      service_name: cinder-volume
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index ecd1d31..ed0b92a 100644 (file)
@@ -24,6 +24,7 @@ outputs:
   role_data:
     description: Role data for the MongoDB base service.
     value:
+      service_name: mongodb-base
       config_settings:
         mongodb::server::nojournal: {get_param: MongoDbNoJournal}
         mongodb::server::ipv6: {get_param: MongoDbIPv6}
index c048870..c2d36fc 100644 (file)
@@ -19,6 +19,7 @@ outputs:
   role_data:
     description: Service mongodb using composable services.
     value:
+      service_name: mongodb
       config_settings:
         map_merge:
           - get_attr: [MongoDbBase, role_data, config_settings]
index 3a23650..992dc11 100644 (file)
@@ -15,6 +15,7 @@ outputs:
   role_data:
     description: Service MySQL using composable services.
     value:
+      service_name: mysql
       config_settings:
       step_config: |
         include ::tripleo::profile::base::database::mysql
index 77b3c9f..c7b083f 100644 (file)
@@ -13,6 +13,7 @@ outputs:
   role_data:
     description: Role data for the redis role.
     value:
+      service_name: redis-base
       config_settings:
        redis::requirepass: {get_param: RedisPassword}
        redis::masterauth: {get_param: RedisPassword}
index 2669592..080f72b 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the redis role.
     value:
+      service_name: redis
       config_settings:
         map_merge:
           - get_attr: [RedisBase, role_data, config_settings]
index f1f98a8..120c57f 100644 (file)
@@ -65,6 +65,7 @@ outputs:
   role_data:
     description: Role data for the Glance API role.
     value:
+      service_name: glance-api
       config_settings:
         glance::api::database_connection:
           list_join:
index d71157f..ea96fc5 100644 (file)
@@ -26,6 +26,7 @@ outputs:
   role_data:
     description: Role data for the Glance Registry role.
     value:
+      service_name: glance-registry
       config_settings:
         glance::registry::database_connection:
           list_join:
index a7b203b..f687763 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-api
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index e49c440..f69dfd0 100644 (file)
@@ -39,6 +39,7 @@ outputs:
   role_data:
     description: Shared role data for the Heat services.
     value:
+      service_name: gnocchi-base
       config_settings:
         #Gnocchi engine
         gnocchi::debug: {get_input: debug}
index bafc8dd..2021538 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-metricd
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 25abf49..4fef7af 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-statsd
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 844637b..73b4000 100644 (file)
@@ -14,5 +14,6 @@ outputs:
   role_data:
     description: Role data for the HAproxy role.
     value:
+      service_name: haproxy
       step_config: |
         include ::tripleo::profile::base::haproxy
index c1f26c1..8d23733 100644 (file)
@@ -30,6 +30,7 @@ outputs:
   role_data:
     description: Role data for the Heat CloudFormation API role.
     value:
+      service_name: heat-api-cfn
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 2c56951..c996cf1 100644 (file)
@@ -22,6 +22,7 @@ outputs:
   role_data:
     description: Role data for the Heat Cloudwatch API role.
     value:
+      service_name: heat-api-cloudwatch
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index d3461e6..41c7d9a 100644 (file)
@@ -30,6 +30,7 @@ outputs:
   role_data:
     description: Role data for the Heat API role.
     value:
+      service_name: heat-api
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 88e2794..2a7aeab 100644 (file)
@@ -31,6 +31,7 @@ outputs:
   role_data:
     description: Shared role data for the Heat services.
     value:
+      service_name: heat-base
       config_settings:
         heat::rabbit_userid: {get_param: RabbitUserName}
         heat::rabbit_password: {get_param: RabbitPassword}
index 77af55e..eb8534f 100644 (file)
@@ -35,6 +35,7 @@ outputs:
   role_data:
     description: Role data for the Heat Engine role.
     value:
+      service_name: heat-engine
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 01cf579..022e3fb 100644 (file)
@@ -23,6 +23,7 @@ outputs:
   role_data:
     description: Role data for the Horizon role.
     value:
+      service_name: horizon
       config_settings:
         horizon::allowed_hosts: {get_param: HorizonAllowedHosts}
         neutron::plugins::ml2::mechanism_drivers:
index 5ab03fc..6f369f7 100644 (file)
@@ -24,6 +24,7 @@ outputs:
   role_data:
     description: Role data for the Ironic API role.
     value:
+      service_name: ironic-api
       config_settings:
         map_merge:
           - get_attr: [IronicBase, role_data, config_settings]
index df82bb6..fb9d4dd 100644 (file)
@@ -40,6 +40,7 @@ outputs:
   role_data:
     description: Role data for the Ironic role.
     value:
+      service_name: ironic-base
       config_settings:
         ironic::database_connection:
           list_join:
index 26d4e0e..574e5ae 100644 (file)
@@ -24,6 +24,7 @@ outputs:
   role_data:
     description: Role data for the Ironic conductor role.
     value:
+      service_name: ironic-conductor
       config_settings:
         map_merge:
           - get_attr: [IronicBase, role_data, config_settings]
index 09ce26b..95a401c 100644 (file)
@@ -14,5 +14,6 @@ outputs:
   role_data:
     description: Role data for the Keepalived role.
     value:
+      service_name: keepalived
       step_config: |
         include ::tripleo::profile::base::keepalived
index b429c5e..9e8a53f 100644 (file)
@@ -14,5 +14,6 @@ outputs:
   role_data:
     description: Role data for the Kernel modules
     value:
+      service_name: kernel
       step_config: |
         include ::tripleo::profile::base::kernel
index 404ce6c..83bab34 100644 (file)
@@ -92,6 +92,7 @@ outputs:
   role_data:
     description: Role data for the Keystone role.
     value:
+      service_name: keystone
       config_settings:
         keystone::database_connection:
           list_join:
index fcd0adc..55f8c08 100644 (file)
@@ -14,6 +14,7 @@ outputs:
   role_data:
     description: Role data for the Memcached role.
     value:
+      service_name: memcached
       config_settings:
       step_config: |
         include ::tripleo::profile::base::memcached
index 8bd8d98..7143cd9 100644 (file)
@@ -47,6 +47,7 @@ outputs:
   role_data:
     description: Role data for the Neutron base service.
     value:
+      service_name: neutron-base
       config_settings:
         neutron::rabbit_password: {get_param: RabbitPassword}
         neutron::rabbit_user: {get_param: RabbitUserName}
index c3b65c4..f08afd1 100644 (file)
@@ -14,6 +14,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Compute Plumgrid plugin
     value:
+      service_name: neutron-compute-plugin-midonet
       config_settings:
       step_config: |
         include ::tripleo::profile::base::neutron::agents::midonet
index c5fbeec..f6e2f3a 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Compute Nuage plugin
     value:
+      service_name: neutron-compute-plugin-nuage
       config_settings:
         tripleo::profile::base::neutron::agents::nuage::nova_os_tenant_name: 'service'
         tripleo::profile::base::neutron::agents::nuage::nova_os_password: {get_param: NovaPassword}
index 2c79c56..b95a655 100644 (file)
@@ -14,6 +14,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Compute OpenContrail plugin
     value:
+      service_name: neutron-compute-plugin-opencontrail
       config_settings:
       step_config: |
         include ::tripleo::profile::base::neutron::opencontrail::vrouter
index b8ec389..064ac9e 100644 (file)
@@ -14,6 +14,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Compute Plumgrid plugin
     value:
+      service_name: neutron-compute-plugin-plumgrid
       config_settings:
       step_config: |
         include tripleo::profile::base::neutron::plumgrid
index 5d02bc9..5b903ea 100644 (file)
@@ -23,6 +23,7 @@ outputs:
   role_data:
     description: Role data for the Neutron DHCP agent service.
     value:
+      service_name: neutron-dhcp
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 20c82dc..0e56861 100644 (file)
@@ -26,6 +26,7 @@ outputs:
   role_data:
     description: Role data for the Neutron L3 agent service.
     value:
+      service_name: neutron-l3
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index e221b3a..04c80e0 100644 (file)
@@ -31,6 +31,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Metadata agent service.
     value:
+      service_name: neutron-metadata
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 736c01c..d48d97f 100644 (file)
@@ -36,6 +36,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Midonet plugin and services
     value:
+      service_name: neutron-midonet
       config_settings:
         tripleo::profile::base::neutron::midonet::admin_password: {get_param: AdminPassword}
         tripleo::profile::base::neutron::midonet::keystone_admin_token: {get_param: AdminToken}
index 0e1dbb2..30caeec 100644 (file)
@@ -47,6 +47,7 @@ outputs:
   role_data:
     description: Role data for the Neutron OVS agent service.
     value:
+      service_name: neutron-ovs-agent
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index ff13d5d..3511b2f 100644 (file)
@@ -61,6 +61,7 @@ outputs:
   role_data:
     description: Role data for the Neutron ML2 plugin.
     value:
+      service_name: neutron-plugin-ml2
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 3c3d8b6..3889f84 100644 (file)
@@ -59,6 +59,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Nuage plugin
     value:
+      service_name: neutron-plugin-nuage
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 9c58c03..1d23c49 100644 (file)
@@ -42,6 +42,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Opencontrail plugin
     value:
+      service_name: neutron-plugin-opencontrail
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index a0ac46e..484d163 100644 (file)
@@ -80,6 +80,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Plumgrid plugin
     value:
+      service_name: neutron-plugin-plumgrid
       config_settings:
         neutron::plugins::plumgrid::connection:
           list_join:
index d759d42..c9f6d68 100644 (file)
@@ -39,6 +39,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Server agent service.
     value:
+      service_name: neutron-server
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 0ff159d..69f6398 100644 (file)
@@ -22,6 +22,7 @@ outputs:
   role_data:
     description: Role data for the Nova API service.
     value:
+      service_name: nova-api
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 7de14f6..ddf39b6 100644 (file)
@@ -31,6 +31,7 @@ outputs:
   role_data:
     description: Role data for the Neutron base service.
     value:
+      service_name: nova-base
       config_settings:
         nova::rabbit_password: {get_param: RabbitPassword}
         nova::rabbit_user: {get_param: RabbitUserName}
index 679586f..ab6e201 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Nova Compute service.
     value:
+      service_name: nova-compute
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 412dd27..6d186ab 100644 (file)
@@ -22,6 +22,7 @@ outputs:
   role_data:
     description: Role data for the Nova Conductor service.
     value:
+      service_name: nova-conductor
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 791c544..bc8a1e1 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Nova Consoleauth service.
     value:
+      service_name: nova-consoleauth
       config_settings:
         get_attr: [NovaBase, role_data, config_settings]
       step_config: |
index e3309c3..074755f 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Libvirt service.
     value:
+      service_name: nova-libvirt
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 65ed664..1738320 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Nova Scheduler service.
     value:
+      service_name: nova-scheduler
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 93a25ab..1bf157c 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Nova Vncproxy service.
     value:
+      service_name: nova-vncproxy
       config_settings:
         get_attr: [NovaBase, role_data, config_settings]
       step_config: |
index dc1d6e4..3b78bef 100644 (file)
@@ -14,6 +14,7 @@ outputs:
   role_data:
     description: Role data for the Pacemaker role.
     value:
+      service_name: pacemaker
       config_settings:
       step_config: |
         include ::tripleo::profile::base::pacemaker
index 8fb7bd2..3ba78fc 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Central Agent pacemaker role.
     value:
+      service_name: ceilometer-agent-central
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 5470978..0fb008c 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Notification Agent pacemaker role.
     value:
+      service_name: ceilometer-agent-notification
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index d45b157..5cd8bb8 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer API pacemaker role.
     value:
+      service_name: ceilometer-api
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 487a557..9e3671e 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Collector pacemaker role.
     value:
+      service_name: ceilometer-collector
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 0f66cc0..d1313b2 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Cinder API role.
     value:
+      service_name: cinder-api
       config_settings:
         map_merge:
           - get_attr: [CinderApiBase, role_data, config_settings]
index d1472c0..c4e0a34 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Cinder Scheduler role.
     value:
+      service_name: cinder-scheduler
       config_settings:
         map_merge:
           - get_attr: [CinderSchedulerBase, role_data, config_settings]
index ee4e6ce..3e28039 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Cinder Volume role.
     value:
+      service_name: cinder-volume
       config_settings:
         map_merge:
           - get_attr: [CinderVolumeBase, role_data, config_settings]
index b2e9e0b..c09f93a 100644 (file)
@@ -19,6 +19,7 @@ outputs:
   role_data:
     description: Service mongodb using composable services.
     value:
+      service_name: mongodb
       config_settings:
         map_merge:
           - get_attr: [MongoDbBase, role_data, config_settings]
index 1cecbfa..cc9dc94 100644 (file)
@@ -15,6 +15,7 @@ outputs:
   role_data:
     description: Service MySQL with Pacemaker using composable services.
     value:
+      service_name: mysql
       config_settings:
       step_config: |
         include ::tripleo::profile::pacemaker::database::mysql
index 0e46f8a..0df62a3 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Role data for the Redis pacemaker role.
     value:
+      service_name: redis
       config_settings:
         map_merge:
           - get_attr: [RedisBase, role_data, config_settings]
index 5a581dc..bc611b0 100644 (file)
@@ -45,6 +45,7 @@ outputs:
   role_data:
     description: Role data for the Glance role.
     value:
+      service_name: glance-api
       config_settings:
         map_merge:
           - get_attr: [GlanceApiBase, role_data, config_settings]
index 8b88cb9..72ca939 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Glance role.
     value:
+      service_name: glance-registry
       config_settings:
         map_merge:
           - get_attr: [GlanceRegistryBase, role_data, config_settings]
index ac5355d..6c01bc5 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-api
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 8a5562e..4895bac 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-metricd
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 8625b4e..2760df3 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Gnocchi role.
     value:
+      service_name: gnocchi-statsd
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index c2ca281..811a669 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the HAproxy with pacemaker role.
     value:
+      service_name: haproxy
       config_settings:
         map_merge:
           - get_attr: [LoadbalancerServiceBase, role_data, config_settings]
index 780c295..bf01ced 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Heat CloudFormation API role.
     value:
+      service_name: heat-api-cfn
       config_settings:
         map_merge:
           - get_attr: [HeatApiCfnBase, role_data, config_settings]
index 2fa82fe..6ee844d 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Heat Cloudwatch API role.
     value:
+      service_name: heat-api-cloudwatch
       config_settings:
         map_merge:
            - get_attr: [HeatApiCloudwatchBase, role_data, config_settings]
index be897a5..1460442 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the Heat API role.
     value:
+      service_name: heat-api
       config_settings:
         map_merge:
           - get_attr: [HeatApiBase, role_data, config_settings]
index a8ed5c0..450917f 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Heat engine role.
     value:
+      service_name: heat-engine
       config_settings:
         map_merge:
           - get_attr: [HeatEngineBase, role_data, config_settings]
index ea76896..f8b5ad0 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Horizon role.
     value:
+      service_name: horizon
       config_settings:
         get_attr: [HorizonBase, role_data, config_settings]
       step_config: |
index 04e9036..f5f136d 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Keystone pacemaker role.
     value:
+      service_name: keystone
       config_settings:
         map_merge:
           - get_attr: [KeystoneServiceBase, role_data, config_settings]
index 9a11855..43cd528 100644 (file)
@@ -19,6 +19,7 @@ outputs:
   role_data:
     description: Role data for the Memcached pacemaker role.
     value:
+      service_name: memcached
       config_settings:
         map_merge:
           - get_attr: [MemcachedServiceBase, role_data, config_settings]
index 6f51437..312e275 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron DHCP role.
     value:
+      service_name: neutron-dhcp
       config_settings:
         map_merge:
           - get_attr: [NeutronDhcpBase, role_data, config_settings]
index cb9c32d..8607614 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron L3 role.
     value:
+      service_name: neutron-l3
       config_settings:
         map_merge:
           - get_attr: [NeutronL3Base, role_data, config_settings]
index 1c74b26..96f3fb4 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Metadata role.
     value:
+      service_name: neutron-metadata
       config_settings:
         map_merge:
           - get_attr: [NeutronMetadataBase, role_data, config_settings]
index f9fd992..3c185da 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Midonet plugin.
     value:
+      service_name: neutron-midonet
       config_settings:
         map_merge:
           - get_attr: [NeutronMidonetBase, role_data, config_settings]
index a17d7a6..214dc1c 100644 (file)
@@ -19,6 +19,7 @@ outputs:
   role_data:
     description: Role data for the Neutron OVS agent service.
     value:
+      service_name: neutron-ovs-agent
       config_settings:
         get_attr: [NeutronOvsBase, role_data, config_settings]
       step_config: |
index 9091b5b..a4c4a5e 100644 (file)
@@ -19,6 +19,7 @@ outputs:
   role_data:
     description: Role data for the Neutron ML2 plugin.
     value:
+      service_name: neutron-plugin-ml2
       config_settings:
         map_merge:
           - get_attr: [NeutronMl2Base, role_data, config_settings]
index 704d922..64ad0f4 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Nuage plugin.
     value:
+      service_name: neutron-plugin-nuage
       config_settings:
         map_merge:
           - get_attr: [NeutronPluginNuageBase, role_data, config_settings]
index d8c7550..f2fd5b9 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron OpenContrail plugin.
     value:
+      service_name: neutron-plugin-opencontrail
       config_settings:
         map_merge:
           - get_attr: [NeutronPluginOpenContrail, role_data, config_settings]
index c2e8eaa..9ceaf00 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron PLUMgrid plugin.
     value:
+      service_name: neutron-plugin-plumgrid
       config_settings:
         map_merge:
           - get_attr: [NeutronPluginPlumgridBase, role_data, config_settings]
index 60599e7..7234c1d 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Neutron Server.
     value:
+      service_name: neutron-server
       config_settings:
         map_merge:
           - get_attr: [NeutronServerBase, role_data, config_settings]
index 1b5011b..467955f 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Nova API role.
     value:
+      service_name: nova-api
       config_settings:
         map_merge:
           - get_attr: [NovaApiBase, role_data, config_settings]
index a484f0d..fe0b00f 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Nova Conductor role.
     value:
+      service_name: nova-conductor
       config_settings:
         map_merge:
           - get_attr: [NovaConductorBase, role_data, config_settings]
index f9b6b05..cc683eb 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Nova Consoleauth role.
     value:
+      service_name: nova-consoleauth
       config_settings:
         map_merge:
           - get_attr: [NovaConsoleauthBase, role_data, config_settings]
index 0032cbe..dbb643c 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Nova Scheduler role.
     value:
+      service_name: nova-scheduler
       config_settings:
         map_merge:
           - get_attr: [NovaSchedulerBase, role_data, config_settings]
index 5239524..8fb07d5 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Nova Vncproxy role.
     value:
+      service_name: nova-vncproxy
       config_settings:
         map_merge:
           - get_attr: [NovaVncproxyBase, role_data, config_settings]
index 20fb2e4..b01caee 100644 (file)
@@ -20,6 +20,7 @@ outputs:
   role_data:
     description: Role data for the RabbitMQ pacemaker role.
     value:
+      service_name: rabbitmq
       config_settings:
         map_merge:
           - get_attr: [RabbitMQServiceBase, role_data, config_settings]
index a5db77c..a4dfa13 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Sahara API role.
     value:
+      service_name: sahara-api
       config_settings:
         map_merge:
           - get_attr: [SaharaApiBase, role_data, config_settings]
index 129f88b..31d9bea 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role data for the Sahara Engine role.
     value:
+      service_name: sahara-engine
       config_settings:
         map_merge:
           - get_attr: [SaharaEngineBase, role_data, config_settings]
index 3688c4a..7b4b10e 100644 (file)
@@ -30,6 +30,7 @@ outputs:
   role_data:
     description: Role data for the RabbitMQ role.
     value:
+      service_name: rabbitmq
       config_settings:
         rabbitmq::file_limit: {get_param: RabbitFDLimit}
         rabbitmq::default_user: {get_param: RabbitUserName}
index 93bf738..a0a98b1 100644 (file)
@@ -34,6 +34,7 @@ outputs:
   role_data:
     description: Role data for the Sahara API role.
     value:
+      service_name: sahara-api
       config_settings:
         map_merge:
           - get_attr: [SaharaBase, role_data, config_settings]
index 275d753..72fc33a 100644 (file)
@@ -31,6 +31,7 @@ outputs:
   role_data:
     description: Role data for the Sahara base service.
     value:
+      service_name: sahara-base
       config_settings:
         sahara::rabbit_password: {get_param: RabbitPassword}
         sahara::rabbit_user: {get_param: RabbitUserName}
index f0411a3..4cd9325 100644 (file)
@@ -23,6 +23,7 @@ outputs:
   role_data:
     description: Role data for the Sahara Engine role.
     value:
+      service_name: sahara-engine
       config_settings:
         map_merge:
           - get_attr: [SaharaBase, role_data, config_settings]
index 91f0e04..64a0f98 100644 (file)
@@ -30,5 +30,6 @@ outputs:
   role_data:
     description: Combined Role data for this set of services.
     value:
+      service_names: {get_attr: [ServiceChain, role_data, service_name]}
       config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
       step_config: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}
index 24ee293..36e510b 100644 (file)
@@ -24,6 +24,7 @@ outputs:
   role_data:
     description: Role data for the SNMP services
     value:
+      service_name: snmp
       config_settings:
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
index 930b9e3..3ae1b01 100644 (file)
@@ -35,6 +35,7 @@ outputs:
   role_data:
     description: Role data for the Swift proxy service.
     value:
+      service_name: swift-proxy
       config_settings:
         # Swift
         swift::proxy::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri]}
index 980c95f..02746a9 100644 (file)
@@ -36,6 +36,7 @@ outputs:
   role_data:
     description: Role data for the Swift Proxy role.
     value:
+      service_name: swift-storage
       config_settings:
         # Swift
         swift::storage::all::mount_check: {get_param: SwiftMountCheck}
index 930dca4..a0e51fe 100644 (file)
@@ -21,6 +21,7 @@ outputs:
   role_data:
     description: Role ntp using composable services.
     value:
+      service_name: ntp
       config_settings:
         ntp::ntpservers: {get_param: NtpServer}
       step_config: |
index 13fda98..805c905 100644 (file)
@@ -18,6 +18,7 @@ outputs:
   role_data:
     description: Timezone role using composable services.
     value:
+      service_name: timezone
       config_settings:
         timezone::timezone: {get_param: TimeZone}
       step_config: |
index 9d049bd..7b41c72 100644 (file)
@@ -112,6 +112,9 @@ parameters:
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -255,6 +258,7 @@ resources:
             - heat_config_%{::deploy_config_name}
             - object_extraconfig
             - extraconfig
+            - service_names
             - service_configs
             - object
             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
@@ -264,6 +268,9 @@ resources:
             - network
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
               mapped_data: {get_param: ServiceConfigSettings}
             common:
index 2da873d..34219ef 100755 (executable)
@@ -21,23 +21,49 @@ def exit_usage():
     print('Usage %s <yaml file or directory>' % sys.argv[0])
     sys.exit(1)
 
+
+def validate_service(filename, tpl):
+    if 'outputs' in tpl and 'role_data' in tpl['outputs']:
+        if 'value' not in tpl['outputs']['role_data']:
+            print('ERROR: invalid role_data for filename: %s'
+                  % filename)
+            return 1
+        role_data = tpl['outputs']['role_data']['value']
+        if 'service_name' not in role_data:
+            print('ERROR: service_name is required in role_data for %s.'
+                  % filename)
+            return 1
+        if (role_data['service_name'] !=
+                os.path.basename(filename).split('.')[0]):
+            print('ERROR: service_name should match file name for service: %s.'
+                  % filename)
+            return 1
+    return 0
+
+
 def validate(filename):
     print('Validating %s' % filename)
+    retval = 0
     try:
         tpl = yaml.load(open(filename).read())
+
+        if (filename.startswith('./puppet/services/') and
+                filename != './puppet/services/services.yaml'):
+            retval = validate_service(filename, tpl)
+
     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', {}))
+        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
+    return retval
 
 if len(sys.argv) < 2:
     exit_usage()