inprovise-vbox 0.2.3 → 0.2.4
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 +8 -8
- data/lib/inprovise/vbox/vbox.rb +23 -16
- data/lib/inprovise/vbox/version.rb +1 -1
- data/test/vbox_test.rb +8 -5
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                OTgyMTBmNTdkOWE4MzM2MjIyMmE4NzE4ZmNhODgzMzAyN2Q1ZWIwNw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                NWJiNGNmOGJhMmQ3YWM0OWZiMmFjN2Q1ODZiMDlmNjU0ZWZiM2Q5NQ==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                M2ZiZDFkMTRkNGJhMDg3NWM0ZGYwZmYzYjU5ODc3YTNiM2VjZTdmMTZiMjJj
         | 
| 10 | 
            +
                ODU0OGE3YjRiYTZhNmM2YmE1NDlhY2U3NzYxZmIxZmUwZTY3MDUwZjIzMmYz
         | 
| 11 | 
            +
                YWQ0MDdiZjI5NDQzMjExNTQ4OGJiNTllZTA3NDAzYWI4MDE2YWI=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                NmExNTZjYjQ2YjZmNzBlOGM3MzUxYjEzZGU5MzA0ZjRmN2Y3NDgyYjZlMmRj
         | 
| 14 | 
            +
                ODUwNTUyZTdiOGQzYjg4NDk3Y2ZjNDE4Mjg5MzAwNDQ2NmQyZjM0MTM2YTAz
         | 
| 15 | 
            +
                ZTg4NmI5NTg0Yjg0ZmQyNDQyZmQ5MTgzMDg1NjQ4OTVhYTFlYTM=
         | 
    
        data/lib/inprovise/vbox/vbox.rb
    CHANGED
    
    | @@ -59,14 +59,14 @@ module Inprovise::VBox | |
| 59 59 | 
             
                end
         | 
| 60 60 |  | 
| 61 61 | 
             
                def setup
         | 
| 62 | 
            -
                  # verify mandatory configuration
         | 
| 63 | 
            -
                  raise ArgumentError, "Missing required configuration for vbox script #{name}" unless Hash === configuration || OpenStruct === configuration
         | 
| 64 62 | 
             
                  # take care of defaults
         | 
| 65 | 
            -
                  configuration | 
