daptiv-chef-ci 0.0.15 → 0.1.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/daptiv-chef-ci.gemspec +21 -20
 - data/lib/daptiv-chef-ci/clone_environment_task.rb +69 -0
 - data/lib/daptiv-chef-ci/logger.rb +9 -10
 - data/lib/daptiv-chef-ci/raketask_helper.rb +5 -6
 - data/lib/daptiv-chef-ci/shell.rb +50 -28
 - data/lib/daptiv-chef-ci/upload_cookbook_task.rb +62 -0
 - data/lib/daptiv-chef-ci/vagrant_destroy_task.rb +11 -12
 - data/lib/daptiv-chef-ci/vagrant_driver.rb +47 -56
 - data/lib/daptiv-chef-ci/vagrant_provision_task.rb +12 -15
 - data/lib/daptiv-chef-ci/vagrant_task.rb +34 -57
 - data/lib/daptiv-chef-ci/vagrant_up_task.rb +14 -16
 - data/lib/daptiv-chef-ci/version_cookbook_task.rb +69 -0
 - data/lib/daptiv-chef-ci/virtualbox_driver.rb +11 -12
 - data/spec/daptiv-chef-ci/logger_spec.rb +11 -15
 - data/spec/daptiv-chef-ci/shell_spec.rb +23 -27
 - data/spec/daptiv-chef-ci/vagrant_destroy_task_spec.rb +5 -7
 - data/spec/daptiv-chef-ci/vagrant_driver_spec.rb +34 -72
 - data/spec/daptiv-chef-ci/vagrant_provision_task_spec.rb +9 -13
 - data/spec/daptiv-chef-ci/vagrant_task_spec.rb +29 -21
 - data/spec/daptiv-chef-ci/vagrant_up_task_spec.rb +9 -12
 - data/spec/daptiv-chef-ci/virtualbox_driver_spec.rb +21 -16
 - data/spec/shared_contexts/rake.rb +7 -7
 - metadata +21 -14
 - data/lib/daptiv-chef-ci/basebox_builder_factory.rb +0 -19
 - data/lib/daptiv-chef-ci/virtualbox_basebox_builder.rb +0 -33
 - data/lib/daptiv-chef-ci/vmware_basebox_builder.rb +0 -103
 - data/spec/daptiv-chef-ci/basebox_builder_factory_spec.rb +0 -25
 - data/spec/daptiv-chef-ci/virtualbox_basebox_builder_spec.rb +0 -20
 - data/spec/daptiv-chef-ci/vmware_basebox_builder_spec.rb +0 -20
 
| 
         @@ -1,29 +1,26 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'daptiv-chef-ci/vagrant_up_task'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require_relative '../shared_contexts/rake'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            describe VagrantUp::RakeTask, : 
     | 
| 
      
 4 
     | 
    
         
            +
            describe VagrantUp::RakeTask, unit: true do
         
     | 
| 
       5 
5 
     | 
    
         
             
              include_context 'rake'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              describe 'vagrant_up' do
         
     | 
| 
       8 
8 
     | 
    
         
             
                it 'should up the box' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                  vagrant_driver.should_receive(:up)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    .with(cmd_timeout_in_seconds: 7200, environment: {})
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                  vagrant_driver.should_receive(:up).with({ :cmd_timeout_in_seconds => 7200, :environment => {} })
         
     | 
| 
       11 
     | 
    
         
            -
                  
         
     | 
| 
       12 
12 
     | 
    
         
             
                  task = rake['vagrant_up']
         
     | 
| 
       13 
     | 
    
         
            -
                  task.invoke 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                  task.invoke
         
     | 
| 
       15 
14 
     | 
    
         
             
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       17 
16 
     | 
    
         
             
                it 'should up the box with the specified environment vars' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  environment = { ENV_VAR1: 'val1', ENV_VAR2: 'val2' }
         
     | 
