Bug 1389587

Summary: rhel-osp-director: OSP10 with composable roles - deployment fails right away: ERROR: Failed to validate: : resources.ControllerServiceChain: : The Resource Type (OS::TripleO::Services::OpenDaylightApi) could not be found
Product: Red Hat OpenStack Reporter: Alexander Chuzhoy <sasha>
Component: rhosp-directorAssignee: Steven Hardy <shardy>
Status: CLOSED CURRENTRELEASE QA Contact: Marius Cornea <mcornea>
Severity: unspecified Docs Contact:
Priority: urgent    
Version: 10.0 (Newton)CC: dbecker, jcoufal, jslagle, mburns, mcornea, morazi, rhel-osp-director-maint
Target Milestone: rcKeywords: Triaged
Target Release: 10.0 (Newton)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-tripleo-heat-templates-5.0.0-1.1.el7ost.noarch.rpm Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-12-16 16:51:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Alexander Chuzhoy 2016-10-27 23:44:36 UTC
rhel-osp-director:   OSP10 with composable roles - deployment fails right away: ERROR: Failed to validate: : resources.ControllerServiceChain: : The Resource Type (OS::TripleO::Services::OpenDaylightApi) could not be found

Environment:
openstack-puppet-modules-9.3.0-0.20161003154825.8c758d6.el7ost.noarch
openstack-tripleo-heat-templates-5.0.0-0.20161008015357.0d3e3e3.1.el7ost.noarch
instack-undercloud-5.0.0-0.20161007201832.f044a47.el7ost.noarch

Steps to reproduce:
Attempt to run a deployment with:
export THT=/usr/share/openstack-tripleo-heat-templates/

openstack overcloud deploy --templates $THT \
-r ~/openstack_deployment/roles/roles_data.yaml \
-e $THT/environments/network-isolation.yaml \    
-e $THT/environments/network-management.yaml \   
-e $THT/environments/storage-environment.yaml \  
-e ~/openstack_deployment/environments/nodes.yaml \
-e ~/openstack_deployment/environments/network-environment.yaml \
-e ~/openstack_deployment/environments/disk-layout.yaml \        
-e ~/openstack_deployment/environments/neutron-settings.yaml


[stack@undercloud-0 ~]$ cat ~/openstack_deployment/roles/roles_data.yaml
- name: Controller                                                      
  CountDefault: 1                                                       
  ServicesDefault:                                                      
    - OS::TripleO::Services::CACerts                                    
    - OS::TripleO::Services::CephMon                                    
    - OS::TripleO::Services::CephExternal                               
    - OS::TripleO::Services::CephRgw                                    
    - OS::TripleO::Services::CinderApi                                  
    - OS::TripleO::Services::CinderBackup                               
    - OS::TripleO::Services::CinderScheduler                            
    - OS::TripleO::Services::CinderVolume                               
    - OS::TripleO::Services::Core                                       
    - OS::TripleO::Services::Kernel                                     
    - OS::TripleO::Services::Keystone                                   
    - OS::TripleO::Services::GlanceApi                                  
    - OS::TripleO::Services::GlanceRegistry                             
    - OS::TripleO::Services::HeatApi                                    
    - OS::TripleO::Services::HeatApiCfn                                 
    - OS::TripleO::Services::HeatApiCloudwatch                          
    - OS::TripleO::Services::HeatEngine                                 
    - OS::TripleO::Services::MySQL                                      
    - OS::TripleO::Services::NeutronApi                                 
    - OS::TripleO::Services::NeutronCorePlugin                          
    - OS::TripleO::Services::RabbitMQ                                   
    - OS::TripleO::Services::HAproxy                                    
    - OS::TripleO::Services::Keepalived                                 
    - OS::TripleO::Services::Memcached                                  
    - OS::TripleO::Services::Pacemaker                                  
    - OS::TripleO::Services::Redis                                      
    - OS::TripleO::Services::NovaConductor                              
    - OS::TripleO::Services::MongoDb                                    
    - OS::TripleO::Services::NovaApi                                    
    - OS::TripleO::Services::NovaMetadata                               
    - OS::TripleO::Services::NovaScheduler                              
    - OS::TripleO::Services::NovaConsoleauth                            
    - OS::TripleO::Services::NovaVncProxy                               
    - OS::TripleO::Services::Ntp                                        
    - OS::TripleO::Services::SwiftProxy                                 
    - OS::TripleO::Services::SwiftStorage                               
    - OS::TripleO::Services::SwiftRingBuilder                           
    - OS::TripleO::Services::Snmp                                       
    - OS::TripleO::Services::Timezone                                   
    - OS::TripleO::Services::CeilometerApi                              
    - OS::TripleO::Services::CeilometerCollector                        
    - OS::TripleO::Services::CeilometerExpirer                          
    - OS::TripleO::Services::CeilometerAgentCentral                     
    - OS::TripleO::Services::CeilometerAgentNotification                
    - OS::TripleO::Services::Horizon                                    
    - OS::TripleO::Services::GnocchiApi                                 
    - OS::TripleO::Services::GnocchiMetricd                             
    - OS::TripleO::Services::GnocchiStatsd                              
    - OS::Tripleo::Services::ManilaApi                                  
    - OS::Tripleo::Services::ManilaScheduler                            
    - OS::Tripleo::Services::ManilaBackendGeneric                       
    - OS::Tripleo::Services::ManilaBackendNetapp                        
    - OS::Tripleo::Services::ManilaBackendCephFs                        
    - OS::Tripleo::Services::ManilaShare                                
    - OS::TripleO::Services::AodhApi                                    
    - OS::TripleO::Services::AodhEvaluator                              
    - OS::TripleO::Services::AodhNotifier                               
    - OS::TripleO::Services::AodhListener                               
    - OS::TripleO::Services::SaharaApi                                  
    - OS::TripleO::Services::SaharaEngine                               
    - OS::TripleO::Services::IronicApi                                  
    - OS::TripleO::Services::IronicConductor                            
    - OS::TripleO::Services::NovaIronic                                 
    - OS::TripleO::Services::TripleoPackages                            
    - OS::TripleO::Services::TripleoFirewall                            
    - OS::TripleO::Services::OpenDaylightApi                            
    - OS::TripleO::Services::SensuClient                                
    - OS::TripleO::Services::FluentdClient                              
    - OS::TripleO::Services::VipHosts                                   

