kpm 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/kpm.gemspec +0 -1
 - data/lib/kpm.rb +4 -1
 - data/lib/kpm/base_artifact.rb +24 -8
 - data/lib/kpm/base_installer.rb +35 -3
 - data/lib/kpm/diagnostic_file.rb +187 -0
 - data/lib/kpm/installer.rb +10 -3
 - data/lib/kpm/kaui_artifact.rb +1 -1
 - data/lib/kpm/killbill_plugin_artifact.rb +1 -1
 - data/lib/kpm/killbill_server_artifact.rb +1 -1
 - data/lib/kpm/nexus_helper/actions.rb +34 -0
 - data/lib/kpm/nexus_helper/nexus_api_calls_v2.rb +188 -0
 - data/lib/kpm/nexus_helper/nexus_facade.rb +20 -0
 - data/lib/kpm/plugins_directory.yml +6 -1
 - data/lib/kpm/system.rb +80 -53
 - data/lib/kpm/system_helpers/cpu_information.rb +72 -0
 - data/lib/kpm/system_helpers/disk_space_information.rb +84 -0
 - data/lib/kpm/system_helpers/entropy_available.rb +52 -0
 - data/lib/kpm/system_helpers/memory_information.rb +71 -0
 - data/lib/kpm/system_helpers/os_information.rb +66 -0
 - data/lib/kpm/system_helpers/system_proxy.rb +28 -0
 - data/lib/kpm/tasks.rb +101 -2
 - data/lib/kpm/trace_logger.rb +70 -0
 - data/lib/kpm/utils.rb +42 -0
 - data/lib/kpm/version.rb +1 -1
 - data/pom.xml +1 -1
 - data/spec/kpm/remote/base_artifact_spec.rb +20 -0
 - data/spec/kpm/remote/base_installer_spec.rb +15 -0
 - data/spec/kpm/remote/installer_spec.rb +10 -2
 - data/spec/kpm/remote/migrations_spec.rb +1 -1
 - data/spec/kpm/remote/nexus_facade_spec.rb +60 -0
 - data/spec/spec_helper.rb +1 -0
 - metadata +14 -16
 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 3 
     | 
    
         
            +
                module CpuInformation
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def fetch
         
     | 
| 
      
 6 
     | 
    
         
            +
                      cpu_info = nil
         
     | 
| 
      
 7 
     | 
    
         
            +
                      if OS.windows?
         
     | 
| 
      
 8 
     | 
    
         
            +
                        cpu_info = fetch_windows
         
     | 
| 
      
 9 
     | 
    
         
            +
                      elsif OS.linux?
         
     | 
| 
      
 10 
     | 
    
         
            +
                        cpu_info = fetch_linux
         
     | 
| 
      
 11 
     | 
    
         
            +
                      elsif OS.mac?
         
     | 
| 
      
 12 
     | 
    
         
            +
                        cpu_info = fetch_mac
         
     | 
| 
      
 13 
     | 
    
         
            +
                      end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                      cpu_info
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    def get_labels
         
     | 
| 
      
 19 
     | 
    
         
            +
                      labels = [{:label => :cpu_detail},
         
     | 
| 
      
 20 
     | 
    
         
            +
                                {:label => :value}]
         
     | 
| 
      
 21 
     | 
    
         
            +
                      labels
         
     | 
| 
      
 22 
     | 
    
         
            +
                    end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                    private
         
     | 
| 
      
 25 
     | 
    
         
            +
                      def fetch_linux
         
     | 
| 
      
 26 
     | 
    
         
            +
                        cpu_data = `cat /proc/cpuinfo 2>&1`.gsub("\t",'')
         
     | 
| 
      
 27 
     | 
    
         
            +
                        cpu = get_hash(cpu_data)
         
     | 
| 
      
 28 
     | 
    
         
            +
                        cpu
         
     | 
| 
      
 29 
     | 
    
         
            +
                      end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                      def fetch_mac
         
     | 
| 
      
 32 
     | 
    
         
            +
                        cpu_data = `system_profiler SPHardwareDataType | grep -e "Processor" -e "Cores" -e "Cache" 2>&1`
         
     | 
| 
      
 33 
     | 
    
         
            +
                        cpu = get_hash(cpu_data)
         
     | 
