vagrant-haipa 0.2.2 → 0.3.1

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
  SHA256:
3
- metadata.gz: f0fc2824da037b8d780af1d923852a08014c24964a8e5ac26964c869fe2352fe
4
- data.tar.gz: fd3d7da66c342b5bcc0e59a858804b16c9703b65bfd88776d58e57c3cca9b3d8
3
+ metadata.gz: 8eee5308a57ce3061bb3126c80df2f0ab35f40dd1453a45a36fe7daa9d13f1df
4
+ data.tar.gz: dc43555a1ac9e7ebf63dd10351bc768a4ff4cd865075a05cc72987b2e3c45b4e
5
5
  SHA512:
6
- metadata.gz: 28f888f6f201ab402aca8aaa5200cabfd24831cdd06c4f00015ae0785a2167c5b5894c19cb361f1004214ce394a04f8d3fe5a46e6dd03902848156dbf69d8981
7
- data.tar.gz: 865d9dbd0f8537dc1d3d0375d214f1a967f2d1f051dae37aba408ea7b6ef8c6a8e5a4ebf9fbe30cacd5c37e6a5ccbb0fe8095a92f18bc3a1799c100e72875482
6
+ metadata.gz: 23555a3590f4d71b59e011444a7b568268e1f38ef7ea05d6d786b31028c492123c1b8b9f660926d931cce53bd696d724bf23d48cf3b621e02191c46c5d34235b
7
+ data.tar.gz: 746251a86a253fcaf627a6ff3981869a7528426f288bf7016aeb2daf03bf89244534bbebe2a0f0712399f41faee7965c5742e414ee353c6418dff4a3611d0f8f
@@ -10,7 +10,6 @@ module VagrantPlugins
10
10
  b.use Call, IsCreated do |env, b2|
11
11
 
12
12
  if !env[:result]
13
- b2.use SetName
14
13
  b2.use ConvergeMachine
15
14
  end
16
15
  end
@@ -165,7 +164,6 @@ module VagrantPlugins
165
164
  autoload :ReadState, action_root.join('read_state')
166
165
  autoload :IsCreated, action_root.join('is_created')
167
166
  autoload :IsRunning, action_root.join('is_running')
168
- autoload :SetName, action_root.join('set_name')
169
167
  autoload :ConvergeMachine, action_root.join('converge_machine')
170
168
  autoload :DeleteMachine, action_root.join('delete_machine')
171
169
  autoload :StartMachine, action_root.join('start_machine')
@@ -9,26 +9,23 @@ module VagrantPlugins
9
9
  @logger = Log4r::Logger.new('vagrant::haipa::converge_machine')
10
10
  end
11
11
 
12
- def call(env)
12
+ def call(env)
13
13
 
14
- name = env[:generated_name]
15
- unless @machine.id.nil?
16
- haipa_machine = @machine.provider.driver.machine
17
- name = haipa_machine.name
14
+ # terminate only if machine has been created by this action
15
+ if @machine.id.nil?
16
+ env[:converge_cleanup] = true
18
17
  end
19
-
20
- operation_result = @machine.provider.driver.converge(env, name)
18
+
19
+ operation_result = @machine.provider.driver.converge(env)
21
20
  @machine.id = operation_result.machine_guid if @machine.id.nil?
22
21
 
23
22
 
24
23
  @app.call(env)
25
24
  end
26
25
 
27
- # Both the recover and terminate are stolen almost verbatim from
28
- # the Vagrant AWS provider up action
29
26
  def recover(env)
30
27
  return if env['vagrant.error'].is_a?(Vagrant::Errors::VagrantError)
31
- terminate(env) if @machine.state.id != :not_created
28
+ terminate(env) if @machine.state.id != :not_created && env[:converge_cleanup] == true
32
29
  end
33
30
 
34
31
  def terminate(env)
@@ -1,4 +1,5 @@
1
1
  require 'haipa_compute'
2
+ require 'time'
2
3
 
3
4
  module VagrantPlugins
4
5
  module Haipa
@@ -9,6 +10,8 @@ module VagrantPlugins
9
10
 
10
11
  def initialize(machine)
11
12
  @machine = machine
13
+ @logger = Log4r::Logger.new('vagrant::haipa::driver')
14
+
12
15
  end
13
16
 
14
17
  # @return [::Haipa::Client::Compute::ApiConfiguration] Haipa Compute API
@@ -50,24 +53,31 @@ module VagrantPlugins
50
53
  haipa_machine.status
51
54
  end
52
55
 