| 
      
 18 
     | 
    
         
            +
                  vagrant_driver.should_receive(:up)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    .with(cmd_timeout_in_seconds: 7200, environment: environment)
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                  environment = { :ENV_VAR1 => 'val1', :ENV_VAR2 => 'val2' }
         
     | 
| 
       20 
     | 
    
         
            -
                  vagrant_driver.should_receive(:up).with({ :cmd_timeout_in_seconds => 7200, :environment => environment })
         
     | 
| 
       21 
     | 
    
         
            -
                  
         
     | 
| 
       22 
21 
     | 
    
         
             
                  task = rake['vagrant_up']
         
     | 
| 
       23 
22 
     | 
    
         
             
                  subject.environment = environment
         
     | 
| 
       24 
     | 
    
         
            -
                  task.invoke 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
                  task.invoke
         
     | 
| 
       26 
24 
     | 
    
         
             
                end
         
     | 
| 
       27 
25 
     | 
    
         
             
              end
         
     | 
| 
       28 
     | 
    
         
            -
              
         
     | 
| 
       29 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,8 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'daptiv-chef-ci/virtualbox_driver'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'daptiv-chef-ci/logger'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            describe DaptivChefCI::VirtualBoxDriver, : 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DaptivChefCI::VirtualBoxDriver, unit: true do
         
     | 
| 
       6 
5 
     | 
    
         
             
              describe 'cleanup_vms' do
         
     | 
| 
       7 
6 
     | 
    
         
             
                it 'should poweroff and unregister all machines with a matching name' do
         
     | 
| 
       8 
7 
     | 
    
         
             
                  boxes = [
         
     | 
| 
         @@ -10,22 +9,28 @@ describe DaptivChefCI::VirtualBoxDriver, :unit => true do 
     | 
|
| 
       10 
9 
     | 
    
         
             
                    '"aspnet_1379346156" {7bb1bbce-c6cc-47a2-9c51-57ede42e02b5}',
         
     | 
| 
       11 
10 
     | 
    
         
             
                    '"python_1372120178" {c1937a1c-c6c4-4777-88d0-dfa9066fb156}'
         
     | 
| 
       12 
11 
     | 
    
         
             
                  ]
         
     | 
| 
       13 
     | 
    
         
            -
                  @shell = mock 
     | 
| 
      
 12 
     | 
    
         
            +
                  @shell = mock
         
     | 
| 
       14 
13 
     | 
    
         
             
                  @vbox = DaptivChefCI::VirtualBoxDriver.new(@shell)
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  @shell.should_receive(:exec_cmd) 
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  @shell.should_receive(:exec_cmd) 
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  @shell.should_receive(:exec_cmd) 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  @shell.should_receive(:exec_cmd) 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    .with('vboxmanage list runningvms').and_return(boxes)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    .with('vboxmanage controlvm "aspnet_1372120179" poweroff').once
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    .with('vboxmanage unregistervm "aspnet_1372120179"').once
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    .with('vboxmanage controlvm "aspnet_1379346156" poweroff').once
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    .with('vboxmanage unregistervm "aspnet_1379346156"').once
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    .with('vboxmanage controlvm "python_1372120178" poweroff').never
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @shell.should_receive(:exec_cmd)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    .with('vboxmanage unregistervm "python_1372120178"').never
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       27 
33 
     | 
    
         
             
                  @vbox.cleanup_vms('aspnet')
         
     | 
| 
       28 
34 
     | 
    
         
             
                end
         
     | 
| 
       29 
35 
     | 
    
         
             
              end
         
     | 
| 
       30 
     | 
    
         
            -
              
         
     | 
| 
       31 
36 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,17 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'daptiv-chef-ci/raketask_helper'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            shared_context  
     | 
| 
       5 
     | 
    
         
            -
              let(:rake)           { create_rake_application 
     | 
| 
       6 
     | 
    
         
            -
              let(:vagrant_driver) { stub 
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            shared_context 'rake' do
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:rake)           { create_rake_application }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:vagrant_driver) { stub }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       8 
8 
     | 
    
         
             
              # let the errors bubble up normally, don't exit the app
         
     | 