| 
      
 34 
     | 
    
         
            +
                        cpu
         
     | 
| 
      
 35 
     | 
    
         
            +
                      end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      def fetch_windows
         
     | 
| 
      
 38 
     | 
    
         
            +
                        cpu_name = `wmic cpu get Name`.split("\n\n")
         
     | 
| 
      
 39 
     | 
    
         
            +
                        cpu_caption = `wmic cpu get Caption`.split("\n\n")
         
     | 
| 
      
 40 
     | 
    
         
            +
                        cpu_max_clock_speed = `wmic cpu get MaxClockSpeed`.split("\n\n")
         
     | 
| 
      
 41 
     | 
    
         
            +
                        cpu_device_id = `wmic cpu get DeviceId`.split("\n\n")
         
     | 
| 
      
 42 
     | 
    
         
            +
                        cpu_status = `wmic cpu get Status`.split("\n\n")
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                        cpu = Hash.new
         
     | 
| 
      
 45 
     | 
    
         
            +
                        cpu[cpu_name[0].to_s.strip] = {:cpu_detail => cpu_name[0].to_s.strip, :value => cpu_name[1].to_s.strip}
         
     | 
| 
      
 46 
     | 
    
         
            +
                        cpu[cpu_caption[0].to_s.strip] = {:cpu_detail => cpu_caption[0].to_s.strip, :value => cpu_caption[1].to_s.strip}
         
     | 
| 
      
 47 
     | 
    
         
            +
                        cpu[cpu_max_clock_speed[0].to_s.strip] = {:cpu_detail => cpu_max_clock_speed[0].to_s.strip, :value => cpu_max_clock_speed[1].to_s.strip}
         
     | 
| 
      
 48 
     | 
    
         
            +
                        cpu[cpu_device_id[0].to_s.strip] = {:cpu_detail => cpu_device_id[0].to_s.strip, :value => cpu_device_id[1].to_s.strip}
         
     | 
| 
      
 49 
     | 
    
         
            +
                        cpu[cpu_status[0].to_s.strip] = {:cpu_detail => cpu_status[0].to_s.strip, :value => cpu_status[1].to_s.strip}
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                        cpu
         
     | 
| 
      
 52 
     | 
    
         
            +
                      end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                      def get_hash(data)
         
     | 
| 
      
 55 
     | 
    
         
            +
                        cpu = Hash.new
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                        unless data.nil?
         
     | 
| 
      
 58 
     | 
    
         
            +
                          data.split("\n").each do |info|
         
     | 
| 
      
 59 
     | 
    
         
            +
                            infos = info.split(':')
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                            unless infos[0].to_s.strip.eql?('flags')
         
     | 
| 
      
 62 
     | 
    
         
            +
                              cpu[infos[0].to_s.strip] = {:cpu_detail => infos[0].to_s.strip, :value => infos[1].to_s.strip}
         
     | 
| 
      
 63 
     | 
    
         
            +
                            end
         
     | 
| 
      
 64 
     | 
    
         
            +
                          end
         
     | 
| 
      
 65 
     | 
    
         
            +
                        end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                        cpu
         
     | 
| 
      
 68 
     | 
    
         
            +
                      end
         
     | 
| 
      
 69 
     | 
    
         
            +
                    end
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,84 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 3 
     | 
    
         
            +
                module DiskSpaceInformation
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                    def fetch
         
     | 
| 
      
 7 
     | 
    
         
            +
                      disk_space_info = nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                      if OS.windows?
         
     | 
| 
      
 9 
     | 
    
         
            +
                        disk_space_info = fetch_windows
         
     | 
| 
      
 10 
     | 
    
         
            +
                      elsif OS.linux?
         
     | 
| 
      
 11 
     | 
    
         
            +
                        disk_space_info = fetch_linux_mac(5)
         
     | 
| 
      
 12 
     | 
    
         
            +
                      elsif OS.mac?
         
     | 
| 
      
 13 
     | 
    
         
            +
                        disk_space_info = fetch_linux_mac(8)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                      disk_space_info
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    def get_labels
         
     | 
| 
      
 20 
     | 
    
         
            +
                      labels = []
         
     | 
| 
      
 21 
     | 
    
         
            +
                      @@data_keys.each { |key| labels.push({:label => key.gsub(' ','_').to_sym})}
         
     | 
