beaker-vmware 1.0.0 → 2.0.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/.github/dependabot.yml +9 -0
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +27 -6
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +266 -0
- data/.simplecov +1 -1
- data/CHANGELOG.md +20 -0
- data/Gemfile +4 -23
- data/Rakefile +26 -125
- data/beaker-vmware.gemspec +20 -21
- data/bin/beaker-vmware +1 -3
- data/lib/beaker/hypervisor/fusion.rb +21 -23
- data/lib/beaker/hypervisor/vsphere.rb +23 -24
- data/lib/beaker/hypervisor/vsphere_helper.rb +78 -81
- data/lib/beaker-vmware/version.rb +1 -1
- data/spec/beaker/hypervisor/fusion_spec.rb +14 -16
- data/spec/beaker/hypervisor/vsphere_helper_spec.rb +120 -124
- data/spec/beaker/hypervisor/vsphere_spec.rb +28 -40
- data/spec/mock_fission.rb +63 -0
- data/spec/mock_vsphere.rb +284 -0
- data/spec/mock_vsphere_helper.rb +167 -0
- data/spec/spec_helper.rb +9 -7
- metadata +77 -32
| @@ -2,162 +2,158 @@ require 'spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            module Beaker
         | 
| 4 4 | 
             
              describe VsphereHelper do
         | 