- name: Compute
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-compute-%index%'
  ServicesDefault:                                    
    - OS::TripleO::Services::CACerts                  
    - OS::TripleO::Services::CephClient               
    - OS::TripleO::Services::CephExternal             
    - OS::TripleO::Services::Timezone                 
    - OS::TripleO::Services::Ntp                      
    - OS::TripleO::Services::Snmp                     
    - OS::TripleO::Services::NovaCompute              
    - OS::TripleO::Services::NovaLibvirt              
    - OS::TripleO::Services::Kernel                   
    - OS::TripleO::Services::ComputeNeutronCorePlugin 
    - OS::TripleO::Services::ComputeNeutronOvsAgent   
    - OS::TripleO::Services::ComputeCeilometerAgent   
    - OS::TripleO::Services::ComputeNeutronL3Agent    
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::TripleoPackages            
    - OS::TripleO::Services::TripleoFirewall            
    - OS::TripleO::Services::NeutronSriovAgent          
    - OS::TripleO::Services::OpenDaylightOvs            
    - OS::TripleO::Services::SensuClient                
    - OS::TripleO::Services::FluentdClient              
    - OS::TripleO::Services::VipHosts                   

- name: BlockStorage
  ServicesDefault:  
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::BlockStorageCinderVolume
    - OS::TripleO::Services::Kernel                  
    - OS::TripleO::Services::Ntp                     
    - OS::TripleO::Services::Timezone                
    - OS::TripleO::Services::Snmp                    
    - OS::TripleO::Services::TripleoPackages         
    - OS::TripleO::Services::TripleoFirewall         
    - OS::TripleO::Services::SensuClient             
    - OS::TripleO::Services::FluentdClient           
    - OS::TripleO::Services::VipHosts                

- name: ObjectStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SwiftStorage
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

- name: CephStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephOSD
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

- name: Networker
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts



Result:
Removing the current plan files                                   
Uploading new plan files                                          
Started Mistral Workflow. Execution ID: e85b1d4c-b83a-40f3-b875-8d82ef9478ab
Plan updated                                                                
Deploying templates in the directory /tmp/tripleoclient-DvSpSk/tripleo-heat-templates
Started Mistral Workflow. Execution ID: 3245dd2b-299f-4ee9-ab5d-ba2e8b94ed81         
{u'execution': {u'id': u'3245dd2b-299f-4ee9-ab5d-ba2e8b94ed81',                      
                u'input': {u'container': u'overcloud',                               
                           u'queue_name': u'6c54c9ff-7e67-42d1-a9f1-7bdb5110c702',   
                           u'timeout': 240},                                         
                u'name': u'tripleo.deployment.v1.deploy_plan',                       
                u'params': {},                                                       
                u'spec': {u'input': [u'container',                                   
                                     {u'timeout': 240},                              
                                     {u'queue_name': u'tripleo'}],                   
                          u'name': u'deploy_plan',                                   
                          u'tasks': {u'copy_validation_ssh_keys': {u'name': u'copy_validation_ssh_keys',
                                                                   u'on-complete': u'send_message',     
                                                                   u'type': u'direct',                  
                                                                   u'version': u'2.0',                  
                                                                   u'workflow': u'tripleo.validations.v1.copy_ssh_key'},
                                     u'deploy': {u'action': u'tripleo.deployment.deploy timeout=<% $.timeout %> container=<% $.container %>',
                                                 u'name': u'deploy',                                                                         
                                                 u'on-error': u'set_deployment_failed',                                                      
                                                 u'on-success': u'test_validations_enabled',                                                 
                                                 u'type': u'direct',                                                                         
                                                 u'version': u'2.0'},                                                                        
                                     u'send_message': {u'action': u'zaqar.queue_post',                                                       
                                                       u'input': {u'messages': {u'body': {u'payload': {u'execution': u'<% execution() %>',   
                                                                                                       u'message': u"<% $.get('message', '') %>",
                                                                                                       u'status': u"<% $.get('status', 'SUCCESS') %>"},
                                                                                          u'type': u'tripleo.deployment.v1.deploy_plan'}},             
                                                                  u'queue_name': u'<% $.queue_name %>'},                                               
                                                       u'name': u'send_message',                                                                       
                                                       u'retry': u'count=5 delay=1',                                                                   
                                                       u'type': u'direct',                                                                             
                                                       u'version': u'2.0'},                                                                            
                                     u'set_deployment_failed': {u'name': u'set_deployment_failed',                                                     
                                                                u'on-success': u'send_message',                                                        
                                                                u'publish': {u'message': u'<% task(deploy).result %>',                                 
                                                                             u'status': u'FAILED'},                                                    
                                                                u'type': u'direct',                                                                    
                                                                u'version': u'2.0'},                                                                   
                                     u'test_validations_enabled': {u'action': u'tripleo.validations.enabled',                                          
                                                                   u'name': u'test_validations_enabled',                                               
                                                                   u'on-error': u'send_message',                                                       
                                                                   u'on-success': u'copy_validation_ssh_keys',                                         
                                                                   u'type': u'direct',                                                                 
                                                                   u'version': u'2.0'}},                                                               
                          u'version': u'2.0'}},                                                                                                        
 u'message': u"Failed to run action [action_ex_id=b7af4cd6-18fa-4256-a8ef-a720cc9a2f7e, action_cls='<class 'mistral.actions.action_factory.DeployStackAction'>', attributes='{}', params='{u'container': u'overcloud', u'timeout': 240}']\n ERROR: Failed to validate: : resources.ControllerServiceChain: : The Resource Type (OS::TripleO::Services::OpenDaylightApi) could not be found.",                                             
 u'status': u'FAILED'}   


Expected result:

The deployment should start.

Comment 2 Steven Hardy 2016-11-01 15:19:22 UTC
Looking at the git history and the version of t-h-t under test, I think this is expected and has been fixed in a  more recent version:

7445049 Renames OpenDaylight to OpenDaylightApi and splits out OVS configuration
c1eedd1 Actually start the systemd services in step3 of the major-upgrade step
cbd6b8a Merge "Fixing resources path in OpenDaylight" into stable/newton
0d3e3e3 Merge "Add cloud names to hosts output" into stable/newton

This tests 0d3e3e3 where overcloud-resource-registry-puppet.j2.yaml looks like:

  OS::TripleO::Services::OpenDaylight: OS::Heat::None
  OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None

After 7445049 it looks like:

  OS::TripleO::Services::OpenDaylightApi: OS::Heat::None
  OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None

But the roles_data.yaml in the report above expects this newer naming, so the fix is either to update t-h-t to a newer version or switch back to the OS::TripleO::Services::OpenDaylight naming.

So I think this is fixed in a later package - I downloaded openstack-tripleo-heat-templates-5.0.0-1.1.el7ost.noarch.rpm and AFAICS it contains the fix mentioned above.