| 
      
 22 
     | 
    
         
            +
                      labels
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    private
         
     | 
| 
      
 26 
     | 
    
         
            +
                      def fetch_linux_mac(cols_count)
         
     | 
| 
      
 27 
     | 
    
         
            +
                        disk_space_info = `df 2>&1`
         
     | 
| 
      
 28 
     | 
    
         
            +
                        disk_space = get_hash(disk_space_info,cols_count,true)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        disk_space
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      def fetch_windows
         
     | 
| 
      
 33 
     | 
    
         
            +
                        disk_space_info = `wmic logicaldisk get size,freespace,caption 2>&1`
         
     | 
| 
      
 34 
     | 
    
         
            +
                        disk_space = get_hash(disk_space_info,3,false)
         
     | 
| 
      
 35 
     | 
    
         
            +
                        disk_space
         
     | 
| 
      
 36 
     | 
    
         
            +
                      end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                      def get_hash(data, cols_count, merge_last_two_columns)
         
     | 
| 
      
 39 
     | 
    
         
            +
                        disk_space = Hash.new
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                        unless data.nil?
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                          data_table = data.split("\n")
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                          @@data_keys = data_table[0].split(' ')
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                          if merge_last_two_columns
         
     | 
| 
      
 48 
     | 
    
         
            +
                            @@data_keys[@@data_keys.length - 2] = @@data_keys[@@data_keys.length - 2] + ' ' + @@data_keys[@@data_keys.length - 1]
         
     | 
| 
      
 49 
     | 
    
         
            +
                            @@data_keys.delete_at(@@data_keys.length - 1)
         
     | 
| 
      
 50 
     | 
    
         
            +
                          end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                          row_num = 0
         
     | 
| 
      
 53 
     | 
    
         
            +
                          data_table.each do |row|
         
     | 
| 
      
 54 
     | 
    
         
            +
                            cols = row.split(' ')
         
     | 
| 
      
 55 
     | 
    
         
            +
                            row_num += 1
         
     | 
| 
      
 56 
     | 
    
         
            +
                            unless cols[0].to_s.eql?(@@data_keys[0])
         
     | 
| 
      
 57 
     | 
    
         
            +
                              key = 'DiskInfo_'+row_num.to_s
         
     | 
| 
      
 58 
     | 
    
         
            +
                              disk_space[key] = Hash.new
         
     | 
| 
      
 59 
     | 
    
         
            +
                              cols.each_index do |idx|
         
     | 
| 
      
 60 
     | 
    
         
            +
                                if idx > cols_count
         
     | 
| 
      
 61 
     | 
    
         
            +
                                  break
         
     | 
| 
      
 62 
     | 
    
         
            +
                                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                                value = cols[idx].to_s.strip
         
     | 
| 
      
 65 
     | 
    
         
            +
                                if idx == cols_count && cols.length - 1 > idx
         
     | 
| 
      
 66 
     | 
    
         
            +
                                  for i in cols_count+1..cols.length
         
     | 
| 
      
 67 
     | 
    
         
            +
                                    value += ' ' + cols[i].to_s.strip
         
     | 
| 
      
 68 
     | 
    
         
            +
                                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
                                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                                disk_space[key][@@data_keys[idx].gsub(' ','_').to_sym] = value
         
     | 
| 
      
 72 
     | 
    
         
            +
                              end
         
     | 
| 
      
 73 
     | 
    
         
            +
                            end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                          end
         
     | 
| 
      
 76 
     | 
    
         
            +
                        end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                        disk_space
         
     | 
| 
      
 79 
     | 
    
         
            +
                      end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  end
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 3 
     | 
    
         
            +
                module EntropyAvailable
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                    def fetch
         
     | 
| 
      
 7 
     | 
    
         
            +
                      entropy_available = nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                      if OS.windows?
         
     | 
| 
      
 9 
     | 
    
         
            +
                        entropy_available = fetch_windows
         
     | 
| 
      
 10 
     | 
    
         
            +
                      elsif OS.linux?
         
     | 
| 
      
 11 
     | 
    
         
            +
                        entropy_available = fetch_linux
         
     | 
| 
      
 12 
     | 
    
         
            +
                      elsif OS.mac?
         
     | 
