Class: ForemanAnsibleDirector::AssignmentService
- Inherits:
-
AnsibleDirectorService
- Object
- AnsibleDirectorService
- ForemanAnsibleDirector::AssignmentService
- Defined in:
- app/services/foreman_ansible_director/assignment_service.rb
Class Method Summary collapse
- .assignments_for(target:, resolve: false) ⇒ Object
- .content_source_for(target, hierarchy = []) ⇒ Object
- .create_assignment(target:, assignment:) ⇒ Object
- .create_bulk_assignments(target:, assignments:) ⇒ Object
- .destroy_assignment(assignment) ⇒ Object
- .find_target(target_type:, target_id:) ⇒ Object
- .finder(type:) ⇒ Object
Methods included from RequestCtx::RequestContextHelper
Class Method Details
.assignments_for(target:, resolve: false) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 54 def assignments_for(target:, resolve: false) content_source, = content_source_for(target) resolved_assignments, hierarchy = recurse_content_assignments(target) return resolved_assignments, nil, hierarchy unless resolve && content_source resolved = resolve_content_units(content_source, resolved_assignments) [resolved_assignments, resolved, hierarchy] end |
.content_source_for(target, hierarchy = []) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 65 def content_source_for(target, hierarchy = []) return [nil, hierarchy] if target.nil? hierarchy << target if target.cr_content_source return [target.cr_content_source, hierarchy] elsif target.cr_content_source_state == 'none' return [nil, hierarchy] end content_source_for target.cr_immediate_predecessor, hierarchy end |
.create_assignment(target:, assignment:) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 12 def create_assignment(target:, assignment:) ActiveRecord::Base.transaction do ::ForemanAnsibleDirector::AnsibleContentAssignment.create!( consumable: target, assignable_type: assignment[:assignable_type], assignable_namespace: assignment[:assignable_namespace], assignable_name: assignment[:assignable_name], assignable_role_name: if assignment[:assignable_type] == 'ForemanAnsibleDirector::AnsibleCollectionRole' assignment[:assignable_role_name] end ) end end |
.create_bulk_assignments(target:, assignments:) ⇒ Object
27 28 29 30 31 32 33 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 27 def create_bulk_assignments(target:, assignments:) ActiveRecord::Base.transaction do assignments.each do |assignment| create_assignment(target: target, assignment: assignment) end end end |
.destroy_assignment(assignment) ⇒ Object
6 7 8 9 10 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 6 def destroy_assignment(assignment) ActiveRecord::Base.transaction do assignment.destroy end end |
.find_target(target_type:, target_id:) ⇒ Object
48 49 50 51 52 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 48 def find_target(target_type:, target_id:) # TODO: Null check target finder = finder(type: target_type) finder.find_by(id: target_id) end |
.finder(type:) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/services/foreman_ansible_director/assignment_service.rb', line 35 def finder(type:) case type when 'host' Host when 'hostgroup' Hostgroup else # TODO: Actual error message raise "Invalid type: #{type}" end end |