| 5 | 
            -
                let( | 
| 6 | 
            -
                let( | 
| 7 | 
            -
             | 
| 8 | 
            -
                 | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                 | 
| 19 | 
            -
             | 
| 5 | 
            +
                let(:logger) { double('logger').as_null_object }
         | 
| 6 | 
            +
                let(:vInfo) do
         | 
| 7 | 
            +
                  { server: 'vsphere.labs.net', user: 'vsphere@labs.com', pass: 'supersekritpassword' }
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
                let(:vsphere_helper) { VsphereHelper.new(vInfo.merge({ logger: logger })) }
         | 
| 10 | 
            +
                let(:snaplist)       do
         | 
| 11 | 
            +
                  { 'snap1' => { 'snap1sub1' => nil,
         | 
| 12 | 
            +
                                 'snap1sub2' => nil, },
         | 
| 13 | 
            +
                    'snap2' => nil,
         | 
| 14 | 
            +
                    'snap3' => { 'snap3sub1' => nil,
         | 
| 15 | 
            +
                                 'snap3sub2' => nil,
         | 
| 16 | 
            +
                                 'snap3sub3' => nil, }, }
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                let(:vms) do
         | 
| 19 | 
            +
                  [MockRbVmomiVM.new('mockvm1', snaplist),
         | 
| 20 | 
            +
                   MockRbVmomiVM.new('mockvm2', snaplist),
         | 
| 21 | 
            +
                   MockRbVmomiVM.new('mockvm3', snaplist),]
         | 
| 20 22 | 
             
                end
         | 
| 21 23 |  | 
| 22 | 
            -
                 | 
| 24 | 
            +
                before do
         | 
| 25 | 
            +
                  stub_const('RbVmomi', MockRbVmomi)
         | 
| 26 | 
            +
                end
         | 
| 23 27 |  | 
| 28 | 
            +
                describe '#load_config' do
         | 
| 24 29 | 
             
                  it 'can load a .fog file' do
         | 
| 25 | 
            -
                    allow( | 
| 26 | 
            -
                    allow( | 
| 27 | 
            -
             | 
| 28 | 
            -
                    expect( VsphereHelper.load_config ).to be === vInfo
         | 
| 30 | 
            +
                    allow(File).to receive(:exist?).and_return(true)
         | 
| 31 | 
            +
                    allow(YAML).to receive(:load_file).and_return(fog_file_contents)
         | 
| 29 32 |  | 
| 33 | 
            +
                    expect(VsphereHelper.load_config).to be === vInfo
         | 
| 30 34 | 
             
                  end
         | 
| 31 35 |  | 
| 32 36 | 
             
                  it 'raises an error when the .fog file is missing' do
         | 
| 33 | 
            -
                    allow( | 
| 34 | 
            -
             | 
| 35 | 
            -
                    expect{ VsphereHelper.load_config }.to raise_error( ArgumentError )
         | 
| 37 | 
            +
                    allow(File).to receive(:exist?).and_return(false)
         | 
| 36 38 |  | 
| 39 | 
            +
                    expect { VsphereHelper.load_config }.to raise_error(ArgumentError)
         | 
| 37 40 | 
             
                  end
         | 
| 38 | 
            -
             | 
| 39 41 | 
             
                end
         | 
| 40 42 |  | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
                   expect( vsphere_helper.find_snapshot( mockvm, 'snap2' ) ).to be === mockvm.get_snapshot( 'snap2' )
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                 end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
               end
         | 
| 43 | 
            +
                describe '#find_snapshot' do
         | 
| 44 | 
            +
                  it 'can find a given snapshot name' do
         | 
| 45 | 
            +
                    mockvm = MockRbVmomiVM.new('mockvm', snaplist)
         | 
| 50 46 |  | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
                   expect( vsphere_helper.find_customization( 'name' ) ).to be === true
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                 end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
               end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
               describe "#find_vms" do
         | 
| 61 | 
            -
                 it 'finds the list of vms' do
         | 
| 62 | 
            -
                   connection = vsphere_helper.instance_variable_get( :@connection )
         | 
| 63 | 
            -
                   connection.set_info( vms )
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                   expect( vsphere_helper.find_vms( 'mockvm1' ) ).to be === {vms[0].name => vms[0]}
         | 
| 66 | 
            -
                 end
         | 
| 47 | 
            +
                    expect(vsphere_helper.find_snapshot(mockvm, 'snap2')).to be === mockvm.get_snapshot('snap2')
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 67 50 |  | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 51 | 
            +
                describe '#find_customization' do
         | 
| 52 | 
            +
                  it 'returns the customization spec' do
         | 
| 53 | 
            +
                    expect(vsphere_helper.find_customization('name')).to be === true
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                end
         | 
| 71 56 |  | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 57 | 
            +
                describe '#find_vms' do
         | 
| 58 | 
            +
                  it 'finds the list of vms' do
         | 
| 59 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 60 | 
            +
                    connection.set_info(vms)
         | 
| 74 61 |  | 
| 75 | 
            -
             | 
| 62 | 
            +
                    expect(vsphere_helper.find_vms('mockvm1')).to be === { vms[0].name => vms[0] }
         | 
| 63 | 
            +
                  end
         | 
| 76 64 |  | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
                   dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 81 | 
            -
                   expect(vsphere_helper.find_datastore( dc,'datastorename' ) ).to be === true
         | 
| 82 | 
            -
                 end
         | 
| 65 | 
            +
                  it 'returns {} when no vm is found' do
         | 
| 66 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 67 | 
            +
                    connection.set_info(vms)
         | 
| 83 68 |  | 
| 84 | 
            -
             | 
| 69 | 
            +
                    expect(vsphere_helper.find_vms('novm')).to be === {}
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
                end
         | 
| 85 72 |  | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 73 | 
            +
                describe '#find_datastore' do
         | 
| 74 | 
            +
                  it 'finds the datastore from the connection object' do
         | 
| 75 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 76 | 
            +
                    dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 77 | 
            +
                    expect(vsphere_helper.find_datastore(dc, 'datastorename')).to be === true
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 91 80 |  | 
| 92 | 
            -
             | 
| 81 | 
            +
                describe '#find_folder' do
         | 
| 82 | 
            +
                  it 'can find a folder in the datacenter' do
         | 
| 83 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 84 | 
            +
                    expect(vsphere_helper.find_folder('testdc',
         | 
| 85 | 
            +
                                                      'root')).to be === connection.serviceInstance.find_datacenter('testdc').vmFolder
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                end
         | 
| 93 88 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 89 | 
            +
                describe '#find_pool' do
         | 
| 90 | 
            +
                  it 'can find a pool in a folder in the datacenter' do
         | 
| 91 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 92 | 
            +
                    dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 93 | 
            +
                    dc.hostFolder = MockRbVmomi::VIM::Folder.new
         | 
| 94 | 
            +
                    dc.hostFolder.name = '/root'
         | 
| 100 95 |  | 
| 101 | 
            -
             | 
| 96 | 
            +
                    expect(vsphere_helper.find_pool('testdc',
         | 
| 97 | 
            +
                                                    'root')).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
         | 
| 98 | 
            +
                  end
         | 
| 102 99 |  | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
                   dc.hostFolder.name = "/root"
         | 
| 100 | 
            +
                  it 'can find a pool in a clustercomputeresource in the datacenter' do
         | 
| 101 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 102 | 
            +
                    dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 103 | 
            +
                    dc.hostFolder = MockRbVmomi::VIM::ClusterComputeResource.new
         | 
| 104 | 
            +
                    dc.hostFolder.name = '/root'
         | 
| 109 105 |  | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
                   connection = vsphere_helper.instance_variable_get( :@connection )
         | 
| 114 | 
            -
                   dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 115 | 
            -
                   dc.hostFolder = MockRbVmomi::VIM::ResourcePool.new
         | 
| 116 | 
            -
                   dc.hostFolder.name = "/root"
         | 
| 106 | 
            +
                    expect(vsphere_helper.find_pool('testdc',
         | 
| 107 | 
            +
                                                    'root')).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
         | 
| 108 | 
            +
                  end
         | 
| 117 109 |  | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 110 | 
            +
                  it 'can find a pool in a resourcepool in the datacenter' do
         | 
| 111 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 112 | 
            +
                    dc = connection.serviceInstance.find_datacenter('testdc')
         | 
| 113 | 
            +
                    dc.hostFolder = MockRbVmomi::VIM::ResourcePool.new
         | 
| 114 | 
            +
                    dc.hostFolder.name = '/root'
         | 
| 120 115 |  | 
| 121 | 
            -
             | 
| 116 | 
            +
                    expect(vsphere_helper.find_pool('testdc',
         | 
| 117 | 
            +
                                                    'root')).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                end
         | 
| 122 120 |  | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 121 | 
            +
                describe '#wait_for_tasks' do
         | 
| 122 | 
            +
                  it 'can wait for tasks to error' do
         | 
| 123 | 
            +
                    allow(vsphere_helper).to receive(:sleep).and_return(true)
         | 
| 124 | 
            +
                    vms.each do |vm|
         | 
| 125 | 
            +
                      vm.info.state = 'error'
         | 
| 126 | 
            +
                    end
         | 
| 129 127 |  | 
| 130 | 
            -
             | 
| 131 | 
            -
             | 
| 128 | 
            +
                    expect(vsphere_helper.wait_for_tasks(vms, 0, 5)).to be === vms
         | 
| 129 | 
            +
                  end
         | 
| 132 130 |  | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 135 | 
            -
             | 
| 136 | 
            -
             | 
| 137 | 
            -
             | 
| 131 | 
            +
                  it 'can wait for tasks to succeed' do
         | 
| 132 | 
            +
                    allow(vsphere_helper).to receive(:sleep).and_return(true)
         | 
| 133 | 
            +
                    vms.each do |vm|
         | 
| 134 | 
            +
                      vm.info.state = 'success'
         | 
| 135 | 
            +
                    end
         | 
| 138 136 |  | 
| 139 | 
            -
             | 
| 140 | 
            -
             | 
| 137 | 
            +
                    expect(vsphere_helper.wait_for_tasks(vms, 0, 5)).to be === vms
         | 
| 138 | 
            +
                  end
         | 
| 141 139 |  | 
| 142 | 
            -
             | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
             | 
| 140 | 
            +
                  it 'errors when tasks fail to error/success before timing out' do
         | 
| 141 | 
            +
                    allow(vsphere_helper).to receive(:sleep).and_return(true)
         | 
| 142 | 
            +
                    vms.each do |vm|
         | 
| 143 | 
            +
                      vm.info.state = 'nope'
         | 
| 144 | 
            +
                    end
         | 
| 147 145 |  | 
| 148 | 
            -
             | 
| 149 | 
            -
             | 
| 146 | 
            +
                    expect { vsphere_helper.wait_for_tasks(vms, 0, 5) }.to raise_error
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
                end
         | 
| 150 149 |  | 
| 151 | 
            -
             | 
| 150 | 
            +
                describe '#close' do
         | 
| 151 | 
            +
                  it 'closes the connection' do
         | 
| 152 | 
            +
                    connection = vsphere_helper.instance_variable_get(:@connection)
         | 
| 153 | 
            +
                    expect(connection).to receive(:close).once
         | 
| 152 154 |  | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 156 | 
            -
             | 
| 157 | 
            -
                   
         | 
| 158 | 
            -
                   vsphere_helper.close
         | 
| 159 | 
            -
                 end
         | 
| 160 | 
            -
               end
         | 
| 161 | 
            -
             | 
| 162 | 
            -
             end
         | 
| 155 | 
            +
                    vsphere_helper.close
         | 
| 156 | 
            +
                  end
         | 
| 157 | 
            +
                end
         | 
| 158 | 
            +
              end
         | 
| 163 159 | 
             
            end
         | 
| @@ -2,89 +2,77 @@ require 'spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            module Beaker
         | 
| 4 4 | 
             
              describe Vsphere do
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
                  MockVsphereHelper. | 
| 8 | 
            -
                   | 
| 9 | 
            -
                 stub_const( "VsphereHelper", MockVsphereHelper )
         | 
| 5 | 
            +
                before do
         | 
| 6 | 
            +
                  MockVsphereHelper.set_config(fog_file_contents)
         | 
| 7 | 
            +
                  MockVsphereHelper.set_vms(make_hosts)
         | 
| 8 | 
            +
                  stub_const('VsphereHelper', MockVsphereHelper)
         | 
| 10 9 | 
             
                end
         | 
| 11 10 |  | 
| 12 | 
            -
                describe  | 
| 13 | 
            -
             | 
| 14 | 
            -
                  it 'provisions hosts' do 
         | 
| 11 | 
            +
                describe '#provision' do
         | 
| 12 | 
            +
                  it 'provisions hosts' do
         | 
| 15 13 | 
             
                    MockVsphereHelper.powerOff
         | 
| 16 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 14 | 
            +
                    vsphere = Beaker::Vsphere.new(make_hosts, make_opts)
         | 
| 17 15 |  | 
| 18 16 | 
             
                    vsphere.provision
         | 
| 19 17 |  | 
| 20 | 
            -
                    hosts = | 
| 18 | 
            +
                    hosts = vsphere.instance_variable_get(:@hosts)
         | 
| 21 19 | 
             
                    hosts.each do |host|
         | 
| 22 | 
            -
                      expect( | 
| 20 | 
            +
                      expect(MockVsphereHelper.find_vm(host.name).powerState) == 'poweredOn'
         | 
| 23 21 | 
             
                    end
         | 
| 24 | 
            -
                    
         | 
| 25 22 | 
             
                  end
         | 
| 26 23 |  | 
| 27 24 | 
             
                  it 'raises an error if a vm is missing in Vsphere' do
         | 
| 28 25 | 
             
                    MockVsphereHelper.powerOff
         | 
| 29 | 
            -
                    hosts = make_hosts | 
| 26 | 
            +
                    hosts = make_hosts
         | 
| 30 27 | 
             
                    hosts[0][:vmname] = 'unknown'
         | 
| 31 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 32 | 
            -
             | 
| 33 | 
            -
                    expect{ vsphere.provision }.to raise_error
         | 
| 28 | 
            +
                    vsphere = Beaker::Vsphere.new(hosts, make_opts)
         | 
| 34 29 |  | 
| 30 | 
            +
                    expect { vsphere.provision }.to raise_error
         | 
| 35 31 | 
             
                  end
         | 
| 36 32 |  | 
| 37 33 | 
             
                  it 'raises an error if a vm does not have a given snapshot name' do
         | 
| 38 34 | 
             
                    MockVsphereHelper.powerOff
         | 
| 39 | 
            -
                    hosts = make_hosts | 
| 40 | 
            -
                    hosts[0][ | 
| 41 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 42 | 
            -
             | 
| 43 | 
            -
                    expect{ vsphere.provision }.to raise_error
         | 
| 35 | 
            +
                    hosts = make_hosts
         | 
| 36 | 
            +
                    hosts[0]['snapshot'] = 'unknown'
         | 
| 37 | 
            +
                    vsphere = Beaker::Vsphere.new(hosts, make_opts)
         | 
| 44 38 |  | 
| 39 | 
            +
                    expect { vsphere.provision }.to raise_error
         | 
| 45 40 | 
             
                  end
         | 
| 46 41 |  | 
| 47 42 | 
             
                  it 'provisions hosts if no snapshot is provided' do
         | 
| 48 43 | 
             
                    MockVsphereHelper.powerOff
         | 
| 49 | 
            -
                    hosts = make_hosts | 
| 50 | 
            -
                    hosts[0][ | 
| 51 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 44 | 
            +
                    hosts = make_hosts
         | 
| 45 | 
            +
                    hosts[0]['snapshot'] = nil
         | 
| 46 | 
            +
                    vsphere = Beaker::Vsphere.new(hosts, make_opts)
         | 
| 52 47 |  | 
| 53 48 | 
             
                    vsphere.provision
         | 
| 54 49 |  | 
| 55 50 | 
             
                    hosts.each do |host|
         | 
| 56 | 
            -
                      expect( | 
| 51 | 
            +
                      expect(MockVsphereHelper.find_vm(host.name).powerState) == 'poweredOn'
         | 
| 57 52 | 
             
                    end
         | 
| 58 | 
            -
             | 
| 59 53 | 
             
                  end
         | 
| 60 | 
            -
             | 
| 61 54 | 
             
                end
         | 
| 62 55 |  | 
| 63 | 
            -
                describe  | 
| 64 | 
            -
             | 
| 65 | 
            -
                  it "cleans up" do
         | 
| 56 | 
            +
                describe '#cleanup' do
         | 
| 57 | 
            +
                  it 'cleans up' do
         | 
| 66 58 | 
             
                    MockVsphereHelper.powerOn
         | 
| 67 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 59 | 
            +
                    vsphere = Beaker::Vsphere.new(make_hosts, make_opts)
         | 
| 68 60 | 
             
                    vsphere.cleanup
         | 
| 69 61 |  | 
| 70 | 
            -
                    hosts = | 
| 62 | 
            +
                    hosts = vsphere.instance_variable_get(:@hosts)
         | 
| 71 63 | 
             
                    hosts.each do |host|
         | 
| 72 | 
            -
                      expect( | 
| 64 | 
            +
                      expect(MockVsphereHelper.find_vm(host.name).powerState) == 'poweredOff'
         | 
| 73 65 | 
             
                    end
         | 
| 74 66 | 
             
                  end
         | 
| 75 67 |  | 
| 76 68 | 
             
                  it 'raises an error if a vm is missing in Vsphere' do
         | 
| 77 69 | 
             
                    MockVsphereHelper.powerOn
         | 
| 78 | 
            -
                    hosts = make_hosts | 
| 70 | 
            +
                    hosts = make_hosts
         | 
| 79 71 | 
             
                    hosts[0][:vmname] = 'unknown'
         | 
| 80 | 
            -
                    vsphere = Beaker::Vsphere.new( | 
| 81 | 
            -
             | 
| 82 | 
            -
                    expect{ vsphere.cleanup }.to raise_error
         | 
| 72 | 
            +
                    vsphere = Beaker::Vsphere.new(hosts, make_opts)
         | 
| 83 73 |  | 
| 74 | 
            +
                    expect { vsphere.cleanup }.to raise_error
         | 
| 84 75 | 
             
                  end
         | 
| 85 | 
            -
             | 
| 86 76 | 
             
                end
         | 
| 87 | 
            -
             | 
| 88 77 | 
             
              end
         | 
| 89 | 
            -
             | 
| 90 78 | 
             
            end
         | 
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            class Response
         | 
| 2 | 
            +
              attr_accessor :code, :message, :data
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              def initialize(code = 0, message = '', data = nil)
         | 
| 5 | 
            +
                @code = code
         | 
| 6 | 
            +
                @message = message
         | 
| 7 | 
            +
                @data = data
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            class MockFissionVM
         | 
| 12 | 
            +
              attr_accessor :name
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              @@snaps = []
         | 
| 15 | 
            +
              def initialize(name)
         | 
| 16 | 
            +
                @name = name
         | 
| 17 | 
            +
                @running = true
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def self.set_snapshots(snaps)
         | 
| 21 | 
            +
                @@snaps = snaps
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def snapshots
         | 
| 25 | 
            +
                Response.new(0, '', @@snaps)
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def revert_to_snapshot(_name)
         | 
| 29 | 
            +
                @running = false
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def running?
         | 
| 33 | 
            +
                Response.new(0, '', @running)
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def start(_opt)
         | 
| 37 | 
            +
                @running = true
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def exists?
         | 
| 41 | 
            +
                true
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            class MockFission
         | 
| 46 | 
            +
              @@vms = []
         | 
| 47 | 
            +
              def self.presets(hosts)
         | 
| 48 | 
            +
                snaps = []
         | 
| 49 | 
            +
                hosts.each do |host|
         | 
| 50 | 
            +
                  @@vms << MockFissionVM.new(host.name)
         | 
| 51 | 
            +
                  snaps << host[:snapshot]
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
                MockFissionVM.set_snapshots(snaps)
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              def self.all
         | 
| 57 | 
            +
                Response.new(0, '', @@vms)
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def self.new(name)
         | 
| 61 | 
            +
                MockFissionVM.new(name)
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
            end
         |