| 
      
 13 
     | 
    
         
            +
                        entropy_available = fetch_mac
         
     | 
| 
      
 14 
     | 
    
         
            +
                      end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                      entropy_available
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    def get_labels
         
     | 
| 
      
 20 
     | 
    
         
            +
                      labels = [{:label => :entropy},
         
     | 
| 
      
 21 
     | 
    
         
            +
                                {:label => :value}]
         
     | 
| 
      
 22 
     | 
    
         
            +
                      labels
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    private
         
     | 
| 
      
 26 
     | 
    
         
            +
                      def fetch_linux
         
     | 
| 
      
 27 
     | 
    
         
            +
                        entropy_available_data = `cat /proc/sys/kernel/random/entropy_avail 2>&1`.gsub("\n",'')
         
     | 
| 
      
 28 
     | 
    
         
            +
                        entropy_available = get_hash(entropy_available_data)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        entropy_available
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      def fetch_mac
         
     | 
| 
      
 33 
     | 
    
         
            +
                        entropy_available = get_hash('-')
         
     | 
| 
      
 34 
     | 
    
         
            +
                        entropy_available
         
     | 
| 
      
 35 
     | 
    
         
            +
                      end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      def fetch_windows
         
     | 
| 
      
 38 
     | 
    
         
            +
                        entropy_available = get_hash('-')
         
     | 
| 
      
 39 
     | 
    
         
            +
                        entropy_available
         
     | 
| 
      
 40 
     | 
    
         
            +
                      end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                      def get_hash(data)
         
     | 
| 
      
 43 
     | 
    
         
            +
                        entropy_available = Hash.new
         
     | 
| 
      
 44 
     | 
    
         
            +
                        entropy_available['entropy_available'] = {:entropy => 'available', :value => data}
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                        entropy_available
         
     | 
| 
      
 47 
     | 
    
         
            +
                      end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 3 
     | 
    
         
            +
                module MemoryInformation
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                    def fetch
         
     | 
| 
      
 7 
     | 
    
         
            +
                      memory_info = nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                      if OS.windows?
         
     | 
| 
      
 9 
     | 
    
         
            +
                        memory_info = fetch_windows
         
     | 
| 
      
 10 
     | 
    
         
            +
                      elsif OS.linux?
         
     | 
| 
      
 11 
     | 
    
         
            +
                        memory_info = fetch_linux
         
     | 
| 
      
 12 
     | 
    
         
            +
                      elsif OS.mac?
         
     | 
| 
      
 13 
     | 
    
         
            +
                        memory_info = fetch_mac
         
     | 
| 
      
 14 
     | 
    
         
            +
                      end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                      memory_info
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    def get_labels
         
     | 
| 
      
 20 
     | 
    
         
            +
                      labels = [{:label => :memory_detail},
         
     | 
| 
      
 21 
     | 
    
         
            +
                                {:label => :value}]
         
     | 
| 
      
 22 
     | 
    
         
            +
                      labels
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    private
         
     | 
| 
      
 26 
     | 
    
         
            +
                      def fetch_linux
         
     | 
| 
      
 27 
     | 
    
         
            +
                        mem_data = `cat /proc/meminfo 2>&1`.gsub("\t",'')
         
     | 
| 
      
 28 
     | 
    
         
            +
                        mem = get_hash(mem_data)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        mem
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      def fetch_mac
         
     | 
| 
      
 33 
     | 
    
         
            +
                        mem_data = `vm_stat 2>&1`.gsub(".",'')
         
     | 
| 
      
 34 
     | 
    
         
            +
                        mem = get_hash(mem_data)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                        mem.each_key do |key|
         
     | 
| 
      
 37 
     | 
    
         
            +
                          mem[key][:value] = ((mem[key][:value].to_i * 4096) / 1024 / 1024).to_s + 'MB'
         
     | 
| 
      
 38 
     | 
    
         
            +
                          mem[key][:memory_detail] = mem[key][:memory_detail].gsub('Pages','Memory')
         
     | 
| 
      
 39 
     | 
    
         
            +
                        end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                        mem_total_data = `system_profiler SPHardwareDataType | grep "  Memory:" 2>&1`
         
     | 
| 
      
 42 
     | 
    
         
            +
                        mem_total = get_hash(mem_total_data)
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                        mem = mem_total.merge(mem)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                        mem
         
     | 
