testlab 1.8.1 → 1.8.2
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.
- data/lib/testlab/container/io.rb +34 -7
- data/lib/testlab/provider.rb +4 -3
- data/lib/testlab/providers/open_stack.rb +20 -0
- data/lib/testlab/version.rb +1 -1
- metadata +5 -4
    
        data/lib/testlab/container/io.rb
    CHANGED
    
    | @@ -8,7 +8,7 @@ class TestLab | |
| 8 8 |  | 
| 9 9 | 
             
                  PBZIP2_MEMORY    = 1024
         | 
| 10 10 | 
             
                  READ_SIZE        = ((64 * 1024) - 1)
         | 
| 11 | 
            -
                  TRANSFER_MESSAGE = "transferring '%s' at %0.2fMB/s -- %0.2fMB of %0.2fMB -- %d%%   \r"
         | 
| 11 | 
            +
                  TRANSFER_MESSAGE = "transferring '%s' at %0.2fMB/s -- %0.2fMB of %0.2fMB -- %d%% (%01d:%02dT-%01d:%02d)   \r"
         | 
| 12 12 |  | 
| 13 13 | 
             
                  def progress_callback(action, args)
         | 
| 14 14 | 
             
                    @total_size ||= 0
         | 
| @@ -22,15 +22,24 @@ class TestLab | |
| 22 22 | 
             
                      end
         | 
| 23 23 |  | 
| 24 24 | 
             
                    when :get, :put then
         | 
| 25 | 
            +
                      elapsed  = (Time.now - @start_time)
         | 
| 26 | 
            +
             | 
| 25 27 | 
             
                      current_size = (args[1] + args[2].length)
         | 
| 26 28 | 
             
                      current_size_mb = (current_size.to_f / (1024 * 1024).to_f)
         | 
| 27 29 |  | 
| 28 | 
            -
                       | 
| 29 | 
            -
                      speed_mb =  | 
| 30 | 
            +
                      speed    = (current_size.to_f / elapsed.to_f)
         | 
| 31 | 
            +
                      speed_mb = speed / (1024 * 1024).to_f
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                      minutes = elapsed.div(60)
         | 
| 34 | 
            +
                      seconds = elapsed.modulo(60)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                      estimated = ((@total_size.to_f - current_size).to_f / speed)
         | 
| 37 | 
            +
                      est_minutes = estimated.div(60)
         | 
| 38 | 
            +
                      est_seconds = estimated.modulo(60)
         | 
| 30 39 |  | 
| 31 40 | 
             
                      percentage_done = ((current_size * 100) / @total_size)
         | 
| 32 41 |  | 
| 33 | 
            -
                      @ui.stdout.print(format_message(TRANSFER_MESSAGE.yellow % [File.basename(args[0].local), speed_mb, current_size_mb, @total_size_mb, percentage_done]))
         | 
| 42 | 
            +
                      @ui.stdout.print(format_message(TRANSFER_MESSAGE.yellow % [File.basename(args[0].local), speed_mb, current_size_mb, @total_size_mb, percentage_done, minutes, seconds, est_minutes, est_seconds]))
         | 
| 34 43 |  | 
| 35 44 | 
             
                    when :finish
         | 
| 36 45 | 
             
                      @ui.stdout.puts
         | 
| @@ -51,6 +60,9 @@ class TestLab | |
| 51 60 | 
             
                    # ephemeral state.
         | 
| 52 61 | 
             
                    self.lxc_clone.exists? and raise ContainerError, 'You can not export ephemeral containers!'
         | 
| 53 62 |  | 
| 63 | 
            +
                    # Run our callbacks
         | 
| 64 | 
            +
                    do_provisioner_callbacks(self, :export, @ui)
         | 
| 65 | 
            +
             | 
| 54 66 | 
             
                    # Ensure the container is stopped before we attempt to export it.
         | 
| 55 67 | 
             
                    self.down
         | 
| 56 68 |  | 
| @@ -149,6 +161,11 @@ rm -fv #{remote_file} | |
| 149 161 | 
             
            EOF
         | 
| 150 162 | 
             
                    end
         | 
| 151 163 |  | 
| 164 | 
            +
                    self.up
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                    # Run our callbacks
         | 
| 167 | 
            +
                    do_provisioner_callbacks(self, :import, @ui)
         | 
| 168 | 
            +
             | 
| 152 169 | 
             
                    @ui.stdout.puts(format_message("Your shipping container is now imported and available for use!".green.bold))
         | 
| 153 170 |  | 
| 154 171 | 
             
                    true
         | 
| @@ -234,9 +251,19 @@ EOF | |
| 234 251 |  | 
| 235 252 | 
             
                          new_progress = (current_size * 100) / total_size
         | 
