Class: ForemanAnsibleDirector::ExecutionEnvironmentService

Inherits:
Object
  • Object
show all
Defined in:
app/services/foreman_ansible_director/execution_environment_service.rb

Class Method Summary collapse

Class Method Details

.build_execution_environment(execution_environment) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/services/foreman_ansible_director/execution_environment_service.rb', line 51

def build_execution_environment(execution_environment)
  env_definition = {
    id: execution_environment.id,
    content: {
      base_image: execution_environment.base_image_url,
      ansible_core_version: execution_environment.ansible_version,
      content_units: execution_environment.content_unit_versions.map do |cuv|
        {
          type: cuv.versionable.type == 'ForemanAnsibleDirector::AnsibleCollection' ? 'collection' : 'role',
          identifier: cuv.versionable.full_name,
          version: cuv.version,
          source: "https://#{SETTINGS[:fqdn]}/pulp_ansible/galaxy/#{Organization.current.id}/#{cuv.versionable.full_name}",
        }
      end,
    },
  }

  execution_environment.update!(build_status: 'running')

  ::ForemanAnsibleDirector::ActionService.trigger(
    ::ForemanAnsibleDirector::Actions::Proxy::BuildExecutionEnvironment,
    task_args: {
      proxy_task_id: SecureRandom.uuid,
      execution_environment_definition: env_definition,
      execution_environment_id: execution_environment.id,
    },
    mode: :async
  )
end

.create_execution_environment(name:, base_image_url:, ansible_version:, organization_id:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/services/foreman_ansible_director/execution_environment_service.rb', line 6

def create_execution_environment(name:,
                                 base_image_url:,
                                 ansible_version:,
                                 organization_id:)
  # ActiveRecord::Base.transaction do
  env = ::ForemanAnsibleDirector::ExecutionEnvironment.create!(
    name: name,
    base_image_url: base_image_url,
    ansible_version: ansible_version,
    organization_id: organization_id,
    build_status: 'pending'
  )
  task = build_execution_environment env
  env.update!(content_hash: env.generate_content_hash, build_job: task.id)

  env
  # end
end

.destroy_execution_environment(execution_environment) ⇒ Object



45
46
47
48
49
# File 'app/services/foreman_ansible_director/execution_environment_service.rb', line 45

def destroy_execution_environment(execution_environment)
  ActiveRecord::Base.transaction do
    execution_environment.destroy!
  end
end

.edit_execution_environment(execution_environment:, name:, base_image_url:, ansible_version:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/services/foreman_ansible_director/execution_environment_service.rb', line 25

def edit_execution_environment(execution_environment:,
                               name:,
                               base_image_url:,
                               ansible_version:)
  # TODO: Disabling this transaction as it locks up the task for an unknown reason
  # ActiveRecord::Base.transaction do
  execution_environment.update!(
    name: name,
    base_image_url: base_image_url,
    ansible_version: ansible_version
  )
  new_hash = execution_environment.generate_content_hash
  if new_hash != execution_environment.content_hash
    task = build_execution_environment execution_environment
    execution_environment.update!(content_hash: new_hash, build_job: task.id)
  end
  execution_environment
  # end
end