require 'json' require 'commands/add-env' require 'plan-step-class' require 'yaml' require 'canzea/config' class PreparePlan def initialize () @log = Logger.new(Canzea::config[:logging_root] + '/plans.log') @basePath = "#{Pathname.new(Canzea::config[:catalog_location]).realpath}" end # Read the blueprint instructions and prepare plan for a particular segment def do (blueprint, segment, step, 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'] 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" else log "[#{index.to_s.rjust(2, "0")}] #{item}" if (test == false) publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{serverBase}-#{serverNumber}.json") RemoteRun.new.do publicIp, privateKey, parts[1], parts[2], index.to_s.rjust(2, "0") # Keep track of what we have done; parsing the response and looking at the JSON end end index = index + 1 end } end def log (msg) puts "-- #{msg}" @log.info(msg) end end