| 236 253 | 
             
                          unless new_progress == progress
         | 
| 237 | 
            -
                            elapsed | 
| 238 | 
            -
             | 
| 239 | 
            -
                             | 
| 254 | 
            +
                            elapsed  = (Time.now - start_time)
         | 
| 255 | 
            +
             | 
| 256 | 
            +
                            speed    = (current_size.to_f / elapsed.to_f)
         | 
| 257 | 
            +
                            speed_mb = speed / (1024 * 1024).to_f
         | 
| 258 | 
            +
             | 
| 259 | 
            +
                            minutes = elapsed.div(60)
         | 
| 260 | 
            +
                            seconds = elapsed.modulo(60)
         | 
| 261 | 
            +
             | 
| 262 | 
            +
                            estimated = ((total_size.to_f - current_size).to_f / speed)
         | 
| 263 | 
            +
                            est_minutes = estimated.div(60)
         | 
| 264 | 
            +
                            est_seconds = estimated.modulo(60)
         | 
| 265 | 
            +
             | 
| 266 | 
            +
                            @ui.stdout.print(format_message(TRANSFER_MESSAGE.yellow % [File.basename(local_file), speed_mb, current_size_mb, total_size_mb, new_progress, minutes, seconds, est_minutes, est_seconds]))
         | 
| 240 267 | 
             
                          end
         | 
| 241 268 | 
             
                          progress = new_progress
         | 
| 242 269 | 
             
                        end
         | 
    
        data/lib/testlab/provider.rb
    CHANGED
    
    | @@ -9,9 +9,10 @@ class TestLab | |
| 9 9 | 
             
              class Provider
         | 
| 10 10 | 
             
                PROXY_METHODS = %w(instance_id state user identity ip port create destroy up down reload status alive? dead? exists?).map(&:to_sym)
         | 
| 11 11 |  | 
| 12 | 
            -
                autoload :AWS, | 
| 13 | 
            -
                autoload :Local, | 
| 14 | 
            -
                autoload : | 
| 12 | 
            +
                autoload :AWS,       'testlab/providers/aws'
         | 
| 13 | 
            +
                autoload :Local,     'testlab/providers/local'
         | 
| 14 | 
            +
                autoload :OpenStack, 'testlab/providers/open_stack'
         | 
| 15 | 
            +
                autoload :Vagrant,   'testlab/providers/vagrant'
         | 
| 15 16 |  | 
| 16 17 | 
             
                class << self
         | 
| 17 18 |  | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            class TestLab
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              class Provider
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                # OpenStack Provider Error Class
         | 
| 6 | 
            +
                class OpenStackError < ProviderError; end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                # OpenStack Provider Class
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # @author Zachary Patten <zachary AT jovelabs DOT com>
         | 
| 11 | 
            +
                class OpenStack
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def initialize(ui=ZTK::UI.new)
         | 
| 14 | 
            +
                    @ui = ui
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
    
        data/lib/testlab/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: testlab
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.8. | 
| 4 | 
            +
              version: 1.8.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-09- | 
| 12 | 
            +
            date: 2013-09-17 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: gli
         | 
| @@ -275,6 +275,7 @@ files: | |
| 275 275 | 
             
            - lib/testlab/provider.rb
         | 
| 276 276 | 
             
            - lib/testlab/providers/aws.rb
         | 
| 277 277 | 
             
            - lib/testlab/providers/local.rb
         | 
| 278 | 
            +
            - lib/testlab/providers/open_stack.rb
         | 
| 278 279 | 
             
            - lib/testlab/providers/templates/vagrant/Vagrantfile.erb
         | 
| 279 280 | 
             
            - lib/testlab/providers/vagrant.rb
         | 
| 280 281 | 
             
            - lib/testlab/provisioner.rb
         | 
| @@ -343,7 +344,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 343 344 | 
             
                  version: '0'
         | 
| 344 345 | 
             
                  segments:
         | 
| 345 346 | 
             
                  - 0
         | 
| 346 | 
            -
                  hash:  | 
| 347 | 
            +
                  hash: -2021953625576057715
         | 
| 347 348 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 348 349 | 
             
              none: false
         | 
| 349 350 | 
             
              requirements:
         | 
| @@ -352,7 +353,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 352 353 | 
             
                  version: '0'
         | 
| 353 354 | 
             
                  segments:
         | 
| 354 355 | 
             
                  - 0
         | 
| 355 | 
            -
                  hash:  | 
| 356 | 
            +
                  hash: -2021953625576057715
         | 
| 356 357 | 
             
            requirements: []
         | 
| 357 358 | 
             
            rubyforge_project: 
         | 
| 358 359 | 
             
            rubygems_version: 1.8.25
         |