| 
      
 47 
     | 
    
         
            +
                      end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                      def fetch_windows
         
     | 
| 
      
 50 
     | 
    
         
            +
                        mem_data = `systeminfo | findstr /C:"Total Physical Memory" /C:"Available Physical Memory"`
         
     | 
| 
      
 51 
     | 
    
         
            +
                        mem = get_hash(mem_data)
         
     | 
| 
      
 52 
     | 
    
         
            +
                        mem
         
     | 
| 
      
 53 
     | 
    
         
            +
                      end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                      def get_hash(data)
         
     | 
| 
      
 56 
     | 
    
         
            +
                        mem = Hash.new
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                        unless data.nil?
         
     | 
| 
      
 59 
     | 
    
         
            +
                          data.split("\n").each do |info|
         
     | 
| 
      
 60 
     | 
    
         
            +
                            infos = info.split(':')
         
     | 
| 
      
 61 
     | 
    
         
            +
                            mem[infos[0].to_s.strip] = {:memory_detail => infos[0].to_s.strip, :value => infos[1].to_s.strip}
         
     | 
| 
      
 62 
     | 
    
         
            +
                          end
         
     | 
| 
      
 63 
     | 
    
         
            +
                        end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                        mem
         
     | 
| 
      
 66 
     | 
    
         
            +
                      end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 3 
     | 
    
         
            +
                module OsInformation
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                    def fetch
         
     | 
| 
      
 7 
     | 
    
         
            +
                      os_information  = nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                      if OS.windows?
         
     | 
| 
      
 9 
     | 
    
         
            +
                        os_information  = fetch_windows
         
     | 
| 
      
 10 
     | 
    
         
            +
                      elsif OS.linux?
         
     | 
| 
      
 11 
     | 
    
         
            +
                        os_information  = fetch_linux
         
     | 
| 
      
 12 
     | 
    
         
            +
                      elsif OS.mac?
         
     | 
| 
      
 13 
     | 
    
         
            +
                        os_information  = fetch_mac
         
     | 
| 
      
 14 
     | 
    
         
            +
                      end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                      os_information
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    def get_labels
         
     | 
| 
      
 20 
     | 
    
         
            +
                      labels = [{:label => :os_detail},
         
     | 
| 
      
 21 
     | 
    
         
            +
                                {:label => :value}]
         
     | 
| 
      
 22 
     | 
    
         
            +
                      labels
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    private
         
     | 
| 
      
 26 
     | 
    
         
            +
                      def fetch_linux
         
     | 
| 
      
 27 
     | 
    
         
            +
                        os_data = `lsb_release -a 2>&1`
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                        if os_data.nil? || os_data.include?('lsb_release: not found')
         
     | 
| 
      
 30 
     | 
    
         
            +
                          os_data = `cat /etc/issue 2>&1`
         
     | 
| 
      
 31 
     | 
    
         
            +
                          os_data = 'Description:'+os_data.gsub('\n \l','')
         
     | 
| 
      
 32 
     | 
    
         
            +
                        end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                        os = get_hash(os_data)
         
     | 
| 
      
 35 
     | 
    
         
            +
                        os
         
     | 
| 
      
 36 
     | 
    
         
            +
                      end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                      def fetch_mac
         
     | 
| 
      
 39 
     | 
    
         
            +
                        os_data = `sw_vers`
         
     | 
| 
      
 40 
     | 
    
         
            +
                        os = get_hash(os_data)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        os
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                      def fetch_windows
         
     | 
| 
      
 45 
     | 
    
         
            +
                        os_data = `systeminfo | findstr /C:"OS"`
         
     | 
| 
      
 46 
     | 
    
         
            +
                        os = get_hash(os_data)
         
     | 
| 
      
 47 
     | 
    
         
            +
                        os
         
     | 
| 
      
 48 
     | 
    
         
            +
                      end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                      def get_hash(data)
         
     | 
| 
      
 51 
     | 
    
         
            +
                        os = Hash.new
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                        unless data.nil?
         
     | 
| 
      
 54 
     | 
    
         
            +
                          data.split("\n").each do |info|
         
     | 
| 
      
 55 
     | 
    
         
            +
                            infos = info.split(':')
         
     | 
