vagrant_abiquo 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e84c1cada8bf45ee196f4eff05307c2dbf2da31a
4
- data.tar.gz: b4a7b2e211ac6b4e481b1d274e8f39a811f7a62e
3
+ metadata.gz: 3d52459a5932c1be97b7e5d6197e5735f1b432d6
4
+ data.tar.gz: 8acfc9a0a156761871e17abecd1b459efe643e1e
5
5
  SHA512:
6
- metadata.gz: 2e93e8bf38d815fc94c4ed68669c7db0a9b48b2b397c02ed7d4e88512eb8efa4d1acf39e9dcac099cb623e58e3591693b6fe6cdc29f2c7c99d863028ef081ccf
7
- data.tar.gz: 573c0fefd59d85790c4606511d3636760e9c2b050bbbd08f6720c7ca06c90ea89d8b2d82648e4b48fceb9eca511093205edd236a392f7ee9a0b79dfbb3ddaff8
6
+ metadata.gz: 3272327a7463373c99f6f40bc97e5055d7a4ded18a3faa51ca747613003bca49e8d1ee4a5e5d5d32d012f43cd16257249e68238b27256ecd64fb1c1b6118c9df
7
+ data.tar.gz: 9452f08c3feb41347fca22b822b88dd07bbf0d0313345e0dd936e384692e3c17e1c284c1ff3d968e9a5ebca370dccb604b6813ecdab8d57b8f3e631a69d8765c
data/Gemfile.lock CHANGED
@@ -24,7 +24,7 @@ GIT
24
24
  PATH
25
25
  remote: .
26
26
  specs:
27
- vagrant_abiquo (0.0.4)
27
+ vagrant_abiquo (0.0.5)
28
28
  abiquo-api (~> 0.1.2)
29
29
  log4r
30
30
 
data/Vagrantfile CHANGED
@@ -3,8 +3,10 @@ VAGRANTFILE_API_VERSION = "2"
3
3
  Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
4
4
  config.vm.synced_folder ".", "/vagrant", type: "rsync"
5
5
 
6
- config.vm.define "abiquotesting"
7
-
6
+ (1..10).each do |ind|
7
+ config.vm.define "abiquotesting-#{ind}"
8
+ end
9
+
8
10
  config.vm.provider :abiquo do |provider, override|
9
11
  override.vm.box = 'abiquo'
10
12
  override.vm.box_url = "https://github.com/abiquo/vagrant_abiquo/raw/master/box/abiquo.box"
@@ -20,12 +22,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
20
22
  }
21
23
  }
22
24
  }
23
- #provider.cpu_cores = 2
24
- #provider.ram_mb = 2048
25
- provider.hwprofile = '4gb'
26
- provider.virtualdatacenter = 'VDC'
25
+ provider.cpu_cores = 1
26
+ provider.ram_mb = 512
27
+ #provider.hwprofile = '4gb'
28
+ provider.virtualdatacenter = 'esx'
27
29
  provider.virtualappliance = 'Vagrant Tests'
28
- provider.template = 'CentOS 7.3.1611 x64'
30
+ provider.template = 'Alpine'
29
31
 
30
32
  override.ssh.private_key_path = '~/.ssh/id_rsa'
31
33
  end
@@ -1,5 +1,6 @@
1
1
  require 'vagrant_abiquo/actions/check_state'
2
2
  require 'vagrant_abiquo/actions/create'
3
+ require 'vagrant_abiquo/actions/deploy'
3
4
  require 'vagrant_abiquo/actions/destroy'
4
5
  require 'vagrant_abiquo/actions/power_off'
5
6
  require 'vagrant_abiquo/actions/power_on'
@@ -42,6 +43,11 @@ module VagrantPlugins
42
43
  b.use SyncedFolders
43
44
  when :not_created
44
45
  b.use Create
46
+ b.use Deploy
47
+ b.use Provision
48
+ b.use SyncedFolders
49
+ when :NOT_ALLOCATED
50
+ b.use Deploy
45
51
  b.use Provision
46
52
  b.use SyncedFolders
47
53
  end
@@ -24,7 +24,7 @@ module VagrantPlugins
24
24
 
25
25
  # Check if we have to use hwprofiles
26
26
  lim = vdc.link(:enterprise).get.link(:limits).get.select {|l| l.link(:location).title == vdc.link(:location).title }.first
27
- if lim.enabledHardwareProfiles
27
+ if lim.respond_to? :enabledHardwareProfiles
28
28
  if @machine.provider_config.hwprofile.nil?
29
29
  raise Abiquo::Errors::HWprofileEnabled, vdc: @machine.provider_config.virtualdatacenter
30
30
  end
@@ -47,7 +47,7 @@ module VagrantPlugins
47
47
  vm_definition = {}
48
48
 
49
49
  # Configured CPU and RAM
50
- if lim.enabledHardwareProfiles
50
+ if lim.respond_to? :enabledHardwareProfiles
51
51
  # lookup the hwprofile link
52
52
  hwprofile = vdc.link(:location).get.link(:hardwareprofiles).get