53
- def machine_by_name(name)
54
- haipa_machine_list = compute_api.client.machines.list(:filter=>"name eq '#{name}'")
55
- haipa_machine_list.value.first
56
- end
57
-
58
56
  def machine(expand = nil)
59
57
  compute_api.client.machines.get(@machine.id, :expand => expand)
60
58
  end
61
59
 
62
- def converge(env, name)
60
+ def machine_name
61
+ unless @machine.provider_config.name.nil?
62
+ @machine.provider_config.name
63
+ else
64
+ @machine.name
65
+ end
66
+ end
67
+
68
+ def converge(env)
63
69
 
64
70
  machine_config_hash = {
65
- 'name' => name,
66
- 'vm' => @machine.provider_config.vm_config,
67
- "provisioning" => @machine.provider_config.provision
71
+ :name => machine_name,
72
+ :id => @machine.id,
73
+ :vm => @machine.provider_config.vm_config,
74
+ :provisioning => @machine.provider_config.provision
68
75
  }
69
76
 
70
- machine_config = compute_api.deserialize(:MachineConfig, machine_config_hash)
77
+ # this will convert all symbols to strings as required by deserialize
78
+ machine_config_string_hash = JSON.parse(machine_config_hash.to_json)
79
+
80
+ machine_config = compute_api.deserialize(:MachineConfig, machine_config_string_hash)
71
81
  operation = compute_api.client.machines.update_or_create(:config => machine_config)
72
82
 
73
83
  wait_for_operation(env,operation)
@@ -91,7 +101,7 @@ module VagrantPlugins
91
101
  protected
92
102
 
93
103
  def wait_for_operation(env,operation)
94
- timestamp = '2018-09-01T23:47:17.50094+02:00'
104
+ timestamp = DateTime.parse('2018-09-01T23:47:17.50094+02:00')
95
105
 
96
106
  operation_error = nil
97
107
 
@@ -114,13 +124,19 @@ module VagrantPlugins
114
124
  next if env[:interrupted]
115
125
 
116
126
  # check action status
117
- result = compute_api.client.operations.get(operation.id, :expand => "LogEntries($filter=Timestamp gt #{timestamp})")
127
+ result = compute_api.client.operations.get(operation.id, :expand => "LogEntries($filter=Timestamp gt #{timestamp.iso8601})")
118
128
 
119
129
  result.log_entries.each do |entry|
120
- env[:ui].info(entry.message)
121
- timestamp = entry.timestamp
130
+ if timestamp < entry.timestamp
131
+ env[:ui].info(entry.message)
132
+ timestamp = entry.timestamp
133
+
134
+ # randomized delay for smoother output
135
+ delay = rand(4) * 0.2
136
+ sleep delay
137
+ end
122
138
  end
123
-
139
+
124
140
  yield result if block_given?
125
141
 
126
142
  raise 'Operation not completed' if result.status == 'Running'
@@ -130,6 +146,13 @@ module VagrantPlugins
130
146
 
131
147
  raise "Operation failed: #{result.status_message}" if result.status == 'Failed'
132
148
 
149
+ #write latest log entries
150
+ result = compute_api.client.operations.get(operation.id, :expand => "LogEntries($filter=Timestamp gt #{timestamp.iso8601})")
151
+ result.log_entries.each do |entry|
152
+ env[:ui].info(entry.message) if timestamp < entry.timestamp
153
+ timestamp = entry.timestamp if timestamp < entry.timestamp
154
+ end
155
+
133
156
  #refresh operation result
134
157
  compute_api.client.operations.get(operation.id)
135
158
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Haipa
3
- VERSION = '0.2.2'
3
+ VERSION = '0.3.1'
4
4
  end
5
5
  end
@@ -2,9 +2,9 @@ REQUIRED_PLUGINS = %w(vagrant-haipa)
2
2
 
3
3
  Vagrant.configure('2') do |config|
4
4
 
5
- config.ssh.username = 'ubuntu'
6
- config.ssh.password = 'ubuntu'
7
-
5
+ # config.ssh.username = 'ubuntu'
6
+ # config.ssh.password = 'ubuntu'
7
+
8
8
  config.vm.synced_folder ".", "/vagrant", disabled: true
9
9
 
10
10
  #config.vm.provision :shell, :path => 'scripts/provision.sh'
@@ -18,15 +18,15 @@ Vagrant.configure('2') do |config|
18
18
  provider.client_key_file = 'console.key'
19
19
  provider.identity_endpoint = 'https://localhost:62189/identity'
20
20
  provider.api_endpoint = 'https://localhost:62189/api'
