diff --git a/app/models/service.rb b/app/models/service.rb index d9caef840ac..9aaf8e1edd0 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -37,6 +37,7 @@ class Service < ApplicationRecord virtual_has_many :vms virtual_has_many :all_vms virtual_has_many :power_states, :uses => :all_vms + virtual_has_many :orchestration_stacks virtual_total :v_total_vms, :vms virtual_has_one :custom_actions @@ -224,6 +225,10 @@ def atomic? service_template ? service_template.atomic? : children.empty? end + def orchestration_stacks + service_resources.where(:resource_type => 'OrchestrationStack').collect(&:resource) + end + def map_composite_power_states(action) action_name = "#{action}_action" service_actions = service_resources.map(&action_name.to_sym).uniq diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb index 62bac17867e..d39de8aa660 100644 --- a/spec/models/service_spec.rb +++ b/spec/models/service_spec.rb @@ -681,6 +681,17 @@ end end + describe '#orchestration_stacks' do + let(:service) { FactoryGirl.create(:service) } + let(:tower_job) { FactoryGirl.create(:embedded_ansible_job) } + + before { service.add_resource!(tower_job, :name => ResourceAction::PROVISION) } + + it 'returns the orchestration stacks' do + expect(service.orchestration_stacks).to eq([tower_job]) + end + end + def create_deep_tree @service = FactoryGirl.create(:service) @service_c1 = FactoryGirl.create(:service, :service => @service)