| 
      
 56 
     | 
    
         
            +
                            os[infos[0].to_s.strip] = {:os_detail => infos[0].to_s.strip, :value => infos[1].to_s.strip}
         
     | 
| 
      
 57 
     | 
    
         
            +
                          end
         
     | 
| 
      
 58 
     | 
    
         
            +
                        end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                        os
         
     | 
| 
      
 61 
     | 
    
         
            +
                      end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative 'cpu_information'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative 'memory_information'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'disk_space_information'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative 'entropy_available'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative 'os_information'
         
     | 
| 
      
 6 
     | 
    
         
            +
            module KPM
         
     | 
| 
      
 7 
     | 
    
         
            +
              module SystemProxy
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                module OS
         
     | 
| 
      
 10 
     | 
    
         
            +
                  def OS.windows?
         
     | 
| 
      
 11 
     | 
    
         
            +
                    (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG["host_os"]) != nil
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  def OS.mac?
         
     | 
| 
      
 15 
     | 
    
         
            +
                    (/darwin/ =~ RbConfig::CONFIG["host_os"]) != nil
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  def OS.unix?
         
     | 
| 
      
 19 
     | 
    
         
            +
                    !OS.windows?
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  def OS.linux?
         
     | 
| 
      
 23 
     | 
    
         
            +
                    OS.unix? and not OS.mac?
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/kpm/tasks.rb
    CHANGED
    
    | 
         @@ -38,7 +38,8 @@ module KPM 
     | 
|
| 
       38 
38 
     | 
    
         
             
                    desc 'install config_file', 'Install Kill Bill server and plugins according to the specified YAML configuration file.'
         
     | 
| 
       39 
39 
     | 
    
         
             
                    def install(config_file=nil)
         
     | 
| 
       40 
40 
     | 
    
         
             
                      help = Installer.from_file(config_file).install(options[:force_download], options[:verify_sha1])
         
     | 
| 
       41 
     | 
    
         
            -
                       
     | 
| 
      
 41 
     | 
    
         
            +
                      help = JSON(help)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      say help['help'], :green unless help['help'].nil?
         
     | 
| 
       42 
43 
     | 
    
         
             
                    end
         
     | 
| 
       43 
44 
     | 
    
         | 
| 
       44 
45 
     | 
    
         
             
                    method_option :destination,
         
     | 
| 
         @@ -428,8 +429,13 @@ module KPM 
     | 
|
| 
       428 
429 
     | 
    
         
             
                    desc 'system', 'Gather information about the system'
         
     | 
| 
       429 
430 
     | 
    
         
             
                    def system
         
     | 
| 
       430 
431 
     | 
    
         
             
                      system = KPM::System.new
         
     | 
