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



91
92
93
94
95
96
97
98
99
# File 'app/models/kuroko2/job_definition.rb', line 91

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)


76
77
78
79
# File 'app/models/kuroko2/job_definition.rb', line 76

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

#text_tagsObject



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

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

#text_tags=(text_tags) ⇒ Object



85
86
87
88
89
# File 'app/models/kuroko2/job_definition.rb', line 85

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