| 
       9 
9 
     | 
    
         
             
              before { DaptivChefCI::RakeTaskHelpers.exit_on_failure = false }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       11 
11 
     | 
    
         
             
              def create_rake_application
         
     | 
| 
       12 
12 
     | 
    
         
             
                Rake.application = Rake::Application.new
         
     | 
| 
       13 
13 
     | 
    
         
             
                subject.vagrant_driver = vagrant_driver
         
     | 
| 
       14 
14 
     | 
    
         
             
                Rake::Task.define_task(subject)
         
     | 
| 
       15 
15 
     | 
    
         
             
                Rake.application
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: daptiv-chef-ci
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Shawn Neal
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-02-18 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: log4r
         
     | 
| 
         @@ -30,14 +30,28 @@ dependencies: 
     | 
|
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
31 
     | 
    
         
             
                - - ~>
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: 1. 
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '1.2'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
38 
     | 
    
         
             
                - - ~>
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: 1. 
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '1.2'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: versionomy
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: 0.4.4
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: 0.4.4
         
     | 
| 
       41 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
56 
     | 
    
         
             
              name: rake
         
     | 
| 
       43 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -103,22 +117,20 @@ extra_rdoc_files: [] 
     | 
|
| 
       103 
117 
     | 
    
         
             
            files:
         
     | 
| 
       104 
118 
     | 
    
         
             
            - daptiv-chef-ci.gemspec
         
     | 
| 
       105 
119 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       106 
     | 
    
         
            -
            - lib/daptiv-chef-ci/ 
     | 
| 
      
 120 
     | 
    
         
            +
            - lib/daptiv-chef-ci/clone_environment_task.rb
         
     | 
| 
       107 
121 
     | 
    
         
             
            - lib/daptiv-chef-ci/logger.rb
         
     | 
| 
       108 
122 
     | 
    
         
             
            - lib/daptiv-chef-ci/raketask_helper.rb
         
     | 
| 
       109 
123 
     | 
    
         
             
            - lib/daptiv-chef-ci/shell.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - lib/daptiv-chef-ci/upload_cookbook_task.rb
         
     | 
| 
       110 
125 
     | 
    
         
             
            - lib/daptiv-chef-ci/vagrant_destroy_task.rb
         
     | 
| 
       111 
126 
     | 
    
         
             
            - lib/daptiv-chef-ci/vagrant_driver.rb
         
     | 
| 
       112 
127 
     | 
    
         
             
            - lib/daptiv-chef-ci/vagrant_provision_task.rb
         
     | 
| 
       113 
128 
     | 
    
         
             
            - lib/daptiv-chef-ci/vagrant_task.rb
         
     | 
| 
       114 
129 
     | 
    
         
             
            - lib/daptiv-chef-ci/vagrant_up_task.rb
         
     | 
| 
       115 
     | 
    
         
            -
            - lib/daptiv-chef-ci/ 
     | 
| 
      
 130 
     | 
    
         
            +
            - lib/daptiv-chef-ci/version_cookbook_task.rb
         
     | 
| 
       116 
131 
     | 
    
         
             
            - lib/daptiv-chef-ci/virtualbox_driver.rb
         
     | 
| 
       117 
     | 
    
         
            -
            - lib/daptiv-chef-ci/vmware_basebox_builder.rb
         
     | 
| 
       118 
     | 
    
         
            -
            - pkg/daptiv-chef-ci-0.0.14.gem
         
     | 
| 
       119 
132 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       120 
133 
     | 
    
         
             
            - README.md
         
     | 
| 
       121 
     | 
    
         
            -
            - spec/daptiv-chef-ci/basebox_builder_factory_spec.rb
         
     | 
| 
       122 
134 
     | 
    
         
             
            - spec/daptiv-chef-ci/logger_spec.rb
         
     | 
| 
       123 
135 
     | 
    
         
             
            - spec/daptiv-chef-ci/shell_spec.rb
         
     | 
| 
       124 
136 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_destroy_task_spec.rb
         
     | 