| 
       431 
     | 
    
         
            -
                      system.information(options[:bundles_dir], options[:as_json], options[:config_file], options[:kaui_web_path],
         
     | 
| 
      
 432 
     | 
    
         
            +
                      information = system.information(options[:bundles_dir], options[:as_json], options[:config_file], options[:kaui_web_path],
         
     | 
| 
       432 
433 
     | 
    
         
             
                                         options[:killbill_web_path])
         
     | 
| 
      
 434 
     | 
    
         
            +
             
     | 
| 
      
 435 
     | 
    
         
            +
                      if options[:as_json]
         
     | 
| 
      
 436 
     | 
    
         
            +
                        puts information
         
     | 
| 
      
 437 
     | 
    
         
            +
                      end
         
     | 
| 
      
 438 
     | 
    
         
            +
             
     | 
| 
       433 
439 
     | 
    
         
             
                    end
         
     | 
| 
       434 
440 
     | 
    
         | 
| 
       435 
441 
     | 
    
         
             
                    method_option :export,
         
     | 
| 
         @@ -593,6 +599,99 @@ module KPM 
     | 
|
| 
       593 
599 
     | 
    
         
             
                    end
         
     | 
| 
       594 
600 
     | 
    
         | 
| 
       595 
601 
     | 
    
         | 
| 
      
 602 
     | 
    
         
            +
                    method_option :account_export,
         
     | 
| 
      
 603 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 604 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 605 
     | 
    
         
            +
                                  :desc    => 'export account for a provided id.'
         
     | 
| 
      
 606 
     | 
    
         
            +
                    method_option :log_dir,
         
     | 
| 
      
 607 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 608 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 609 
     | 
    
         
            +
                                  :desc    => '(Optional) Log directory if the default tomcat location has changed'
         
     | 
| 
      
 610 
     | 
    
         
            +
                    method_option :config_file,
         
     | 
| 
      
 611 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 612 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 613 
     | 
    
         
            +
                                  :desc    => 'Yml that contains killbill api connection and DB connection'
         
     | 
| 
      
 614 
     | 
    
         
            +
                    method_option :killbill_api_credentials,
         
     | 
| 
      
 615 
     | 
    
         
            +
                                  :type    => :array,
         
     | 
| 
      
 616 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 617 
     | 
    
         
            +
                                  :desc    => 'Killbill api credentials <api_key> <api_secrets>'
         
     | 
| 
      
 618 
     | 
    
         
            +
                    method_option :killbill_credentials,
         
     | 
| 
      
 619 
     | 
    
         
            +
                                  :type    => :array,
         
     | 
| 
      
 620 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 621 
     | 
    
         
            +
                                  :desc    => 'Killbill credentials <user> <password>'
         
     | 
| 
      
 622 
     | 
    
         
            +
                    method_option :killbill_url,
         
     | 
| 
      
 623 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 624 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 625 
     | 
    
         
            +
                                  :desc    => 'Killbill URL ex. http://127.0.0.1:8080'
         
     | 
| 
      
 626 
     | 
    
         
            +
                    method_option :database_name,
         
     | 
| 
      
 627 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 628 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 629 
     | 
    
         
            +
                                  :desc    => 'DB name to connect'
         
     | 
| 
      
 630 
     | 
    
         
            +
                    method_option :database_credentials,
         
     | 
| 
      
 631 
     | 
    
         
            +
                                  :type    => :array,
         
     | 
| 
      
 632 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 633 
     | 
    
         
            +
                                  :desc    => 'DB credentials <user> <password>'
         
     | 
| 
      
 634 
     | 
    
         
            +
                    method_option :database_host,
         
     | 
| 
      
 635 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 636 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 637 
     | 
    
         
            +
                                  :desc    => 'Database Host name'
         
     | 
| 
      
 638 
     | 
    
         
            +
                    method_option :kaui_web_path,
         
     | 
| 
      
 639 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 640 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 641 
     | 
    
         
            +
                                  :desc    => 'Path for the KAUI web app'
         
     | 
| 
      
 642 
     | 
    
         
            +
                    method_option :killbill_web_path,
         
     | 
| 
      
 643 
     | 
    
         
            +
                                  :type    => :string,
         
     | 
| 
      
 644 
     | 
    
         
            +
                                  :default => nil,
         
     | 
| 
      
 645 
     | 
    
         
            +
                                  :desc    => 'Path for the killbill web app'
         
     | 
| 
      
 646 
     | 
    
         
            +
                    desc 'diagnostic', 'exports and \'zips\' the account data, system, logs and tenant configurations'
         
     | 
| 
      
 647 
     | 
    
         
            +
                    def diagnostic
         
     | 
| 
      
 648 
     | 
    
         
            +
                      logger.info 'Please wait processing the request!!!'
         
     | 
| 
      
 649 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 650 
     | 
    
         
            +
                        if options[:account_export] && options[:account_export] == 'account_export'
         
     | 
| 
      
 651 
     | 
    
         
            +
                          raise Interrupt,'--account_export,  please provide a valid account id'
         
     | 
| 
      
 652 
     | 
    
         
            +
                        end
         
     | 
| 
      
 653 
     | 
    
         
            +
             
     | 
| 
      
 654 
     | 
    
         
            +
                        if options[:killbill_url] && /https?:\/\/[\S]+/.match(options[:killbill_url]).nil?
         
     | 
| 
      
 655 
     | 
    
         
            +
                          raise Interrupt,'--killbill_url, required format -> http(s)://something'
         
     | 
| 
      
 656 
     | 
    
         
            +
                        end
         
     | 
| 
      
 657 
     | 
    
         
            +
             
     | 
| 
      
 658 
     | 
    
         
            +
                        if options[:killbill_api_credentials] && options[:killbill_api_credentials].size != 2
         
     | 
| 
      
 659 
     | 
    
         
            +
                          raise Interrupt,'--killbill_api_credentials, required format -> <api_key> <api_secrets>'
         
     | 
| 
      
 660 
     | 
    
         
            +
                        end
         
     | 
| 
      
 661 
     | 
    
         
            +
             
     | 
| 
      
 662 
     | 
    
         
            +
                        if options[:killbill_credentials] && options[:killbill_credentials].size != 2
         
     | 
| 
      
 663 
     | 
    
         
            +
                          raise Interrupt,'--killbill_credentials, required format -> <user> <password>'
         
     | 
| 
      
 664 
     | 
    
         
            +
                        end
         
     | 
| 
      
 665 
     | 
    
         
            +
             
     | 
| 
      
 666 
     | 
    
         
            +
                        if options[:database_credentials] && options[:database_credentials].size != 2
         
     | 
| 
      
 667 
     | 
    
         
            +
                          raise Interrupt,'--database_credentials, required format -> <user> <password>'
         
     | 
| 
      
 668 
     | 
    
         
            +
                        end
         
     | 
| 
      
 669 
     | 
    
         
            +
             
     | 
| 
      
 670 
     | 
    
         
            +
                        if options[:database_name] && options[:database_name] == :database_name.to_s
         
     | 
| 
      
 671 
     | 
    
         
            +
                          raise Interrupt,'--database_credentials, please provide a valid database name'
         
     | 
| 
      
 672 
     | 
    
         
            +
                        end
         
     | 
| 
      
 673 
     | 
    
         
            +
             
     | 
| 
      
 674 
     | 
    
         
            +
                        if options[:kaui_web_path] && options[:kaui_web_path] == :kaui_web_path.to_s
         
     | 
| 
      
 675 
     | 
    
         
            +
                          raise Interrupt,'--kaui_web_path, please provide a valid kaui web path '
         
     | 
| 
      
 676 
     | 
    
         
            +
                        end
         
     | 
| 
      
 677 
     | 
    
         
            +
             
     | 
| 
      
 678 
     | 
    
         
            +
                        if options[:killbill_web_path] && options[:killbill_web_path] == :killbill_web_path.to_s
         
     | 
| 
      
 679 
     | 
    
         
            +
                          raise Interrupt,'--killbill_web_path, please provide a valid killbill web path'
         
     | 
| 
      
 680 
     | 
    
         
            +
                        end
         
     | 
| 
      
 681 
     | 
    
         
            +
             
     | 
| 
      
 682 
     | 
    
         
            +
                        diagnostic = KPM::DiagnosticFile.new(options[:config_file],options[:killbill_api_credentials],options[:killbill_credentials],
         
     | 
| 
      
 683 
     | 
    
         
            +
                                                   options[:killbill_url],options[:database_name],options[:database_credentials],
         
     | 
| 
      
 684 
     | 
    
         
            +
                                                  options[:database_host], options[:kaui_web_path], options[:killbill_web_path],logger)
         
     | 
| 
      
 685 
     | 
    
         
            +
                        diagnostic.export_data(options[:account_export],  options[:log_dir])
         
     | 
| 
      
 686 
     | 
    
         
            +
             
     | 
| 
      
 687 
     | 
    
         
            +
                      rescue Exception => e
         
     | 
| 
      
 688 
     | 
    
         
            +
                        logger.error "\e[91;1m#{e.message}\e[0m"
         
     | 
| 
      
 689 
     | 
    
         
            +
                        if not e.is_a?(Interrupt)
         
     | 
| 
      
 690 
     | 
    
         
            +
                          logger.error e.backtrace.join("\n")
         
     | 
| 
      
 691 
     | 
    
         
            +
                        end
         
     | 
| 
      
 692 
     | 
    
         
            +
                      end
         
     | 
| 
      
 693 
     | 
    
         
            +
                    end
         
     | 
| 
      
 694 
     | 
    
         
            +
             
     | 
| 
       596 
695 
     | 
    
         
             
                    map :pull_ruby_plugin => :install_ruby_plugin,
         
     | 
| 
       597 
696 
     | 
    
         
             
                        :pull_java_plugin => :install_java_plugin
         
     | 
| 
       598 
697 
     | 
    
         |