53
53
  .select {|h| h.name == @machine.provider_config.hwprofile }.first
@@ -61,6 +61,7 @@ module VagrantPlugins
61
61
  ram_mb = @machine.provider_config.ram_mb
62
62
  vm_definition['cpu'] = cpu_cores || template.cpuRequired
63
63
  vm_definition['ram'] = ram_mb || template.ramRequired
64
+ vm_definition['links'] = [ tmpl_link ]
64
65
  end
65
66
 
66
67
  vm_definition['label'] = @machine.name
@@ -88,30 +89,7 @@ module VagrantPlugins
88
89
  raise Abiquo::Errors::NetworkError if vm.nil?
89
90
  end
90
91
  vm = vm.link(:edit).get
91
-
92
- # Deploying VM
93
- env[:ui].info I18n.t('vagrant_abiquo.info.deploy')
94
- task = deploy(vm)
95
-
96
- if task.state == 'FINISHED_SUCCESSFULLY'
97
- # Deploy successfully completed
98
- env[:ui].info I18n.t('vagrant_abiquo.info.deploycompleted')
99
-
100
- # Give time to the OS to boot.
101
- retryable(:tries => 20, :sleep => 5) do
102
- next if env[:interrupted]
103
- raise 'not ready' if !@machine.communicate.ready?
104
- end
105
-
106
- # Find its IP
107
- vm = vm.link(:edit).get
108
- ip = vm.link(:nic0).title
109
- env[:ui].info I18n.t('vagrant_abiquo.info.vm_ip', :ip => ip)
110
- @machine.id = vm.url
111
- else
112
- # Deploy failed
113
- env[:ui].error I18n.t('vagrant_abiquo.info.deployfailed')
114
- end
92
+ @machine.id = vm.url
115
93
 
116
94
  @app.call(env)
117
95
  end
@@ -15,7 +15,10 @@ module VagrantPlugins
15
15
  end
16
16
 
17
17
  def call(env)
18
- pconfig = env[:env].vagrantfile.config.finalize![:vm].get_provider_config(:abiquo)
18
+ if env[:env].vagrantfile.config.finalize![:vm].respond_to? :get_provider_config
19
+ pconfig = env[:env].vagrantfile.config.finalize![:vm].get_provider_config(:abiquo)
20
+ return if pconfig.abiquo_connection_data.nil?
21
+ end
19
22
  @client ||= AbiquoAPI.new(pconfig.abiquo_connection_data)
20
23
 
21
24
  @logger.info "Checking vApp '#{pconfig.virtualappliance}'"
@@ -0,0 +1,41 @@
1
+ require 'vagrant_abiquo/helpers/client'
2
+ require 'vagrant_abiquo/helpers/abiquo'
3
+
4
+ module VagrantPlugins
5
+ module Abiquo
6
+ module Actions
7
+ class DeletevApp
8
+ include Helpers::Client
9
+ include Helpers::Abiquo
10
+
11
+ def initialize(app, env)
12
+ @app = app
13
+ @machine = env[:machine]
14
+ @logger = Log4r::Logger.new('vagrant::abiquo::delete_vapp')
15
+ end
16
+
17
+ def call(env)
18
+ if env[:env].vagrantfile.config.finalize![:vm].respond_to? :get_provider_config
19
+ pconfig = env[:env].vagrantfile.config.finalize![:vm].get_provider_config(:abiquo)
20
+ return if pconfig.abiquo_connection_data.nil?
21
+ end
22
+ @client ||= AbiquoAPI.new(pconfig.abiquo_connection_data)
23
+
24
+ @logger.info "Checking vApp '#{pconfig.virtualappliance}'"
25
+
26
+ @logger.info "Looking up VDC '#{pconfig.virtualdatacenter}'"
27
+ vdc = get_vdc(pconfig.virtualdatacenter)
28
+ raise Abiquo::Errors::VDCNotFound, vdc: pconfig.virtualdatacenter if vdc.nil?
29
+
30
+ vapp = get_vapp(vdc, pconfig.virtualappliance)
31
+ if vapp.link(:virtualmachines).get.count == 0
32
+ @logger.info "vApp '#{pconfig.virtualappliance}' is empty, deleting."
33
+ vapp.delete
34
+ end
35
+
36
+ @app.call(env)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,70 @@
1
+ require 'vagrant_abiquo/helpers/client'
2
+ require 'vagrant_abiquo/helpers/abiquo'
3
+
4
+ module VagrantPlugins
5
+ module Abiquo
6
+ module Actions
7
+ class Deploy
8
+ include Helpers::Client
9
+ include Helpers::Abiquo
10
+ include Vagrant::Util::Retryable
11
+
12
+ def initialize(app, env)
13
+ @app = app
14
+ @machine = env[:machine]
15
+ @client = client
16
+ @env = env
17
+ @logger = Log4r::Logger.new('vagrant::abiquo::deploy')
18
+ end
19
+
20
+ def call(env)
21
+ vm = get_vm(@machine.id)
22
+
23
+ # Deploying VM
24
+ env[:ui].info I18n.t('vagrant_abiquo.info.deploy')
25
+ task = deploy(vm)
26
+
27
+ if task.state == 'FINISHED_SUCCESSFULLY'
28
+ # Deploy successfully completed
29
+ env[:ui].info I18n.t('vagrant_abiquo.info.deploycompleted')
30
+
31
+ # Give time to the OS to boot.
32
+ retryable(:tries => 20, :sleep => 5) do
33
+ next if env[:interrupted]
34
+ raise 'not ready' if !@machine.communicate.ready?
35
+ end
36
+
37
+ # Find its IP
38
+ vm = vm.link(:edit).get
39
+ ip = vm.link(:nic0).title
40
+ env[:ui].info I18n.t('vagrant_abiquo.info.vm_ip', :ip => ip)
41
+ @machine.id = vm.url
42
+ else
43
+ # Deploy failed
44
+ env[:ui].error I18n.t('vagrant_abiquo.info.deployfailed')
45
+ end
46
+
47
+ @app.call(env)
48
+ end
49
+
50
+ # Both the recover and terminate are stolen almost verbatim from
51
+ # the Vagrant AWS provider up action
52
+ def recover(env)
53
+ return if env['vagrant.error'].is_a?(Vagrant::Errors::VagrantError)
54
+
55
+ if @machine.state.id != :not_created
56
+ terminate(env)
57
+ end
58
+ end
59
+
60
+ def terminate(env)
61
+ destroy_env = env.dup
62
+ destroy_env.delete(:interrupted)
63
+ destroy_env[:config_validate] = false
64
+ destroy_env[:force_confirm_destroy] = true
65
+ env[:action_runner].run(Actions.destroy, destroy_env)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -24,9 +24,11 @@ module VagrantPlugins
24
24
  end
