virtualbox 0.1.1 → 0.2.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.
- data/.gitignore +2 -1
- data/.yardopts +3 -0
- data/Rakefile +15 -1
- data/Readme.md +3 -0
- data/TODO +0 -3
- data/VERSION +1 -1
- data/docs/GettingStarted.md +196 -0
- data/lib/virtualbox/abstract_model/attributable.rb +15 -16
- data/lib/virtualbox/abstract_model/dirty.rb +13 -2
- data/lib/virtualbox/abstract_model/relatable.rb +59 -10
- data/lib/virtualbox/abstract_model.rb +23 -1
- data/lib/virtualbox/attached_device.rb +144 -19
- data/lib/virtualbox/command.rb +11 -2
- data/lib/virtualbox/dvd.rb +52 -4
- data/lib/virtualbox/exceptions.rb +13 -0
- data/lib/virtualbox/hard_drive.rb +37 -8
- data/lib/virtualbox/image.rb +37 -0
- data/lib/virtualbox/nic.rb +1 -1
- data/lib/virtualbox/proxies/collection.rb +29 -0
- data/lib/virtualbox/storage_controller.rb +11 -0
- data/lib/virtualbox/vm.rb +105 -5
- data/lib/virtualbox.rb +2 -1
- data/test/virtualbox/abstract_model/dirty_test.rb +17 -0
- data/test/virtualbox/abstract_model/relatable_test.rb +49 -1
- data/test/virtualbox/abstract_model_test.rb +32 -1
- data/test/virtualbox/attached_device_test.rb +184 -2
- data/test/virtualbox/command_test.rb +36 -0
- data/test/virtualbox/dvd_test.rb +43 -0
- data/test/virtualbox/hard_drive_test.rb +52 -1
- data/test/virtualbox/image_test.rb +79 -0
- data/test/virtualbox/nic_test.rb +10 -0
- data/test/virtualbox/proxies/collection_test.rb +45 -0
- data/test/virtualbox/storage_controller_test.rb +12 -0
- data/test/virtualbox/vm_test.rb +118 -10
- data/virtualbox.gemspec +8 -3
- metadata +8 -3
- data/lib/virtualbox/errors.rb +0 -7
    
        data/test/virtualbox/vm_test.rb
    CHANGED
    
    | @@ -81,9 +81,10 @@ showvminfo | |
| 81 81 | 
             
              end
         | 
| 82 82 |  | 
| 83 83 | 
             
              def create_vm
         | 
| 84 | 
            -
                 | 
