Class: ForemanAnsibleDirector::LifecycleEnvironment

Inherits:
AnsibleDirectorModel show all
Defined in:
app/models/foreman_ansible_director/lifecycle_environment.rb

Instance Method Summary collapse

Methods inherited from AnsibleDirectorModel

#flatten_errors, table_name

Instance Method Details

#ancestorsObject



105
106
107
108
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 105

def ancestors
  return [] unless parent
  [parent] + parent.ancestors
end

#assign_content_unit_version!(content_unit_version) ⇒ Object

TODO: This does not work. Add the content_unit_id to the join table for checking



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 61

def assign_content_unit_version!(content_unit_version)
  existing_version = lifecycle_environment_content_unit_versions
                     .find_by(content_unit_version_id: content_unit_version.id)

  replace = Setting[:ad_content_import_override]

  if existing_version
    if replace
      existing_version.destroy!
    else
      raise ArgumentError, "LifecycleEnvironment already has ContentUnit #{content_unit_version.versionable_id} " \
        "(existing version: #{existing_version.id}, attempted: #{content_unit_version.id})"
    end
  end

  # Create the association
  lifecycle_environment_content_unit_versions.create!(content_unit_version: content_unit_version)
end

#assign_execution_environment!(execution_environment_id) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 49

def assign_execution_environment!(execution_environment_id)
  execution_env = ::ForemanAnsibleDirector::ExecutionEnvironment.find_by(id: execution_environment_id)

  unless execution_env
    errors.add(:execution_environment_id, 'not found')
    return false
  end

  update(execution_environment_id: execution_env.id)
end

#content_hashObject



84
85
86
87
88
89
90
91
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 84

def content_hash
  if using_snapshot_content?
    content_snapshot.content_hash
  else
    content_string = content_unit_versions.pluck(:versionable_id, :version)
    Digest::SHA2.new(256).hexdigest("#{content_string}:#{execution_environment&.id || 'default'}")[0, 8]
  end
end

#content_unit_versionsObject

scope :by_path, ->(path_id) { where(lifecycle_environment_path_id: path_id) } scope :ordered, -> { order(:position) } scope :roots, -> { where(parent_id: nil) }



41
42
43
44
45
46
47
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 41

def content_unit_versions
  if using_snapshot_content?
    snapshot_content_unit_versions
  else
    direct_content_unit_versions
  end
end

#leaf?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 101

def leaf?
  child.nil?
end

#protected?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 93

def protected?
  protected
end

#root?Boolean

Returns:

  • (Boolean)


97
98
99
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 97

def root?
  parent_id.nil?
end

#using_snapshot_content?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'app/models/foreman_ansible_director/lifecycle_environment.rb', line 80

def using_snapshot_content?
  !content_snapshot.nil?
end