25
25
 
26
26
  def finalize!
27
+ @abiquo_connection_data = {} if @abiquo_connection_data == UNSET_VALUE
27
28
  @abiquo_connection_data[:abiquo_api_url] = ENV['ABQ_URL'] if @abiquo_connection_data[:abiquo_api_url].nil?
28
29
  @abiquo_connection_data[:abiquo_username] = ENV['ABQ_USER'] if @abiquo_connection_data[:abiquo_username].nil?
29
30
  @abiquo_connection_data[:abiquo_password] = ENV['ABQ_PASS'] if @abiquo_connection_data[:abiquo_password].nil?
31
+ @abiquo_connection_data = nil if @abiquo_connection_data[:abiquo_api_url].nil?
30
32
 
31
33
  @virtualdatacenter = ENV['ABQ_VDC'] if @virtualdatacenter == UNSET_VALUE
32
34
  @virtualappliance = ENV['ABQ_VAPP'] if @virtualappliance == UNSET_VALUE
@@ -21,6 +21,11 @@ module VagrantPlugins
21
21
  require_relative 'actions/create_vapp.rb'
22
22
  hook.prepend(Actions::CreatevApp)
23
23
  end
24
+
25
+ action_hook(:delete_vapp, :environment_unload) do |hook|
26
+ require_relative 'actions/delete_vapp.rb'
27
+ hook.prepend(Actions::DeletevApp)
28
+ end
24
29
  end
25
30
  end
26
31
  end
@@ -42,9 +42,11 @@ module VagrantPlugins
42
42
 
43
43
  def ssh_info
44
44
  return nil if state.id != :ON
45
-
46
- @vm ||= Provider.virtualmachine(@machine)
47
- @ip ||= @vm.link(:nics).get.first.ip
45
+ begin
46
+ @ip ||= @vm.link(:nics).get.first.ip
47
+ rescue Exception
48
+ return nil
49
+ end
48
50
 
49
51
  template = @vm.link(:virtualmachinetemplate).get unless @username
50
52
  @username = template.loginUser if template.respond_to? :loginUser
@@ -57,7 +59,7 @@ module VagrantPlugins
57
59
  end
58
60
 
59
61
  def state
60
- @vm ||= Provider.virtualmachine(@machine)
62
+ @vm = Provider.virtualmachine(@machine)
61
63
  state = @vm.nil? ? :not_created : @vm.state.to_sym
62
64
  long = short = state.to_s
63
65
  Vagrant::MachineState.new(state, short, long)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Abiquo
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant_abiquo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Beneyto
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-09 00:00:00.000000000 Z
12
+ date: 2017-03-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: abiquo-api
@@ -64,6 +64,8 @@ files:
64
64
  - lib/vagrant_abiquo/actions/check_state.rb
65
65
  - lib/vagrant_abiquo/actions/create.rb
66
66
  - lib/vagrant_abiquo/actions/create_vapp.rb
67
+ - lib/vagrant_abiquo/actions/delete_vapp.rb
68
+ - lib/vagrant_abiquo/actions/deploy.rb
67
69
  - lib/vagrant_abiquo/actions/destroy.rb
68
70
  - lib/vagrant_abiquo/actions/power_off.rb
69
71
  - lib/vagrant_abiquo/actions/power_on.rb