spec/vcloud/launcher/vm_orchestrator_spec.rb in vcloud-launcher-0.0.5 vs spec/vcloud/launcher/vm_orchestrator_spec.rb in vcloud-launcher-0.1.0

- old
+ new

@@ -1,80 +1,82 @@ require 'spec_helper' -module Vcloud - module Launcher - describe VmOrchestrator do +describe Vcloud::Launcher::VmOrchestrator do - before(:each) do - @vm_id = "vm-12345678-1234-1234-1234-123456712312" - end + before(:each) do + @vm_id = "vm-12345678-1234-1234-1234-123456712312" + end - it "orchestrate customization" do - vm_config = { - :hardware_config => { - :memory => 4096, - :cpu => 2 - }, - :metadata => { - :shutdown => true - }, - :extra_disks => [ - {:size => '1024', :name => 'Hard disk 2', :fs_file => 'mysql', :fs_mntops => 'mysql-something'}, - {:size => '2048', :name => 'Hard disk 3', :fs_file => 'solr', :fs_mntops => 'solr-something'} - ], + let(:fog_vm) { + { :href => "/#{@vm_id}" } + } + let(:vapp) { + double(:vapp, :name => 'web-app1') + } + subject { + Vcloud::Launcher::VmOrchestrator.new(fog_vm, vapp) + } - :network_connections => [ - {:name => "network1", :ip_address => "198.12.1.21"}, - ], - :bootstrap => { - :script_path => '/tmp/boostrap.erb', - :vars => { - :message => 'hello world' - } - }, - :storage_profile => { - :name => 'basic-storage', - :href => 'https://vcloud.example.net/api/vdcStorageProfile/000aea1e-a5e9-4dd1-a028-40db8c98d237' + it "orchestrate customization" do + vm_config = { + :hardware_config => { + :memory => 4096, + :cpu => 2 + }, + :metadata => { + :shutdown => true + }, + :extra_disks => [ + {:size => '1024', :name => 'Hard disk 2', :fs_file => 'mysql', :fs_mntops => 'mysql-something'}, + {:size => '2048', :name => 'Hard disk 3', :fs_file => 'solr', :fs_mntops => 'solr-something'} + ], + + :network_connections => [ + {:name => "network1", :ip_address => "198.12.1.21"}, + ], + :bootstrap => { + :script_path => '/tmp/boostrap.erb', + :vars => { + :message => 'hello world' } + }, + :storage_profile => { + :name => 'basic-storage', + :href => 'https://vcloud.example.net/api/vdcStorageProfile/000aea1e-a5e9-4dd1-a028-40db8c98d237' } - fog_vm = { :href => "/#{@vm_id}" } - vapp = double(:vapp, :name => 'web-app1') - vm = double(:vm, :id => @vm_id, :vapp_name => 'web-app1', :vapp => vapp, :name => 'test-vm-1') - Core::Vm.should_receive(:new).with(@vm_id, vapp).and_return(vm) + } + vm = double(:vm, :id => @vm_id, :vapp_name => 'web-app1', :vapp => vapp, :name => 'test-vm-1') + Vcloud::Core::Vm.should_receive(:new).with(@vm_id, vapp).and_return(vm) - vm.should_receive(:update_name).with('web-app1') - vm.should_receive(:configure_network_interfaces).with(vm_config[:network_connections]) - vm.should_receive(:update_storage_profile).with(vm_config[:storage_profile]) - vm.should_receive(:update_cpu_count).with(2) - vm.should_receive(:update_memory_size_in_mb).with(4096) - vm.should_receive(:add_extra_disks).with(vm_config[:extra_disks]) - vm.should_receive(:update_metadata).with(vm_config[:metadata]) - vm.should_receive(:configure_guest_customization_section).with('web-app1', vm_config[:bootstrap], vm_config[:extra_disks]) + vm.should_receive(:update_name).with('web-app1') + vm.should_receive(:configure_network_interfaces).with(vm_config[:network_connections]) + vm.should_receive(:update_storage_profile).with(vm_config[:storage_profile]) + vm.should_receive(:update_cpu_count).with(2) + vm.should_receive(:update_memory_size_in_mb).with(4096) + vm.should_receive(:add_extra_disks).with(vm_config[:extra_disks]) + vm.should_receive(:update_metadata).with(vm_config[:metadata]) + vm.should_receive(:configure_guest_customization_section).with('web-app1', vm_config[:bootstrap], vm_config[:extra_disks]) - VmOrchestrator.new(fog_vm, vapp).customize(vm_config) - end + subject.customize(vm_config) + end - it "if a storage_profile is not specified, customize continues with other customizations" do - fog_vm = { :href => "/#{@vm_id}" } - vapp = double(:vapp, :name => 'web-app1') - vm = double(:vm, :id => @vm_id, :vapp_name => 'web-app1', :vapp => vapp, :name => 'test-vm-1') - vm_config = { - :metadata => {:shutdown => true}, - :network_connections => [{:name => "network1", :ip_address => "198.12.1.21"}], - :extra_disks => [ - {:size => '1024', :name => 'Hard disk 2', :fs_file => 'mysql', :fs_mntops => 'mysql-something'}, - {:size => '2048', :name => 'Hard disk 3', :fs_file => 'solr', :fs_mntops => 'solr-something'} - ] - } - Core::Vm.should_receive(:new).with(@vm_id, vapp).and_return(vm) - vm.should_receive(:update_metadata).with(:shutdown => true) - vm.should_receive(:update_name).with('web-app1') - vm.should_receive(:add_extra_disks).with(vm_config[:extra_disks]) - vm.should_receive(:configure_network_interfaces).with(vm_config[:network_connections]) - vm.should_receive(:configure_guest_customization_section).with('web-app1', vm_config[:bootstrap], vm_config[:extra_disks]) + it "if a storage_profile is not specified, customize continues with other customizations" do + vm = double(:vm, :id => @vm_id, :vapp_name => 'web-app1', :vapp => vapp, :name => 'test-vm-1') + vm_config = { + :metadata => {:shutdown => true}, + :network_connections => [{:name => "network1", :ip_address => "198.12.1.21"}], + :extra_disks => [ + {:size => '1024', :name => 'Hard disk 2', :fs_file => 'mysql', :fs_mntops => 'mysql-something'}, + {:size => '2048', :name => 'Hard disk 3', :fs_file => 'solr', :fs_mntops => 'solr-something'} + ] + } + Vcloud::Core::Vm.should_receive(:new).with(@vm_id, vapp).and_return(vm) + vm.should_receive(:update_metadata).with(:shutdown => true) + vm.should_receive(:update_name).with('web-app1') + vm.should_receive(:add_extra_disks).with(vm_config[:extra_disks]) + vm.should_receive(:configure_network_interfaces).with(vm_config[:network_connections]) + vm.should_receive(:configure_guest_customization_section).with('web-app1', vm_config[:bootstrap], vm_config[:extra_disks]) - VmOrchestrator.new(fog_vm, vapp).customize(vm_config) + subject.customize(vm_config) - end - end end end