| 85 | 
            -
                VirtualBox::Command.expects(:vboxmanage).with("showvminfo #{@name} | 
| 86 | 
            -
                VirtualBox::Command.expects(:vboxmanage).with( | 
| 84 | 
            +
                VirtualBox::Command.expects(:vboxmanage).with("showvminfo #{@name} --machinereadable").returns(@raw)
         | 
| 85 | 
            +
                VirtualBox::Command.expects(:vboxmanage).with("showvminfo #{@name}").returns("")
         | 
| 86 | 
            +
                VirtualBox::Command.expects(:vboxmanage).with("list hdds").returns("")
         | 
| 87 | 
            +
                VirtualBox::Command.expects(:vboxmanage).with("list dvds").returns("")
         | 
| 87 88 | 
             
                vm = VirtualBox::VM.find(@name)
         | 
| 88 89 | 
             
                assert vm
         | 
| 89 90 | 
             
                vm
         | 
| @@ -112,19 +113,103 @@ showvminfo | |
| 112 113 | 
             
                end
         | 
| 113 114 | 
             
              end
         | 
| 114 115 |  | 
| 115 | 
            -
              context " | 
| 116 | 
            +
              context "exporting a VM" do
         | 
| 116 117 | 
             
                setup do
         | 
| 117 118 | 
             
                  @vm = create_vm
         | 
| 118 119 | 
             
                end
         | 
| 119 120 |  | 
| 121 | 
            +
                should "export the VM with no options if none are passed" do
         | 
| 122 | 
            +
                  VirtualBox::Command.expects(:vboxmanage).with("export #{@name} -o foo")
         | 
| 123 | 
            +
                  @vm.export("foo")
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
                
         | 
| 126 | 
            +
                should "export the VM with specified options" do
         | 
| 127 | 
            +
                  VirtualBox::Command.expects(:vboxmanage).with("export #{@name} -o foo --vsys 0 --foo bar")
         | 
| 128 | 
            +
                  @vm.export("foo", :foo => :bar)
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
                
         | 
| 131 | 
            +
                should "shell escape all the options" do
         | 
| 132 | 
            +
                  VirtualBox::Command.expects(:vboxmanage).with("export #{@name} -o foo --vsys 0 --foo a\\ space")
         | 
| 133 | 
            +
                  @vm.export("foo", :foo => "a space")
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
                
         | 
| 136 | 
            +
                should "return true if the export succeeded" do
         | 
| 137 | 
            +
                  VirtualBox::Command.expects(:vboxmanage).once
         | 
| 138 | 
            +
                  assert @vm.export("foo")
         | 
| 139 | 
            +
                end
         | 
| 140 | 
            +
                
         | 
| 141 | 
            +
                should "return false if the export failed" do
         | 
| 142 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 143 | 
            +
                  assert !@vm.export("foo")
         | 
| 144 | 
            +
                end
         | 
| 145 | 
            +
                
         | 
| 146 | 
            +
                should "raise an exception on failure if raise_error is true" do
         | 
| 147 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 148 | 
            +
                  assert_raises(VirtualBox::Exceptions::CommandFailedException) {
         | 
| 149 | 
            +
                    @vm.export("foo", {}, true)
         | 
| 150 | 
            +
                  }
         | 
| 151 | 
            +
                end
         | 
| 152 | 
            +
              end
         | 
| 153 | 
            +
              
         | 
| 154 | 
            +
              context "controlling a VM (start, stop, pause, etc.)" do
         | 
| 155 | 
            +
                setup do
         | 
| 156 | 
            +
                  @vm = create_vm
         | 
| 157 | 
            +
                end
         | 
| 158 | 
            +
                
         | 
| 159 | 
            +
                context "control method" do
         | 
| 160 | 
            +
                  should "run the given command when 'control' is called" do
         | 
| 161 | 
            +
                    VirtualBox::Command.expects(:vboxmanage).with("controlvm #{@name} foo")
         | 
| 162 | 
            +
                    assert @vm.control(:foo)
         | 
| 163 | 
            +
                  end
         | 
| 164 | 
            +
                  
         | 
| 165 | 
            +
                  should "return false if the command failed" do
         | 
| 166 | 
            +
                    VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 167 | 
            +
                    assert !@vm.control(:foo)
         | 
| 168 | 
            +
                  end
         | 
| 169 | 
            +
                  
         | 
| 170 | 
            +
                  should "raise an exception if flag is set" do
         | 
| 171 | 
            +
                    VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 172 | 
            +
                    assert_raises(VirtualBox::Exceptions::CommandFailedException) {
         | 
| 173 | 
            +
                      @vm.control(:foo, true)
         | 
| 174 | 
            +
                    }
         | 
| 175 | 
            +
                  end
         | 
| 176 | 
            +
                end
         | 
| 177 | 
            +
                
         | 
| 120 178 | 
             
                should "start a VM with the given type" do
         | 
| 121 179 | 
             
                  VirtualBox::Command.expects(:vboxmanage).with("startvm #{@name} --type FOO")
         | 
| 122 | 
            -
                  @vm.start(:FOO)
         | 
| 180 | 
            +
                  assert @vm.start(:FOO)
         | 
| 181 | 
            +
                end
         | 
| 182 | 
            +
                
         | 
| 183 | 
            +
                should "return false if start failed" do
         | 
| 184 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 185 | 
            +
                  assert !@vm.start
         | 
| 186 | 
            +
                end
         | 
| 187 | 
            +
                
         | 
| 188 | 
            +
                should "raise an exception if start fails and flag is set" do
         | 
| 189 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 190 | 
            +
                  assert_raises(VirtualBox::Exceptions::CommandFailedException) {
         | 
| 191 | 
            +
                    @vm.start(:foo, true)
         | 
| 192 | 
            +
                  }
         | 
| 123 193 | 
             
                end
         | 
| 124 194 |  | 
| 125 195 | 
             
                should "stop a VM with a 'poweroff'" do
         | 
| 126 | 
            -
                   | 
| 127 | 
            -
                  @vm.stop
         | 
| 196 | 
            +
                  @vm.expects(:control).with(:poweroff, false).returns(true)
         | 
| 197 | 
            +
                  assert @vm.stop
         | 
| 198 | 
            +
                end
         | 
| 199 | 
            +
                
         | 
| 200 | 
            +
                should "pause a VM" do
         | 
| 201 | 
            +
                  @vm.expects(:control).with(:pause, false).returns(true)
         | 
| 202 | 
            +
                  assert @vm.pause
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
                
         | 
| 205 | 
            +
                should "resume a VM" do
         | 
| 206 | 
            +
                  @vm.expects(:control).with(:resume, false).returns(true)
         | 
| 207 | 
            +
                  assert @vm.resume
         | 
| 208 | 
            +
                end
         | 
| 209 | 
            +
                
         | 
| 210 | 
            +
                should "save the state of a VM" do
         | 
| 211 | 
            +
                  @vm.expects(:control).with(:savestate, false).returns(true)
         | 
| 212 | 
            +
                  assert @vm.save_state
         | 
| 128 213 | 
             
                end
         | 
| 129 214 | 
             
              end
         | 
| 130 215 |  | 
| @@ -215,20 +300,37 @@ raw | |
| 215 300 | 
             
              context "saving a changed VM" do
         | 
| 216 301 | 
             
                setup do
         | 
| 217 302 | 
             
                  @vm = create_vm
         | 
| 303 | 
            +
                  VirtualBox::AttachedDevice.any_instance.stubs(:save)
         | 
| 304 | 
            +
                end
         | 
| 305 | 
            +
                
         | 
| 306 | 
            +
                should "return false if saving fails" do
         | 
| 307 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 308 | 
            +
                  
         | 
| 309 | 
            +
                  @vm.ostype = "Zubuntu"
         | 
| 310 | 
            +
                  assert !@vm.save
         | 
| 311 | 
            +
                end
         | 
| 312 | 
            +
                
         | 
| 313 | 
            +
                should "raise an error if saving fails and flag to true" do
         | 
| 314 | 
            +
                  VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
         | 
| 315 | 
            +
                  
         | 
| 316 | 
            +
                  @vm.ostype = "Zubuntu"
         | 
| 317 | 
            +
                  assert_raises(VirtualBox::Exceptions::CommandFailedException) {
         | 
| 318 | 
            +
                    @vm.save(true)
         | 
| 319 | 
            +
                  }
         | 
| 218 320 | 
             
                end
         | 
| 219 321 |  | 
| 220 322 | 
             
                should "save only the attributes which saved" do
         | 
| 221 323 | 
             
                  VirtualBox::Command.expects(:vboxmanage).with("modifyvm #{@name} --ostype Zubuntu")
         | 
| 222 324 |  | 
| 223 325 | 
             
                  @vm.ostype = "Zubuntu"
         | 
| 224 | 
            -
                  @vm.save
         | 
| 326 | 
            +
                  assert @vm.save
         | 
| 225 327 | 
             
                end
         | 
| 226 328 |  | 
| 227 329 | 
             
                should "shell escape saved values" do
         | 
| 228 330 | 
             
                  VirtualBox::Command.expects(:vboxmanage).with("modifyvm #{@name} --ostype My\\ Value")
         | 
| 229 331 |  | 
| 230 332 | 
             
                  @vm.ostype = "My Value"
         | 
| 231 | 
            -
                  @vm.save
         | 
| 333 | 
            +
                  assert @vm.save
         | 
| 232 334 | 
             
                end
         | 
| 233 335 |  | 
| 234 336 | 
             
                should "shell escape the string value of a value" do
         | 
| @@ -246,7 +348,13 @@ raw | |
| 246 348 |  | 
| 247 349 | 
             
                  @vm.name = new_name
         | 
| 248 350 | 
             
                  @vm.ostype = "Zubuntu"
         | 
| 249 | 
            -
                  @vm.save
         | 
| 351 | 
            +
                  assert @vm.save
         | 
| 352 | 
            +
                end
         | 
| 353 | 
            +
                
         | 
| 354 | 
            +
                should "save the relationships as well" do
         | 
| 355 | 
            +
                  VirtualBox::Nic.expects(:save_relationship).once
         | 
| 356 | 
            +
                  VirtualBox::StorageController.expects(:save_relationship).once
         | 
| 357 | 
            +
                  assert @vm.save
         | 
| 250 358 | 
             
                end
         | 
| 251 359 | 
             
              end
         | 
| 252 360 |  | 
    
        data/virtualbox.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{virtualbox}
         | 
| 8 | 
            -
              s.version = "0. | 
| 8 | 
            +
              s.version = "0.2.0"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Mitchell Hashimoto"]
         | 
| 12 | 
            -
              s.date = %q{2010-01- | 
| 12 | 
            +
              s.date = %q{2010-01-26}
         | 
| 13 13 | 
             
              s.description = %q{Create and modify virtual machines in VirtualBox using pure ruby.}
         | 
| 14 14 | 
             
              s.email = %q{mitchell.hashimoto@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -17,11 +17,13 @@ Gem::Specification.new do |s| | |
| 17 17 | 
             
              ]
         | 
| 18 18 | 
             
              s.files = [
         | 
| 19 19 | 
             
                ".gitignore",
         | 
| 20 | 
            +
                 ".yardopts",
         | 
| 20 21 | 
             
                 "Gemfile",
         | 
| 21 22 | 
             
                 "Rakefile",
         | 
| 22 23 | 
             
                 "Readme.md",
         | 
| 23 24 | 
             
                 "TODO",
         | 
| 24 25 | 
             
                 "VERSION",
         | 
| 26 | 
            +
                 "docs/GettingStarted.md",
         | 
| 25 27 | 
             
                 "lib/virtualbox.rb",
         | 
| 26 28 | 
             
                 "lib/virtualbox/abstract_model.rb",
         | 
| 27 29 | 
             
                 "lib/virtualbox/abstract_model/attributable.rb",
         | 
| @@ -30,11 +32,12 @@ Gem::Specification.new do |s| | |
| 30 32 | 
             
                 "lib/virtualbox/attached_device.rb",
         | 
| 31 33 | 
             
                 "lib/virtualbox/command.rb",
         | 
| 32 34 | 
             
                 "lib/virtualbox/dvd.rb",
         | 
| 33 | 
            -
                 "lib/virtualbox/ | 
| 35 | 
            +
                 "lib/virtualbox/exceptions.rb",
         | 
| 34 36 | 
             
                 "lib/virtualbox/ext/subclass_listing.rb",
         | 
| 35 37 | 
             
                 "lib/virtualbox/hard_drive.rb",
         | 
| 36 38 | 
             
                 "lib/virtualbox/image.rb",
         | 
| 37 39 | 
             
                 "lib/virtualbox/nic.rb",
         | 
| 40 | 
            +
                 "lib/virtualbox/proxies/collection.rb",
         | 
| 38 41 | 
             
                 "lib/virtualbox/storage_controller.rb",
         | 
| 39 42 | 
             
                 "lib/virtualbox/vm.rb",
         | 
| 40 43 | 
             
                 "test/test_helper.rb",
         | 
| @@ -49,6 +52,7 @@ Gem::Specification.new do |s| | |
| 49 52 | 
             
                 "test/virtualbox/hard_drive_test.rb",
         | 
| 50 53 | 
             
                 "test/virtualbox/image_test.rb",
         | 
| 51 54 | 
             
                 "test/virtualbox/nic_test.rb",
         | 
| 55 | 
            +
                 "test/virtualbox/proxies/collection_test.rb",
         | 
| 52 56 | 
             
                 "test/virtualbox/storage_controller_test.rb",
         | 
| 53 57 | 
             
                 "test/virtualbox/vm_test.rb",
         | 
| 54 58 | 
             
                 "virtualbox.gemspec"
         | 
| @@ -71,6 +75,7 @@ Gem::Specification.new do |s| | |
| 71 75 | 
             
                 "test/virtualbox/hard_drive_test.rb",
         | 
| 72 76 | 
             
                 "test/virtualbox/image_test.rb",
         | 
| 73 77 | 
             
                 "test/virtualbox/nic_test.rb",
         | 
| 78 | 
            +
                 "test/virtualbox/proxies/collection_test.rb",
         | 
| 74 79 | 
             
                 "test/virtualbox/storage_controller_test.rb",
         | 
| 75 80 | 
             
                 "test/virtualbox/vm_test.rb"
         | 
| 76 81 | 
             
              ]
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: virtualbox
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Mitchell Hashimoto
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2010-01- | 
| 12 | 
            +
            date: 2010-01-26 00:00:00 -08:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: []
         | 
| 15 15 |  | 
| @@ -23,11 +23,13 @@ extra_rdoc_files: | |
| 23 23 | 
             
            - TODO
         | 
| 24 24 | 
             
            files: 
         | 
| 25 25 | 
             
            - .gitignore
         | 
| 26 | 
            +
            - .yardopts
         | 
| 26 27 | 
             
            - Gemfile
         | 
| 27 28 | 
             
            - Rakefile
         | 
| 28 29 | 
             
            - Readme.md
         | 
| 29 30 | 
             
            - TODO
         | 
| 30 31 | 
             
            - VERSION
         | 
| 32 | 
            +
            - docs/GettingStarted.md
         | 
| 31 33 | 
             
            - lib/virtualbox.rb
         | 
| 32 34 | 
             
            - lib/virtualbox/abstract_model.rb
         | 
| 33 35 | 
             
            - lib/virtualbox/abstract_model/attributable.rb
         | 
| @@ -36,11 +38,12 @@ files: | |
| 36 38 | 
             
            - lib/virtualbox/attached_device.rb
         | 
| 37 39 | 
             
            - lib/virtualbox/command.rb
         | 
| 38 40 | 
             
            - lib/virtualbox/dvd.rb
         | 
| 39 | 
            -
            - lib/virtualbox/ | 
| 41 | 
            +
            - lib/virtualbox/exceptions.rb
         | 
| 40 42 | 
             
            - lib/virtualbox/ext/subclass_listing.rb
         | 
| 41 43 | 
             
            - lib/virtualbox/hard_drive.rb
         | 
| 42 44 | 
             
            - lib/virtualbox/image.rb
         | 
| 43 45 | 
             
            - lib/virtualbox/nic.rb
         | 
| 46 | 
            +
            - lib/virtualbox/proxies/collection.rb
         | 
| 44 47 | 
             
            - lib/virtualbox/storage_controller.rb
         | 
| 45 48 | 
             
            - lib/virtualbox/vm.rb
         | 
| 46 49 | 
             
            - test/test_helper.rb
         | 
| @@ -55,6 +58,7 @@ files: | |
| 55 58 | 
             
            - test/virtualbox/hard_drive_test.rb
         | 
| 56 59 | 
             
            - test/virtualbox/image_test.rb
         | 
| 57 60 | 
             
            - test/virtualbox/nic_test.rb
         | 
| 61 | 
            +
            - test/virtualbox/proxies/collection_test.rb
         | 
| 58 62 | 
             
            - test/virtualbox/storage_controller_test.rb
         | 
| 59 63 | 
             
            - test/virtualbox/vm_test.rb
         | 
| 60 64 | 
             
            - virtualbox.gemspec
         | 
| @@ -99,5 +103,6 @@ test_files: | |
| 99 103 | 
             
            - test/virtualbox/hard_drive_test.rb
         | 
| 100 104 | 
             
            - test/virtualbox/image_test.rb
         | 
| 101 105 | 
             
            - test/virtualbox/nic_test.rb
         | 
| 106 | 
            +
            - test/virtualbox/proxies/collection_test.rb
         | 
| 102 107 | 
             
            - test/virtualbox/storage_controller_test.rb
         | 
| 103 108 | 
             
            - test/virtualbox/vm_test.rb
         |