class PreparePlan

Public Class Methods

new() click to toggle source
# File lib/canzea/commands/prepare-plan.rb, line 10
def initialize ()
    @log = Logger.new(Canzea::config[:logging_root] + '/plans.log')
    @basePath = "#{Pathname.new(Canzea::config[:catalog_location]).realpath}"
end

Public Instance Methods

do(blueprint, segment, step, task, test, privateKey, serverBase, serverNumber) click to toggle source

Read the blueprint instructions and prepare plan for a particular segment

# File lib/canzea/commands/prepare-plan.rb, line 31
def do (blueprint, segment, step, task, test, privateKey, serverBase, serverNumber)
    planStep = PlanStep.new

    log "Processing configure.json for #{segment} in #{blueprint} from #{@basePath}"

    instructions = YAML.load_file("#{@basePath}/blueprints/#{blueprint}/instruction.yml")
    segment = instructions['instructions']['segments'][segment]

    log segment['abbreviation']

    first = true
    index = 1
    segment['image'].each { |item|
        if item.start_with?("step:")
            parts = item.split(':')

            if (index < Integer(step))
                log "[#{index.to_s.rjust(2, "0")}] #{item} SKIPPING"
                msg = { "message" => { "task" => "skip", "context" => { "step" => index } } }
                puts msg.to_json
            else

                log "[#{index.to_s.rjust(2, "0")}] #{item}"
                publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{serverBase}-#{serverNumber}.json")
                publicIp.strip!
                if (test == false)
                    if (task == nil)
                        RemoteRun.new.do publicIp, privateKey, parts[1], parts[2], index.to_s.rjust(2, "0")
                    else
                        RemoteRun.new.doTask publicIp, privateKey, parts[1], parts[2], task, index.to_s.rjust(2, "0")
                    end
                    # Keep track of what we have done; parsing the response and looking at the JSON
                else
                    RemoteRun.new.test publicIp, privateKey, parts[1], parts[2], index.to_s.rjust(2, "0")
                end

                if first == true
                    # task is only relevant for the first invocation
                    task = nil
                    first = false
                end
            end
            index = index + 1
        end
    }
end
doPatch(paramsString, test, privateKey, serverBase, serverNumber) click to toggle source
# File lib/canzea/commands/prepare-plan.rb, line 15
def doPatch (paramsString, test, privateKey, serverBase, serverNumber)

    publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{serverBase}-#{serverNumber}.json")
    publicIp.strip!

    params = JSON.parse(paramsString)

    patches = Base64.decode64(params["patches"])
    params['patches'] = JSON.parse(patches)

    params['patches'].each do | patch |
        RemoteRun.new.doCommand publicIp, privateKey, patch["command"]
    end
end
log(msg) click to toggle source
# File lib/canzea/commands/prepare-plan.rb, line 78
def log (msg)
    puts "-- #{msg}"
    @log.info(msg)
end