| 
         @@ -126,9 +138,7 @@ files: 
     | 
|
| 
       126 
138 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_provision_task_spec.rb
         
     | 
| 
       127 
139 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_task_spec.rb
         
     | 
| 
       128 
140 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_up_task_spec.rb
         
     | 
| 
       129 
     | 
    
         
            -
            - spec/daptiv-chef-ci/virtualbox_basebox_builder_spec.rb
         
     | 
| 
       130 
141 
     | 
    
         
             
            - spec/daptiv-chef-ci/virtualbox_driver_spec.rb
         
     | 
| 
       131 
     | 
    
         
            -
            - spec/daptiv-chef-ci/vmware_basebox_builder_spec.rb
         
     | 
| 
       132 
142 
     | 
    
         
             
            - spec/shared_contexts/rake.rb
         
     | 
| 
       133 
143 
     | 
    
         
             
            - .gitignore
         
     | 
| 
       134 
144 
     | 
    
         
             
            homepage: ''
         
     | 
| 
         @@ -155,7 +165,6 @@ signing_key: 
     | 
|
| 
       155 
165 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       156 
166 
     | 
    
         
             
            summary: A small gem to reduce Rake duplication
         
     | 
| 
       157 
167 
     | 
    
         
             
            test_files:
         
     | 
| 
       158 
     | 
    
         
            -
            - spec/daptiv-chef-ci/basebox_builder_factory_spec.rb
         
     | 
| 
       159 
168 
     | 
    
         
             
            - spec/daptiv-chef-ci/logger_spec.rb
         
     | 
| 
       160 
169 
     | 
    
         
             
            - spec/daptiv-chef-ci/shell_spec.rb
         
     | 
| 
       161 
170 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_destroy_task_spec.rb
         
     | 
| 
         @@ -163,7 +172,5 @@ test_files: 
     | 
|
| 
       163 
172 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_provision_task_spec.rb
         
     | 
| 
       164 
173 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_task_spec.rb
         
     | 
| 
       165 
174 
     | 
    
         
             
            - spec/daptiv-chef-ci/vagrant_up_task_spec.rb
         
     | 
| 
       166 
     | 
    
         
            -
            - spec/daptiv-chef-ci/virtualbox_basebox_builder_spec.rb
         
     | 
| 
       167 
175 
     | 
    
         
             
            - spec/daptiv-chef-ci/virtualbox_driver_spec.rb
         
     | 
| 
       168 
     | 
    
         
            -
            - spec/daptiv-chef-ci/vmware_basebox_builder_spec.rb
         
     | 
| 
       169 
176 
     | 
    
         
             
            - spec/shared_contexts/rake.rb
         
     | 
| 
         @@ -1,19 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'log4r'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative 'shell'
         
     | 
| 
       3 
     | 
    
         
            -
            require_relative 'vmware_basebox_builder'
         
     | 
| 
       4 
     | 
    
         
            -
            require_relative 'virtualbox_basebox_builder'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            module DaptivChefCI
         
     | 
| 
       7 
     | 
    
         
            -
              
         
     | 
| 
       8 
     | 
    
         
            -
              # Abstract factory to produce base box builder instances based off the specified provider
         
     | 
| 
       9 
     | 
    
         
            -
              class BaseBoxBuilderFactory
         
     | 
| 
       10 
     | 
    
         
            -
                
         
     | 
| 
       11 
     | 
    
         
            -
                # Creates a new base box builder instance
         
     | 
| 
       12 
     | 
    
         
            -
                def create(shell, provider, base_dir)
         
     | 
| 
       13 
     | 
    
         
            -
                  provider == :vmware_fusion ?
         
     | 
| 
       14 
     | 
    
         
            -
                    DaptivChefCI::VMwareBaseBoxBuilder.new(base_dir) :
         
     | 
| 
       15 
     | 
    
         
            -
                    DaptivChefCI::VirtualBoxBaseBoxBuilder.new(base_dir, shell)
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
                
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,33 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'log4r'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'fileutils'
         
     | 
