class Kontena::Cli::Stacks::ValidateCommand

Public Instance Methods

execute() click to toggle source
# File lib/kontena/cli/stacks/validate_command.rb, line 41
def execute
  if dependency_tree?
    puts ::YAML.dump('name' => stack_name, 'stack' => source, 'depends' => stack['dependencies'])
    exit 0
  end

  validate_dependencies if dependencies?

  if online?
    set_env_variables(stack_name, require_current_grid)
  else
    config.current_master = nil
    set_env_variables(stack_name, 'validate', 'validate-platform')
  end

  stack # runs validations

  hint_on_validation_notifications(reader.notifications, dependencies? ? loader.source : nil)
  abort_on_validation_errors(reader.errors, dependencies? ? loader.source : nil)

  dump_variables if values_to

  case self.format
  when 'api-json'
    puts JSON.pretty_generate(stack)
  when 'yaml'
    result = ::YAML.dump(reader.fully_interpolated_yaml)
    result = result.sub(/\A---$/, "---\n# #{loader.source}") if dependencies?
    puts result
  else
    exit_with_error "Unknown --format=#{self.format}"
  end
end
validate_dependencies() click to toggle source
# File lib/kontena/cli/stacks/validate_command.rb, line 24
def validate_dependencies
  dependencies = loader.dependencies
  return if dependencies.nil?
  dependencies.each do |dependency|
    target_name = "#{stack_name}-#{dependency['name']}"
    cmd = ['stack', 'validate']
    cmd << '--online' if online?
    cmd.concat ['--parent-name', stack_name]

    dependency['variables'].merge(dependency_values_from_options(dependency['name'])).each do |key, value|
      cmd.concat ['-v', "#{key}=#{value}"]
    end
    cmd << dependency['stack']
    Kontena.run(cmd)
  end
end