21
-
22
21
  provider.vm_config = {
23
- 'memory' => {
24
- 'startup' => 2048
22
+ 'memory' => {
23
+ 'startup' => 2096
25
24
  },
26
- 'disks' => [
25
+ 'drives' => [
27
26
  {
28
- 'template' => 'T:\openstack\ubuntu-xenial.vhdx',
29
- 'size' => 20
27
+ 'name' => 'sda',
28
+ 'template' => 'C:\Users\fwagner\.vagrant.d\boxes\bento-VAGRANTSLASH-ubuntu-16.04\201812.27.0\hyperv\Virtual Hard Disks\ubuntu-16.04-amd64.vhdx',
29
+ 'size' => 40
30
30
  }
31
31
  ],
32
32
  'networkAdapters' => [
@@ -38,9 +38,10 @@ Vagrant.configure('2') do |config|
38
38
  }
39
39
 
40
40
  provider.provision = {
41
+ 'method' => 'none',
41
42
  'hostname' => 'basic',
42
43
  'userData' => {
43
- "package_upgrade": true,
44
+ "package_upgrade": false,
44
45
  "chpasswd" => {
45
46
  "expire": false
46
47
  },
@@ -1,27 +1,27 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEogIBAAKCAQEAw+q1IZy3iYRsjzZuitP4+2UYVY+AO/OZq5/O5erlseayss7g
3
- zomY2NIg/kYKcrJkUZ04Y9RknWLHEw9iHGIxEMIChdaJTlM0IYgaVToWKZeWi2+h
4
- yogPzAYziL/+fG0r6GnEvI7AHztsZUbZe7PcXL/NP0ZIamsMzXSAEt1Y8Fi50reV
5
- XkNO9h60oI79crOIH+bcfgIpRYMkHcxrAFGBkfFMcIjup/G4GPEpKl7pbeTHm87u
6
- 3QwQivIlYCX/fkdmggLcWaOpA4GtkLOzWgjekIulj1pGymbCsdOd48Pnp/+zWttA
7
- SxVLMq6egGXya/I8mQcAMBx4tm5HiMi/dXNS1QIDAQABAoIBAE9TsZOyiP49iFdU
8
- it3bhm0EOh4qxJmBwS8kvfmKawblimWsLopyXFkue/15DrHyWXxSVIrXbQXtAP5O
9
- tEMZ3xQR+kOG4oG8XtdU7JSluGOO5X3/7Vq8TOkneaZdVwW6jpTEfsx6YIBE51b6
10
- oQTdhtRnNQvxwVCVl9F44oLA7UojbX1PbSbW4OO5X+ZX0Xgk3U39MUjdza4jyggx
11
- Dyp+QWk8sN/6Xn0E5DM97c+y2xsLlekFckWTUp7ECb0iTZ35SuHxe3n9xAOclXBI
12
- CQ8VZZxKqRwh8guB6OFxrE9jjVCxSg11hnXbHte9iJYb4sCAI4I+jNJFprLhEmSs
13
- cvtjkuECgYEA3ptQTys9IAv6H9WNZ49TBQqzL1Y+rNm8k1zkxo6G1z/47FtPSjmU
14
- 0SRdeJYjRWiM8k5WE8mMl5qqhonFoDq9ILF/70GgKnaI62P8vF4meAWW6dERY//P
15
- JyquYJBX+oQjPVStWrSihD5/yjhhciy78BFQLPbfc7Hp8XJxS8MLzPsCgYEA4U5u
16
- qNmJKECPg+TJUw1gxKggAMINNIezMSsmPXRdCN5MZugfL1uTdJN3Wu8kdc+3hmHQ
17
- k1k2iYMCJ718cD2H3zanOYs6iqeD5o5K00JJKBbgnWyGB1I7uSHJMAp9Ur4nX+LV
18
- 8/zFd4KI0Nmv1AUlb3gG8e680TnZabZX11Xhtm8CgYAJD/GZB32ZjGNGYH89NAyB
19
- LApXZv9uMf8HUMTPgIXkxWnw1VbJAscYLI7RleshrDvwsVe3voDGuzkt+PXerAV/
20
- CzrWFqnakLDKRGvJj1upjzCxnB1FIOjiA07OB5JNVIvKt2PHSYtELvcs2Fa/Oyr7
21
- fvjwm6xFHX0Uo0ARgYM9eQKBgBecdJRVV75UJbYYv9BoUn/JbrElpOSgY/L/Jp7C
22
- Fw3a3f7azInV+vn4ikWJUjTWc9EtZwJKEyEODafEf8nzaM3HmHa7VIM7UuNSfhzt
23
- kWUWIKvet50EzSV1mPPj5YZKTy4JQ4qyLq97ioL4jSiW8XlhBrlL35W9jj850LLM
24
- WT8ZAoGAU4omGMECa9CNU9QoZvNuXpUju823Euja2Lg2AE7XGNBxqA8dmL5czuXR
25
- gEEZ740uPRplAj3SPWoBHT/Gzo44NUCJFuouHu0CBaTUssir1E/TnS9wQI694eRg
26
- hoqMWWCMQ2+rE7bONY60PaB4Y6mAY9SMS9r2QAI8sipuwraj5l8=
27
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAw+q1IZy3iYRsjzZuitP4+2UYVY+AO/OZq5/O5erlseayss7g
3
+ zomY2NIg/kYKcrJkUZ04Y9RknWLHEw9iHGIxEMIChdaJTlM0IYgaVToWKZeWi2+h
4
+ yogPzAYziL/+fG0r6GnEvI7AHztsZUbZe7PcXL/NP0ZIamsMzXSAEt1Y8Fi50reV
5
+ XkNO9h60oI79crOIH+bcfgIpRYMkHcxrAFGBkfFMcIjup/G4GPEpKl7pbeTHm87u
6
+ 3QwQivIlYCX/fkdmggLcWaOpA4GtkLOzWgjekIulj1pGymbCsdOd48Pnp/+zWttA
7
+ SxVLMq6egGXya/I8mQcAMBx4tm5HiMi/dXNS1QIDAQABAoIBAE9TsZOyiP49iFdU
8
+ it3bhm0EOh4qxJmBwS8kvfmKawblimWsLopyXFkue/15DrHyWXxSVIrXbQXtAP5O
9
+ tEMZ3xQR+kOG4oG8XtdU7JSluGOO5X3/7Vq8TOkneaZdVwW6jpTEfsx6YIBE51b6
10
+ oQTdhtRnNQvxwVCVl9F44oLA7UojbX1PbSbW4OO5X+ZX0Xgk3U39MUjdza4jyggx
11
+ Dyp+QWk8sN/6Xn0E5DM97c+y2xsLlekFckWTUp7ECb0iTZ35SuHxe3n9xAOclXBI
12
+ CQ8VZZxKqRwh8guB6OFxrE9jjVCxSg11hnXbHte9iJYb4sCAI4I+jNJFprLhEmSs
13
+ cvtjkuECgYEA3ptQTys9IAv6H9WNZ49TBQqzL1Y+rNm8k1zkxo6G1z/47FtPSjmU
14
+ 0SRdeJYjRWiM8k5WE8mMl5qqhonFoDq9ILF/70GgKnaI62P8vF4meAWW6dERY//P
15
+ JyquYJBX+oQjPVStWrSihD5/yjhhciy78BFQLPbfc7Hp8XJxS8MLzPsCgYEA4U5u
16
+ qNmJKECPg+TJUw1gxKggAMINNIezMSsmPXRdCN5MZugfL1uTdJN3Wu8kdc+3hmHQ
17
+ k1k2iYMCJ718cD2H3zanOYs6iqeD5o5K00JJKBbgnWyGB1I7uSHJMAp9Ur4nX+LV
18
+ 8/zFd4KI0Nmv1AUlb3gG8e680TnZabZX11Xhtm8CgYAJD/GZB32ZjGNGYH89NAyB
19
+ LApXZv9uMf8HUMTPgIXkxWnw1VbJAscYLI7RleshrDvwsVe3voDGuzkt+PXerAV/
20
+ CzrWFqnakLDKRGvJj1upjzCxnB1FIOjiA07OB5JNVIvKt2PHSYtELvcs2Fa/Oyr7
21
+ fvjwm6xFHX0Uo0ARgYM9eQKBgBecdJRVV75UJbYYv9BoUn/JbrElpOSgY/L/Jp7C
22
+ Fw3a3f7azInV+vn4ikWJUjTWc9EtZwJKEyEODafEf8nzaM3HmHa7VIM7UuNSfhzt
23
+ kWUWIKvet50EzSV1mPPj5YZKTy4JQ4qyLq97ioL4jSiW8XlhBrlL35W9jj850LLM
24
+ WT8ZAoGAU4omGMECa9CNU9QoZvNuXpUju823Euja2Lg2AE7XGNBxqA8dmL5czuXR
25
+ gEEZ740uPRplAj3SPWoBHT/Gzo44NUCJFuouHu0CBaTUssir1E/TnS9wQI694eRg
26
+ hoqMWWCMQ2+rE7bONY60PaB4Y6mAY9SMS9r2QAI8sipuwraj5l8=
27
+ -----END RSA PRIVATE KEY-----
data/vagrant CHANGED
@@ -1,27 +1,27 @@
1
- #!C:/Users/vagrant/AppData/Local/Temp/hecdnuu3.bee/embedded/mingw64/bin/ruby.exe
2
- #
3
- # This file was generated by RubyGems.
4
- #
5
- # The application 'vagrant' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
8
-
9
- require 'rubygems'
10
-
11
- version = ">= 0.a"
12
-
13
- if ARGV.first
14
- str = ARGV.first
15
- str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
16
- if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
17
- version = $1
18
- ARGV.shift
19
- end
20
- end
21
-
22
- if Gem.respond_to?(:activate_bin_path)
23
- load Gem.activate_bin_path('vagrant', 'vagrant', version)
24
- else
25
- gem "vagrant", version
26
- load Gem.bin_path("vagrant", "vagrant", version)
27
- end
1
+ #!C:/Users/vagrant/AppData/Local/Temp/hecdnuu3.bee/embedded/mingw64/bin/ruby.exe
2
+ #
3
+ # This file was generated by RubyGems.
4
+ #
5
+ # The application 'vagrant' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'rubygems'
10
+
11
+ version = ">= 0.a"
12
+
13
+ if ARGV.first
14
+ str = ARGV.first
15
+ str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
16
+ if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
17
+ version = $1
18
+ ARGV.shift
19
+ end
20
+ end
21
+
22
+ if Gem.respond_to?(:activate_bin_path)
23
+ load Gem.activate_bin_path('vagrant', 'vagrant', version)
24
+ else
25
+ gem "vagrant", version
26
+ load Gem.bin_path("vagrant", "vagrant", version)
27
+ end
@@ -16,5 +16,5 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
 
18
18
  gem.add_dependency "log4r"
19
- gem.add_dependency "haipa_compute", ">= 0.0.3"
19
+ gem.add_dependency "haipa_compute", ">= 0.2.2"
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-haipa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Haipa contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-09 00:00:00.000000000 Z
11
+ date: 2019-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: log4r
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.3
33
+ version: 0.2.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: 0.0.3
40
+ version: 0.2.2
41
41
  description: Enables Vagrant to manage Hyper-V with Haipa
42
42
  email:
43
43
  - package-maintainers@haipa.io
@@ -63,7 +63,6 @@ files:
63
63
  - lib/vagrant-haipa/action/message_not_created.rb
64
64
  - lib/vagrant-haipa/action/message_will_not_destroy.rb
65
65
  - lib/vagrant-haipa/action/read_state.rb
66
- - lib/vagrant-haipa/action/set_name.rb
67
66
  - lib/vagrant-haipa/action/start_machine.rb
68
67
  - lib/vagrant-haipa/action/stop_machine.rb
69
68
  - lib/vagrant-haipa/action/wait_for_ip_address.rb
@@ -1,50 +0,0 @@
1
- require 'vagrant-haipa'
2
-
3
- module VagrantPlugins
4
- module Haipa
5
- module Action
6
- class SetName
7
- def initialize(app, env)
8
- @app = app
9
- @machine = env[:machine]
10
- @logger = Log4r::Logger.new('vagrant::haipa::set_name')
11
- end
12
-
13
- def call(env)
14
- name = @machine.provider_config.name
15
-
16
- # If we already set the name before, then don't do anything
17
- sentinel = @machine.data_dir.join("action_set_name")
18
- if !name && sentinel.file?
19
- @logger.info("Default name was already set before, not doing it again.")
20
- return @app.call(env)
21
- end
22
-
23
- # If no name was manually set, then use a default
24
- if !name
25
- prefix = "#{env[:root_path].basename.to_s}_#{@machine.name}"
26
- prefix.gsub!(/[^-a-z0-9_]/i, "")
27
-
28
- # milliseconds + random number suffix to allow for simultaneous
29
- # `vagrant up` of the same box in different dirs
30
- name = prefix + "_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
31
- end
32
-
33
- # Verify the name is not taken
34
- haipa_machine = @machine.provider.driver.machine_by_name(name)
35
- raise Vagrant::Errors::VMNameExists, name: name if haipa_machine
36
-
37
- env[:generated_name] = name
38
- # Create the sentinel
39
- sentinel.open("w") do |f|
40
- f.write(Time.now.to_i.to_s)
41
- end
42
-
43
- @app.call(env)
44
- end
45
- end
46
- end
47
- end
48
- end
49
-
50
-