| 
       3 
     | 
    
         
            -
            require_relative 'shell'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            module DaptivChefCI
         
     | 
| 
       6 
     | 
    
         
            -
              
         
     | 
| 
       7 
     | 
    
         
            -
              # This class builds VBox Vagrant boxes
         
     | 
| 
       8 
     | 
    
         
            -
              class VirtualBoxBaseBoxBuilder
         
     | 
| 
       9 
     | 
    
         
            -
                
         
     | 
| 
       10 
     | 
    
         
            -
                # Creates a new box builder instance
         
     | 
| 
       11 
     | 
    
         
            -
                #
         
     | 
| 
       12 
     | 
    
         
            -
                # @param [String] The full path to the directory where the Vagrantfile exists
         
     | 
| 
       13 
     | 
    
         
            -
                # of the box we want to package, i.e. /Users/admin/src/dotnetframework
         
     | 
| 
       14 
     | 
    
         
            -
                # @param [Shell] A shell instance
         
     | 
| 
       15 
     | 
    
         
            -
                def initialize(base_dir, shell)
         
     | 
| 
       16 
     | 
    
         
            -
                  @shell = shell
         
     | 
| 
       17 
     | 
    
         
            -
                  @base_dir = base_dir
         
     | 
| 
       18 
     | 
    
         
            -
                  @logger = Log4r::Logger.new("daptiv_chef_ci::vmware_base_box_builder")
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
                
         
     | 
| 
       21 
     | 
    
         
            -
                # Packages a VBox Vagrant box. This can take 15 minutes or so.
         
     | 
| 
       22 
     | 
    
         
            -
                #
         
     | 
| 
       23 
     | 
    
         
            -
                # @param [String] base box file name, i.e. 'windows-server-2008.box'
         
     | 
| 
       24 
     | 
    
         
            -
                def build(box_file)
         
     | 
| 
       25 
     | 
    
         
            -
                  Dir.chdir(@base_dir) {
         
     | 
| 
       26 
     | 
    
         
            -
                    @logger.info("Packaging box #{box_file}")
         
     | 
| 
       27 
     | 
    
         
            -
                    FileUtils.rm(box_file) if File.exists?(box_file)
         
     | 
| 
       28 
     | 
    
         
            -
                    @shell.exec_cmd("vagrant package --output #{box_file}", 3600)
         
     | 
| 
       29 
     | 
    
         
            -
                  }
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
                
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
       33 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,103 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'log4r'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'fileutils'
         
     | 
| 
       3 
     | 
    
         
            -
            require_relative 'shell'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            module DaptivChefCI
         
     | 
| 
       6 
     | 
    
         
            -
              
         
     | 
| 
       7 
     | 
    
         
            -
              # This class builds VMware Fusion 6 Vagrant boxes on OS X
         
     | 
| 
       8 
     | 
    
         
            -
              #
         
     | 
| 
       9 
     | 
    
         
            -
              # NOTE - This class makes a lot of assumptions that hopefully won't break until
         
     | 
| 
       10 
     | 
    
         
            -
              # after Vagrant natively supports packaging VMware Fusion boxes.
         
     | 
| 
       11 
     | 
    
         
            -
              class VMwareBaseBoxBuilder
         
     | 
| 
       12 
     | 
    
         
            -
                
         
     | 
| 
       13 
     | 
    
         
            -
                # Creates a new box builder instance
         
     | 
| 
       14 
     | 
    
         
            -
                #
         
     | 
| 
       15 
     | 
    
         
            -
                # @param [String] The full path to the directory where the Vagrantfile exists
         
     | 
| 
       16 
     | 
    
         
            -
                # of the box we want to package, i.e. /Users/admin/src/dotnetframework
         
     | 
| 
       17 
     | 
    
         
            -
                def initialize(base_dir)
         
     | 
| 
       18 
     | 
    
         
            -
                  @base_dir = base_dir
         
     | 
