lib/kpm/system.rb in kpm-0.5.3 vs lib/kpm/system.rb in kpm-0.6.0
- old
+ new
@@ -1,27 +1,9 @@
require 'yaml'
+require_relative 'system_helpers/system_proxy'
module KPM
-
- module OS
- def OS.windows?
- (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG["host_os"]) != nil
- end
-
- def OS.mac?
- (/darwin/ =~ RbConfig::CONFIG["host_os"]) != nil
- end
-
- def OS.unix?
- !OS.windows?
- end
-
- def OS.linux?
- OS.unix? and not OS.mac?
- end
- end
-
class System
MAX_VALUE_COLUMN_WIDTH = 60
DEFAULT_BUNDLE_DIR = Dir['/var' + File::SEPARATOR + 'lib' + File::SEPARATOR + 'killbill' + File::SEPARATOR + 'bundles'][0] || Dir['/var' + File::SEPARATOR + 'tmp' + File::SEPARATOR + 'bundles'][0]
DEFAULT_KAUI_SEARCH_BASE_DIR = '**' + File::SEPARATOR + 'kaui'
@@ -30,46 +12,53 @@
def initialize
@formatter = KPM::Formatter.new
end
def information(bundles_dir = nil, output_as_json = false, config_file = nil, kaui_web_path = nil, killbill_web_path = nil)
- puts 'Retrieving system information'
set_config(config_file)
killbill_information = show_killbill_information(kaui_web_path,killbill_web_path,output_as_json)
java_version = `java -version 2>&1`.split("\n")[0].split('"')[1]
environment_information = show_environment_information(java_version, output_as_json)
os_information = show_os_information(output_as_json)
+ cpu_information = show_cpu_information(output_as_json)
+ memory_information = show_memory_information(output_as_json)
+ disk_space_information = show_disk_space_information(output_as_json)
+ entropy_available = show_entropy_available(output_as_json)
if not java_version.nil?
command = get_command
java_system_information = show_java_system_information(command,output_as_json)
end
plugin_information = show_plugin_information(get_plugin_path || bundles_dir || DEFAULT_BUNDLE_DIR, output_as_json)
- if output_as_json
- json_data = Hash.new
- json_data[:killbill_information] = killbill_information
- json_data[:environment_information] = environment_information
- json_data[:os_information] = os_information
- json_data[:java_system_information] = java_system_information
- json_data[:plugin_information] = plugin_information
+ json_data = Hash.new
+ json_data[:killbill_information] = killbill_information
+ json_data[:environment_information] = environment_information
+ json_data[:os_information] = os_information
+ json_data[:cpu_information] = cpu_information
+ json_data[:memory_information] = memory_information
+ json_data[:disk_space_information] = disk_space_information
+ json_data[:entropy_available] = entropy_available
+ json_data[:java_system_information] = java_system_information
+ json_data[:plugin_information] = plugin_information
- puts json_data.to_json
- end
+ json_data.to_json
end
def show_killbill_information(kaui_web_path, killbill_web_path, output_as_json)
kpm_version = KPM::VERSION
kaui_version = get_kaui_version(get_kaui_web_path || kaui_web_path)
killbill_version = get_killbill_version(get_killbill_web_path || killbill_web_path)
+ kaui_standalone_version = get_kaui_standalone_version(get_kaui_web_path || kaui_web_path)
environment = Hash[:kpm => {:system=>'KPM',:version => kpm_version},
:kaui => {:system=>'Kaui',:version => kaui_version.nil? ? 'not found' : kaui_version},
+ :kaui_standalone => {:system=>'Kaui standalone',:version => kaui_standalone_version.nil? ? 'not found' : kaui_standalone_version},
:killbill => {:system=>'Killbill',:version => killbill_version.nil? ? 'not found' : killbill_version}]
labels = [{:label => :system},
{:label => :version}]
@@ -93,44 +82,65 @@
end
environment
end
- def show_os_information(output_as_json)
- os = Hash.new
- os_data = nil
+ def show_cpu_information(output_as_json)
+ cpu_info = KPM::SystemProxy::CpuInformation.fetch
+ labels = KPM::SystemProxy::CpuInformation.get_labels
- if OS.windows?
- os_data = `systeminfo | findstr /C:"OS"`
+ unless output_as_json
+ @formatter.format(cpu_info,labels)
+ end
- elsif OS.linux?
- os_data = `lsb_release -a 2>&1`
+ cpu_info
+ end
- elsif OS.mac?
- os_data = `sw_vers`
+ def show_memory_information(output_as_json)
+ memory_info = KPM::SystemProxy::MemoryInformation.fetch
+ labels = KPM::SystemProxy::MemoryInformation.get_labels
+ unless output_as_json
+ @formatter.format(memory_info,labels)
end
- if os_data != nil
- os_data.split("\n").each do |info|
+ memory_info
+ end
- infos = info.split(':')
- os[infos[0]] = {:os_detail => infos[0], :value => infos[1].to_s.strip}
+ def show_disk_space_information(output_as_json)
+ disk_space_info = KPM::SystemProxy::DiskSpaceInformation.fetch
+ labels = KPM::SystemProxy::DiskSpaceInformation.get_labels
- end
+ unless output_as_json
+ @formatter.format(disk_space_info,labels)
end
- labels = [{:label => :os_detail},
- {:label => :value}]
+ disk_space_info
+ end
- if not output_as_json
- @formatter.format(os,labels)
+ def show_entropy_available(output_as_json)
+ entropy_available = KPM::SystemProxy::EntropyAvailable.fetch
+ labels = KPM::SystemProxy::EntropyAvailable.get_labels
+
+ unless output_as_json
+ @formatter.format(entropy_available,labels)
end
- os
+ entropy_available
end
+ def show_os_information(output_as_json)
+ os_information = KPM::SystemProxy::OsInformation.fetch
+ labels = KPM::SystemProxy::OsInformation.get_labels
+
+ unless output_as_json
+ @formatter.format(os_information,labels)
+ end
+
+ os_information
+ end
+
def show_java_system_information(command, output_as_json)
java_system = Hash.new
property_count = 0;
last_key = ''
@@ -193,11 +203,11 @@
else
inspector = KPM::Inspector.new
all_plugins = inspector.inspect(bundles_dir)
end
- if not output_as_json
+ unless output_as_json
if all_plugins.nil? || all_plugins.size == 0
puts "\e[91;1mNo KB plugin information available\e[0m\n\n"
else
@formatter.format(all_plugins)
end
@@ -207,13 +217,28 @@
all_plugins = 'No KB plugin information available'
end
all_plugins
end
+ def get_kaui_standalone_version(kaui_web_path = nil)
+ kaui_search_default_dir = kaui_web_path.nil? ? DEFAULT_KAUI_SEARCH_BASE_DIR : Dir[kaui_web_path][0]
+ kaui_search_default_dir.gsub!('.war','')
+ version = nil
+
+ yaml_file = kaui_search_default_dir + File::SEPARATOR + 'WEB-INF' + File::SEPARATOR + 'version.yml'
+ unless Dir[yaml_file][0].nil?
+ yml_data = YAML::load_file(yaml_file)
+
+ version = yml_data['version']
+ end
+
+ version
+ end
+
def get_kaui_version(kaui_web_path = nil)
- puts kaui_web_path
- kaui_search_default_dir = Dir[kaui_web_path.nil? ? '' : kaui_web_path][0] || DEFAULT_KAUI_SEARCH_BASE_DIR
+ kaui_search_default_dir = kaui_web_path.nil? ? DEFAULT_KAUI_SEARCH_BASE_DIR : Dir[kaui_web_path][0]
+ kaui_search_default_dir.gsub!('.war','')
version = nil
gemfile = Dir[kaui_search_default_dir + File::SEPARATOR + 'WEB-INF' + File::SEPARATOR + 'Gemfile']
if not gemfile[0].nil?
@@ -236,10 +261,12 @@
version
end
def get_killbill_version(killbill_web_path = nil)
- killbill_search_default_dir = Dir[killbill_web_path.nil? ? '' : killbill_web_path][0] || DEFAULT_KILLBILL_SEARCH_BASE_DIR
+ killbill_search_default_dir = killbill_web_path.nil? ? DEFAULT_KILLBILL_SEARCH_BASE_DIR : Dir[killbill_web_path][0]
+ killbill_search_default_dir.gsub!('.war','')
+ killbill_search_default_dir.gsub!('webapps','**')
file = Dir[killbill_search_default_dir + File::SEPARATOR + 'META-INF' + File::SEPARATOR + '**' + File::SEPARATOR + 'pom.properties']
version = nil
if not file[0].nil?
absolute_file_path = File.absolute_path(file[0])
\ No newline at end of file