class OpenShift::Runtime::Utils::UpgradeProgress

Attributes

gear_base_dir[R]
gear_home[R]
steps[R]
uuid[R]

Public Class Methods

new(gear_base_dir, gear_home, uuid) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 11
def initialize(gear_base_dir, gear_home, uuid)
  @gear_base_dir = gear_base_dir
  @gear_home = gear_home
  @uuid = uuid
  @buffer = []
  @steps = {}
end

Public Instance Methods

complete?(marker) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 53
def complete?(marker)
  File.exists?(marker_path(marker))
end
done() click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 63
def done
  globs = %w(.upgrade_complete*)

  globs.each do |glob|
    Dir.glob(File.join(gear_home, 'app-root', 'runtime', glob)).each do |entry|
      FileUtils.rm_f(entry)
    end
  end
end
incomplete?(marker) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 49
def incomplete?(marker)
  not complete?(marker)
end
log(string, event_args = {}) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 77
def log(string, event_args = {})
  if event_args.has_key?(:rc) || event_args.has_key?(:stdout) || event_args.has_key?(:stderr)
    string = "#{string}\nrc: #{event_args[:rc]}\nstdout: #{event_args[:stdout]}\nstderr: #{event_args[:stderr]}"
  end

  @buffer << string
  string
end
mark_complete(marker) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 57
def mark_complete(marker)
  IO.write(marker_path(marker), '')
  log "Marking step #{marker} complete"
  @steps[marker][:status] = :complete
end
marker_path(marker) click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 73
def marker_path(marker)
  File.join(gear_home, 'app-root', 'runtime', ".upgrade_complete_#{marker}")
end
report() click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 86
def report
  @buffer.join("\n")
end
step(name) { |step, step| ... } click to toggle source
# File lib/openshift-origin-node/utils/upgrade_progress.rb, line 19
def step(name)
  unless @steps.has_key?(name)
    @steps[name] = {
      :status => complete?(name) ? :complete : :incomplete,
      :errors => [],
      :context => {}
    }
  end

  step = @steps[name]

  if incomplete?(name)
    begin
      yield(step[:context], step[:errors])
    rescue OpenShift::Runtime::Utils::ShellExecutionException => e
      step[:errors] << "Unhandled shell exception performing step: #{e.message}\nreturn code: #{e.rc}\nstdout: #{e.stdout}\nstderr: #{e.stderr}"
      raise e
    rescue => e
      step[:errors] << "Unhandled exception performing step: #{e.message}\n#{e.backtrace.join("\n")}"
      raise e
    end

    if not step[:errors].empty?
      raise "Errors encountered executing step #{name}"
    end

    mark_complete(name)
  end
end