| 
       19 
     | 
    
         
            -
                  @logger = Log4r::Logger.new("daptiv_chef_ci::vmware_base_box_builder")
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
                
         
     | 
| 
       22 
     | 
    
         
            -
                # Packages a VMware Fusion Vagrant box. This can take 15 minutes or so.
         
     | 
| 
       23 
     | 
    
         
            -
                #
         
     | 
| 
       24 
     | 
    
         
            -
                # @param [String] base box file name, i.e. 'windows-server-2008.box'
         
     | 
| 
       25 
     | 
    
         
            -
                def build(box_file)
         
     | 
| 
       26 
     | 
    
         
            -
                  # /Users/admin/src/mybox/.vagrant/machines/default/vmware_fusion/0f721388-a327-4ba3-b203-c09f69016b43/
         
     | 
| 
       27 
     | 
    
         
            -
                  box_root_path = "#{@base_dir}/.vagrant/machines/default/vmware_fusion"
         
     | 
| 
       28 
     | 
    
         
            -
                  
         
     | 
| 
       29 
     | 
    
         
            -
                  sub_dir = Dir["#{box_root_path}/*/"]
         
     | 
| 
       30 
     | 
    
         
            -
                    .map { |d| File.basename(d) }
         
     | 
| 
       31 
     | 
    
         
            -
                    .find { |d| d =~ /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/ }
         
     | 
| 
       32 
     | 
    
         
            -
                    
         
     | 
| 
       33 
     | 
    
         
            -
                  box_path = "#{box_root_path}/#{sub_dir}"
         
     | 
| 
       34 
     | 
    
         
            -
                  @logger.debug("box_path: #{box_path}")
         
     | 
| 
       35 
     | 
    
         
            -
                  
         
     | 
| 
       36 
     | 
    
         
            -
                  build_box(box_path, box_file)
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
                
         
     | 
| 
       39 
     | 
    
         
            -
                
         
     | 
| 
       40 
     | 
    
         
            -
                protected
         
     | 
| 
       41 
     | 
    
         
            -
                
         
     | 
| 
       42 
     | 
    
         
            -
                def build_box(box_path, box_file)
         
     | 
| 
       43 
     | 
    
         
            -
                  tar_list_path = "#{box_path}/boxfilelist.txt"
         
     | 
| 
       44 
     | 
    
         
            -
                  completed_box_path = "#{@base_dir}/#{box_file}"
         
     | 
| 
       45 
     | 
    
         
            -
                  
         
     | 
| 
       46 
     | 
    
         
            -
                  @logger.debug("tar_list_path: #{tar_list_path}")
         
     | 
| 
       47 
     | 
    
         
            -
                  @logger.debug("completed_box_path: #{completed_box_path}")
         
     | 
| 
       48 
     | 
    
         
            -
                  
         
     | 
