Class: Kuroko2::JobDefinition

Inherits:
ApplicationRecord show all
Includes:
TableNameCustomizable
Defined in:
app/models/kuroko2/job_definition.rb

Defined Under Namespace

Modules: PreventMultiStatus

Constant Summary collapse

PREVENT_TOKEN_STATUSES =
{
  PreventMultiStatus::NONE => [],
  PreventMultiStatus::WORKING_OR_ERROR => [
    Kuroko2::Token::WORKING,
    Kuroko2::Token::FAILURE,
    Kuroko2::Token::CRITICAL
  ],
  PreventMultiStatus::WORKING => [Kuroko2::Token::WORKING],
  PreventMultiStatus::ERROR => [Kuroko2::Token::FAILURE, Kuroko2::Token::CRITICAL],
}

Instance Method Summary collapse

Instance Method Details

#create_instance(script: nil, launched_by:, token: nil) ⇒ Object



94
95
96
97
98
99
100
101
102
# File 'app/models/kuroko2/job_definition.rb', line 94

def create_instance(script: nil, launched_by:, token: nil )
  message = "Launched by #{launched_by}"

  if token.present?
    message = "(token #{token.uuid}) #{message}"
  end

  job_instances.create!(script: script, log_message: message)
end

#proceed_multi_instance?Boolean

Returns:

  • (Boolean)


79
80
81
82
# File 'app/models/kuroko2/job_definition.rb', line 79

def proceed_multi_instance?
  tokens = Kuroko2::Token.where(job_definition_id: self.id)
  (tokens.map(&:status) & PREVENT_TOKEN_STATUSES[self.prevent_multi]).empty?
end

#save_and_record_revision(edited_user: nil) ⇒ Object



104
105
106
107
108
109
110
111
112
113
# File 'app/models/kuroko2/job_definition.rb', line 104

def save_and_record_revision(edited_user: nil)
  transaction do
    if save
      record_revision(edited_user: edited_user)
      true
    else
      false
    end
  end
end

#text_tagsObject



84
85
86
# File 'app/models/kuroko2/job_definition.rb', line 84

def text_tags
  tags.map(&:name).join(',')
end

#text_tags=(text_tags) ⇒ Object



88
89
90
91
92
# File 'app/models/kuroko2/job_definition.rb', line 88

def text_tags=(text_tags)
  self.tags = text_tags.gsub(/[[:blank:]]+/, '').split(/[,、]/).uniq.map do |name|
    Kuroko2::Tag.find_or_create_by(name: name)
  end
end

#update_and_record_revision(attributes, edited_user: nil) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
# File 'app/models/kuroko2/job_definition.rb', line 115

def update_and_record_revision(attributes, edited_user: nil)
  assign_attributes(attributes)
  transaction do
    if save
      record_revision(edited_user: edited_user)
      true
    else
      false
    end
  end
end