| 66 | 
            -
                  configuration[: | 
| 67 | 
            -
                  configuration[: | 
| 63 | 
            +
                  @configuration ||= {}
         | 
| 64 | 
            +
                  @configuration[:arch] ||= 'x86_64'
         | 
| 65 | 
            +
                  @configuration[:memory] ||= 1024
         | 
| 66 | 
            +
                  @configuration[:cpus] ||= 1
         | 
| 67 | 
            +
                  @configuration[:network] ||= :hostnet
         | 
| 68 68 | 
             
                  # generate name if none set
         | 
| 69 | 
            -
                  configuration[:name] ||= "#{name}_#{self.hash}_#{Time.now.to_f}"
         | 
| 69 | 
            +
                  @configuration[:name] ||= "#{name}_#{self.hash}_#{Time.now.to_f}"
         | 
| 70 70 |  | 
| 71 71 | 
             
                  vbs = self
         | 
| 72 72 | 
             
                  # define the scripts that do the actual work as dependencies
         | 
| @@ -97,8 +97,9 @@ module Inprovise::VBox | |
| 97 97 | 
             
                      # 1. verify config
         | 
| 98 98 | 
             
                      raise ArgumentError, "Cannot access VBox image #{vmimg}" unless remote(vmimg).file?
         | 
| 99 99 | 
             
                      # 2. execute virt-install
         | 
| 100 | 
            -
                      log("Installing VBox #{vmname}" | 
| 100 | 
            +
                      log("Installing VBox #{vmname}", :bold)
         | 
| 101 101 | 
             
                      cmdline = 'virt-install --connect qemu:///system --hvm --virt-type kvm --import --wait 0 '
         | 
| 102 | 
            +
                      cmdline << "--arch #{vbs.vbox_arch(self)} "
         | 
| 102 103 | 
             
                      cmdline << '--autostart ' if vbs.vbox_autostart(self)
         | 
| 103 104 | 
             
                      cmdline << "--name #{vmname} --memory #{vbs.vbox_memory(self)} --vcpus #{vbs.vbox_cpus(self)} "
         | 
| 104 105 | 
             
                      cmdline << "--os-variant #{vbs.vbox_os(self)} " if vbs.vbox_os(self)
         | 
| @@ -126,17 +127,18 @@ module Inprovise::VBox | |
| 126 127 | 
             
                      vmname = vbs.vbox_name(self)
         | 
| 127 128 | 
             
                      if trigger 'vbox:vbox-verify', vmname, true
         | 
| 128 129 | 
             
                        trigger 'vbox:vbox-shutdown', vmname
         | 
| 129 | 
            -
                         | 
| 130 | 
            +
                        msg = "Waiting for shutdown of VBox #{vmname}. Please wait ..."
         | 
| 131 | 
            +
                        log.print("#{msg}|\r", :bold)
         | 
| 130 132 | 
             
                        30.times do |n|
         | 
| 131 133 | 
             
                          sleep(1)
         | 
| 132 | 
            -
                          log.print(" | 
| 134 | 
            +
                          log.print("#{msg}#{%w{| / - \\}[(n+1) % 4]}\r", :bold)
         | 
| 133 135 | 
             
                          break unless trigger 'vbox:vbox-verify', vmname, true
         | 
| 134 136 | 
             
                        end
         | 
| 135 137 | 
             
                        if trigger('vbox:vbox-verify', vmname, true)
         | 
| 136 138 | 
             
                          trigger('vbox:vbox-kill', vmname)
         | 
| 137 139 | 
             
                          sleep(1)
         | 
| 138 140 | 
             
                        end
         | 
| 139 | 
            -
                        log.println(" | 
| 141 | 
            +
                        log.println("#{msg}done", :bold)
         | 
| 140 142 | 
             
                      end
         | 
| 141 143 | 
             
                      trigger('vbox:vbox-delete', vmname) unless trigger('vbox:vbox-verify', vmname, true)
         | 
| 142 144 | 
             
                    end
         | 
| @@ -160,17 +162,18 @@ module Inprovise::VBox | |
| 160 162 | 
             
                      vmname = vbs.vbox_name(self)
         | 
| 161 163 | 
             
                      unless vbs.vbox_no_node(self)
         | 
| 162 164 | 
             
                        # get MAC and IP for VM
         | 
| 163 | 
            -
                         | 
| 165 | 
            +
                        msg = "Determining IP address for VBox #{vmname}. Please wait ..."
         | 
| 166 | 
            +
                        log.print("#{msg}|\r", :bold)
         | 
| 164 167 | 
             
                        mac = addr = nil
         | 
| 165 168 | 
             
                        150.times do |n|
         | 
| 166 169 | 
             
                          sleep(2)
         | 
| 167 | 
            -
                          log.print(" | 
| 170 | 
            +
                          log.print("#{msg}#{%w{| / - \\}[(n+1) % 4]}\r", :bold)
         | 
| 168 171 | 
             
                          mac, addr = trigger 'vbox:vbox-ifaddr', vmname
         | 
| 169 172 | 
             
                          if addr
         | 
| 170 173 | 
             
                            break
         | 
| 171 174 | 
             
                          end
         | 
| 172 175 | 
             
                        end
         | 
| 173 | 
            -
                        log.println(" | 
| 176 | 
            +
                        log.println("#{msg}done", :bold)
         | 
| 174 177 | 
             
                        raise RuntimeError, "Failed to determin IP address for VBox #{vmname}" unless addr
         | 
| 175 178 | 
             
                        log("VBox #{vmname} : mac=#{mac}, addr=#{addr}") if Inprovise.verbosity > 0
         | 
| 176 179 | 
             
                        vbox_opts = vbs.vbox_config_hash(self)
         | 
| @@ -187,7 +190,7 @@ module Inprovise::VBox | |
| 187 190 | 
             
                          Inprovise::Sniffer.run_sniffers_for(node) rescue Inprovise::Sniffer.run_sniffers_for(node)
         | 
| 188 191 | 
             
                          Inprovise::Infrastructure.save
         | 
| 189 192 | 
             
                        end
         | 
| 190 | 
            -
                        log("Added new node #{node}" | 
| 193 | 
            +
                        log("Added new node #{node}", :bold)
         | 
| 191 194 | 
             
                      end
         | 
| 192 195 | 
             
                    end
         | 
| 193 196 |  | 
| @@ -199,9 +202,9 @@ module Inprovise::VBox | |
| 199 202 | 
             
                        if tgt && Inprovise::Infrastructure::Node === tgt
         | 
| 200 203 | 
             
                          Inprovise::Infrastructure.deregister(vmname)
         | 
| 201 204 | 
             
                          Inprovise::Infrastructure.save
         | 
| 202 | 
            -
                          log("Removed node #{tgt}" | 
| 205 | 
            +
                          log("Removed node #{tgt}", :bold)
         | 
| 203 206 | 
             
                        else
         | 
| 204 | 
            -
                          log("No existing node #{vmname} found!" | 
| 207 | 
            +
                          log("No existing node #{vmname} found!", :yellow)
         | 
| 205 208 | 
             
                        end
         | 
| 206 209 | 
             
                      end
         | 
| 207 210 | 
             
                    end
         | 
| @@ -235,6 +238,10 @@ module Inprovise::VBox | |
| 235 238 | 
             
                  value_for context, context.config[name.to_sym][:image]
         | 
| 236 239 | 
             
                end
         | 
| 237 240 |  | 
| 241 | 
            +
                def vbox_arch(context)
         | 
| 242 | 
            +
                  value_for context, context.config[name.to_sym][:arch]
         | 
| 243 | 
            +
                end
         | 
| 244 | 
            +
             | 
| 238 245 | 
             
                def vbox_memory(context)
         | 
| 239 246 | 
             
                  value_for context, context.config[name.to_sym][:memory]
         | 
| 240 247 | 
             
                end
         | 
    
        data/test/vbox_test.rb
    CHANGED
    
    | @@ -26,13 +26,16 @@ describe Inprovise::VBox do | |
| 26 26 | 
             
                  script.name.must_equal 'myVbox'
         | 
| 27 27 | 
             
                end
         | 
| 28 28 |  | 
| 29 | 
            -
                it ' | 
| 30 | 
            -
                   | 
| 31 | 
            -
                     | 
| 32 | 
            -
                      vbox 'myVbox' do
         | 
| 33 | 
            -
                      end
         | 
| 29 | 
            +
                it 'defines default configuration' do
         | 
| 30 | 
            +
                  script = Inprovise::DSL.module_eval do
         | 
| 31 | 
            +
                    vbox 'myVbox' do
         | 
| 34 32 | 
             
                    end
         | 
| 35 33 | 
             
                  end
         | 
| 34 | 
            +
                  script.configuration.must_be_kind_of Hash
         | 
| 35 | 
            +
                  script.configuration[:arch].must_equal 'x86_64'
         | 
| 36 | 
            +
                  script.configuration[:memory].must_equal 1024
         | 
| 37 | 
            +
                  script.configuration[:cpus].must_equal 1
         | 
| 38 | 
            +
                  script.configuration[:network].must_equal :hostnet
         | 
| 36 39 | 
             
                end
         | 
| 37 40 | 
             
              end
         | 
| 38 41 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: inprovise-vbox
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Martin Corino
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-09- | 
| 11 | 
            +
            date: 2016-09-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: inprovise
         |