| 
       49 
     | 
    
         
            -
                  Dir.chdir(box_path) {
         
     | 
| 
       50 
     | 
    
         
            -
                    vmdk_file = File.expand_path(Dir.glob("*.vmdk").first())
         
     | 
| 
       51 
     | 
    
         
            -
              
         
     | 
| 
       52 
     | 
    
         
            -
                    args = [vdiskmanager_path]
         
     | 
| 
       53 
     | 
    
         
            -
                    args << '-d'
         
     | 
| 
       54 
     | 
    
         
            -
                    args << vmdk_file
         
     | 
| 
       55 
     | 
    
         
            -
                    @logger.info("Defragging #{vmdk_file}")
         
     | 
| 
       56 
     | 
    
         
            -
                    system(*args)
         
     | 
| 
       57 
     | 
    
         
            -
              
         
     | 
| 
       58 
     | 
    
         
            -
                    args = [vdiskmanager_path]
         
     | 
| 
       59 
     | 
    
         
            -
                    args << '-k'
         
     | 
| 
       60 
     | 
    
         
            -
                    args << vmdk_file
         
     | 
| 
       61 
     | 
    
         
            -
                    @logger.info("Shrinking #{vmdk_file}")
         
     | 
| 
       62 
     | 
    
         
            -
                    system(*args)
         
     | 
| 
       63 
     | 
    
         
            -
                    
         
     | 
| 
       64 
     | 
    
         
            -
                    create_json_manifest(box_path)
         
     | 
| 
       65 
     | 
    
         
            -
                    create_tar_manifest(tar_list_path)
         
     | 
| 
       66 
     | 
    
         
            -
                    
         
     | 
| 
       67 
     | 
    
         
            -
                    @logger.info("Packaging box #{box_file}")
         
     | 
| 
       68 
     | 
    
         
            -
                    tar_cmd = "tar -czvf #{box_file} -T #{tar_list_path}"
         
     | 
| 
       69 
     | 
    
         
            -
                    %x[#{tar_cmd}]
         
     | 
| 
       70 
     | 
    
         
            -
                    FileUtils.rm(completed_box_path) if File.exists?(completed_box_path)
         
     | 
| 
       71 
     | 
    
         
            -
                    FileUtils.mv(box_file, completed_box_path)
         
     | 
| 
       72 
     | 
    
         
            -
                  }
         
     | 
| 
       73 
     | 
    
         
            -
             
         
     | 
| 
       74 
     | 
    
         
            -
                  @logger.info("Done creating box #{completed_box_path}")
         
     | 
| 
       75 
     | 
    
         
            -
                end
         
     | 
| 
       76 
     | 
    
         
            -
                
         
     | 
| 
       77 
     | 
    
         
            -
                def create_tar_manifest(tar_list_path)
         
     | 
| 
       78 
     | 
    
         
            -
                  @logger.debug("Creating manifest #{tar_list_path}")
         
     | 
| 
       79 
     | 
    
         
            -
                  
         
     | 
| 
       80 
     | 
    
         
            -
                  files = Dir.glob("*.{vmdk,nvram,plist,vmsd,vmx,vmxf,json}").join("\n")
         
     | 
| 
       81 
     | 
    
         
            -
                  @logger.debug("Found the following files to pack: #{files}")
         
     | 
| 
       82 
     | 
    
         
            -
                  
         
     | 
| 
       83 
     | 
    
         
            -
                  FileUtils.rm(tar_list_path) if File.exists?(tar_list_path)
         
     | 
| 
       84 
     | 
    
         
            -
                  IO.write(tar_list_path, files)
         
     | 
| 
       85 
     | 
    
         
            -
                end
         
     | 
| 
       86 
     | 
    
         
            -
                
         
     | 
| 
       87 
     | 
    
         
            -
                def create_json_manifest(box_path)
         
     | 
| 
       88 
     | 
    
         
            -
                  json_manifest_path = File.join(box_path, "metadata.json")
         
     | 
| 
       89 
     | 
    
         
            -
                  FileUtils.rm(json_manifest_path) if File.exists?(json_manifest_path)
         
     | 
| 
       90 
     | 
    
         
            -
                  manifest = <<-EOH
         
     | 
| 
       91 
     | 
    
         
            -
            {
         
     | 
| 
       92 
     | 
    
         
            -
                "provider":"vmware_fusion"
         
     | 
| 
       93 
     | 
    
         
            -
            }
         
     | 
| 
       94 
     | 
    
         
            -
                  EOH
         
     | 
| 
       95 
     | 
    
         
            -
                  IO.write(json_manifest_path, manifest)
         
     | 
| 
       96 
     | 
    
         
            -
                end
         
     | 
| 
       97 
     | 
    
         
            -
                
         
     | 
| 
       98 
     | 
    
         
            -
                def vdiskmanager_path
         
     | 
| 
       99 
     | 
    
         
            -
                  '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager'
         
     | 
| 
       100 
     | 
    
         
            -
                end
         
     | 
| 
       101 
     | 
    
         
            -
                
         
     | 
| 
       102 
     | 
    
         
            -
              end
         
     | 
| 
       103 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'daptiv-chef-ci/basebox_builder_factory'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'daptiv-chef-ci/virtualbox_basebox_builder'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'daptiv-chef-ci/vmware_basebox_builder'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe DaptivChefCI::BaseBoxBuilderFactory, :unit => true do
         
     | 
| 
       6 
     | 
    
         
            -
              
         
     | 
| 
       7 
     | 
    
         
            -
              before(:each) do
         
     | 
| 
       8 
     | 
    
         
            -
                @shell = stub()
         
     | 
| 
       9 
     | 
    
         
            -
                @factory = DaptivChefCI::BaseBoxBuilderFactory.new()
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              describe 'create' do
         
     | 
| 
       13 
     | 
    
         
            -
                
         
     | 
| 
       14 
     | 
    
         
            -
                it 'should create VMware builder when provider is vmware_fusion' do
         
     | 
| 
       15 
     | 
    
         
            -
                  builder = @factory.create(@shell, :vmware_fusion, Dir.pwd)
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(builder).to be_an_instance_of(DaptivChefCI::VMwareBaseBoxBuilder)
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
                
         
     | 
| 
       19 
     | 
    
         
            -
                it 'should create VMware builder when provider is virtualbox' do
         
     | 
| 
       20 
     | 
    
         
            -
                  builder = @factory.create(@shell, :virtualbox, Dir.pwd)
         
     | 
| 
       21 
     | 
    
         
            -
                  expect(builder).to be_an_instance_of(DaptivChefCI::VirtualBoxBaseBoxBuilder)
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
                
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,20 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'daptiv-chef-ci/virtualbox_basebox_builder'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'daptiv-chef-ci/logger'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe DaptivChefCI::VirtualBoxBaseBoxBuilder, :integration => true do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              #Note- This test requires you have
         
     | 
| 
       7 
     | 
    
         
            -
              # 1. the dotnetframework cookbook cloned to ~/src/dotnetframework
         
     | 
| 
       8 
     | 
    
         
            -
              # 2. From ~/src/dotnetframework previously ran: vagrant up
         
     | 
| 
       9 
     | 
    
         
            -
              # 3. vagrant halt
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              describe 'build' do
         
     | 
| 
       12 
     | 
    
         
            -
                it 'should build a VBox Vagrant base box' do
         
     | 
| 
       13 
     | 
    
         
            -
                  base_dir = "#{ENV['HOME']}/src/dotnetframework"
         
     | 
| 
       14 
     | 
    
         
            -
                  builder = DaptivChefCI::VirtualBoxBaseBoxBuilder.new(base_dir, DaptivChefCI::Shell.new())
         
     | 
| 
       15 
     | 
    
         
            -
                  builder.build('dotnettest-vbox.box')
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(File.exists?("#{base_dir}/dotnettest-vbox.box"))
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
              
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,20 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'daptiv-chef-ci/vmware_basebox_builder'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'daptiv-chef-ci/logger'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe DaptivChefCI::VMwareBaseBoxBuilder, :integration => true do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              #Note- This test requires you have
         
     | 
| 
       7 
     | 
    
         
            -
              # 1. the dotnetframework cookbook cloned to ~/src/dotnetframework
         
     | 
| 
       8 
     | 
    
         
            -
              # 2. From ~/src/dotnetframework previously ran: vagrant up --provider vmware_fusion
         
     | 
| 
       9 
     | 
    
         
            -
              # 3. vagrant halt
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              describe 'build' do
         
     | 
| 
       12 
     | 
    
         
            -
                it 'should build a VMware Vagrant base box' do
         
     | 
| 
       13 
     | 
    
         
            -
                  base_dir = "#{ENV['HOME']}/src/dotnetframework"
         
     | 
| 
       14 
     | 
    
         
            -
                  builder = DaptivChefCI::VMwareBaseBoxBuilder.new(base_dir)
         
     | 
| 
       15 
     | 
    
         
            -
                  builder.build('dotnettest-vmware.box')
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(File.exists?("#{base_dir}/dotnettest-vmware.box"))
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
              
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     |