############### vmc extension require 'rubygems' version = ">= 0" if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then version = $1 ARGV.shift end gem 'vmc', version require 'time' FILE_PATH = "/tmp" LOG_FILE_PATH = FILE_PATH + "/cf_inspector.log" HTML_FILE_PATH = FILE_PATH + "/vmc_#{ARGV[0]}_#{Time.now.strftime("%Y%m%d_%H%M%S")}.html" CF_HOME = ENV["CF_HOME"] || "~/cloudfoundry" #clear log file File.open(LOG_FILE_PATH,'w') do |fd| fd.puts "" end $LOAD_PATH.push("#{CF_HOME}/vcap/common/lib") require Gem.bin_path('vmc', 'vmc', version).split('/')[0...-1].join('/') + "/../lib/cli" require "vcap/common" ############### class definition of html files generator require 'json' #load json object from log file class HtmlGenerator COMPONENTS = %w(vmc cloud_controller router dea services health_manager stager staging dev_setup) def initialize(file_path) @inspect_list = [] open(file_path) {|file| while line = file.gets begin @inspect_list << JSON.parse(line) rescue end end } @html = "" end def generate write_header write_body write_footer @html end def write_header @html += <<-"EOS" cf_inspector result EOS end def write_footer @html += "" end def write_body status = :skip @inspect_list.each_with_index do |one_line, index| if one_line['type'] == 'vmc_start' status = :working one_line['type'] = 'vmc' write_table_header end if one_line['type'] == 'vmc_end' write_table_footer status = :skip end if status == :working write_table_body(one_line, index) end end end def write_table_header @html += "" COMPONENTS.each do |component| @html += "" end @html += "" end def write_table_footer @html += "
#{component}
" end def write_table_body(one_line, index) @html += "" COMPONENTS.each do |component| @html += "" if one_line["node"] == component @html += <<-"EOS" #{one_line['type']}
#{one_line['key']}

EOS else @html += "
-<\div>" end @html += "" end @html += "" end end ############### vmc execution begin load Gem.bin_path('vmc', 'vmc', version) ensure html = HtmlGenerator.new(LOG_FILE_PATH).generate File.open(HTML_FILE_PATH,'w') do |fd| fd.puts html end puts "#{HTML_FILE_PATH} has been generated." end