vagrant-openstack-provider 0.12.0 → 0.13.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 893e41d08fcadbc4e14a8d24228bf2009d947c84
4
- data.tar.gz: 468a1572bc27fcd2d81b5b385a1c906673b66f5c
3
+ metadata.gz: 1062d3b235767d1459f0fc018c419b688620f69e
4
+ data.tar.gz: 28314e50ec001ed36d5f00a975239cd9e18268e5
5
5
  SHA512:
6
- metadata.gz: ae7a94bea4991cc8bed4d0f1020b29d3261b8042c196f26e97f11d62bf58206287ad4632c1856938b0e0078dc1d9ebcf93904024b500aa2227e6d1ce02c2fb10
7
- data.tar.gz: 9c47974e708ed6fc514eb18b5c407f87bc015d6d5f869eb10205ec714d10a0f662d6f810c34235aee7ea6f306a0469e05646f7d26a7abe740928fdda130ea058
6
+ metadata.gz: 977c2d6ab3a78601e6cd0d3ed307d79d7ef2218f0a86870e705c908de2a0e674e6ce4dbc97a63b22a2520ba71b3a9db89941d4c966356413f14457ec8afeae23
7
+ data.tar.gz: bea47c2f131dc201c8aa0ea133de2a7781a48f795ac510ec539f39638971f595a6783740d48f6dfdc8a78e979055f63743c2ac4c376effd9406e8cca0f491baf
@@ -1,8 +1,11 @@
1
+ # 0.13.0 (July 30, 2018)
2
+
3
+ See https://github.com/ggiamarchi/vagrant-openstack-provider/milestone/20?closed=1
4
+
1
5
  # 0.12.0 (February 26, 2018)
2
6
 
3
- FEATURES:
7
+ See https://github.com/ggiamarchi/vagrant-openstack-provider/milestone/19?closed=1
4
8
 
5
- - Support parallel actions (#130)
6
9
 
7
10
  # 0.11.0 (August 5, 2017)
8
11
 
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
- gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v1.9.1'
6
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v1.9.8'
7
7
  # FIXME: Hack to allow Vagrant v1.6.5 to install for tests. Remove when
8
8
  # support for 1.6.5 is dropped.
9
9
  gem 'rack', '< 2'
@@ -16,7 +16,3 @@ end
16
16
  group :debug do
17
17
  gem 'byebug'
18
18
  end
19
-
20
- group :plugins do
21
- gem 'vagrant-openstack-provider', path: '.'
22
- end
@@ -96,7 +96,7 @@ module VagrantPlugins
96
96
  user: {
97
97
  name: config.username,
98
98
  domain: {
99
- name: config.domain_name
99
+ name: config.user_domain_name
100
100
  },
101
101
  password: '****'
102
102
  }
@@ -105,7 +105,7 @@ module VagrantPlugins
105
105
  scope: {
106
106
  project: {
107
107
  name: config.project_name,
108
- domain: { name: config.domain_name }
108
+ domain: { name: config.project_domain_name }
109
109
  }
110
110
  }
111
111
  }
@@ -3,8 +3,17 @@ require 'restclient'
3
3
  module VagrantPlugins
4
4
  module Openstack
5
5
  module RestUtils
6
+ def self._set_proxy(config)
7
+ @logger = Log4r::Logger.new('vagrant_openstack::restutils')
8
+ if config.http.proxy
9
+ RestClient.proxy = config.http.proxy
10
+ @logger.info "Setting up HTTP proxy to '#{config.http.proxy}'"
11
+ end
12
+ end
13
+
6
14
  def self.get(env, url, headers = {}, &block)
7
15
  config = env[:machine].provider_config
16
+ _set_proxy(config)
8
17
  RestClient::Request.execute(method: :get, url: url, headers: headers,
9
18
  timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
10
19
  ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
@@ -12,6 +21,7 @@ module VagrantPlugins
12
21
 
13
22
  def self.post(env, url, payload, headers = {}, &block)
14
23
  config = env[:machine].provider_config
24
+ _set_proxy(config)
15
25
  RestClient::Request.execute(method: :post, url: url, payload: payload, headers: headers,
16
26
  timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
17
27
  ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
@@ -19,6 +29,7 @@ module VagrantPlugins
19
29
 
20
30
  def self.delete(env, url, headers = {}, &block)
21
31
  config = env[:machine].provider_config
32
+ _set_proxy(config)
22
33
  RestClient::Request.execute(method: :delete, url: url, headers: headers,
23
34
  timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
24
35
  ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
@@ -72,6 +72,16 @@ module VagrantPlugins
72
72
  # @return [String]
73
73
  attr_accessor :domain_name
74
74
 
75
+ # The user domain name to access Openstack, this defaults to Default.
76
+ #
77
+ # @return [String]
78
+ attr_accessor :user_domain_name
79
+
80
+ # The project domain name to access Openstack, this defaults to Default.
81
+ #
82
+ # @return [String]
83
+ attr_accessor :project_domain_name
84
+
75
85
  # The name of the keypair to use.
76
86
  #
77
87
  # @return [String]
@@ -302,6 +312,7 @@ module VagrantPlugins
302
312
  @use_legacy_synced_folders = UNSET_VALUE
303
313
  @ssl_ca_file = UNSET_VALUE
304
314
  @ssl_verify_peer = UNSET_VALUE
315
+ @domain_name = UNSET_VALUE
305
316
  end
306
317
 
307
318
  def merge(other)
@@ -362,7 +373,9 @@ module VagrantPlugins
362
373
  @project_name = nil if @project_name == UNSET_VALUE
363
374
  @server_name = nil if @server_name == UNSET_VALUE
364
375
  @username = nil if @username == UNSET_VALUE
365
- @domain_name = 'Default' if @domain_name == UNSET_VALUE
376
+ # If domain_name is set we use it for user and project
377
+ @user_domain_name = @domain_name if @domain_name != UNSET_VALUE
378
+ @project_domain_name = @domain_name if @domain_name != UNSET_VALUE
366
379
  @floating_ip = nil if @floating_ip == UNSET_VALUE
367
380
  @floating_ip_pool = nil if @floating_ip_pool == UNSET_VALUE
368
381
  @floating_ip_pool_always_allocate = false if floating_ip_pool_always_allocate == UNSET_VALUE
@@ -423,7 +436,7 @@ module VagrantPlugins
423
436
  def rsync_include(inc)
424
437
  @rsync_includes << inc
425
438
  end
426
-
439
+ # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
427
440
  def validate(machine)
428
441
  errors = _detected_errors
429
442
 
@@ -465,7 +478,15 @@ module VagrantPlugins
465
478
  errors << I18n.t('vagrant_openstack.config.tenant_name_required') if @tenant_name.nil? || @tenant_name.empty?
466
479
  errors << I18n.t('vagrant_openstack.config.invalid_endpoint_type') unless %w(publicURL adminURL internalURL).include?(@endpoint_type)
467
480
  elsif @identity_api_version == '3'
468
- errors << I18n.t('vagrant_openstack.config.domain_required') if @domain_name.nil? || @domain_name.empty?
481
+ if @domain_name == UNSET_VALUE || @domain_name.nil? || @domain_name.empty?
482
+ if (@user_domain_name.nil? || @user_domain_name.empty?) && (@project_domain_name_name.nil? || @project_domain_name.empty?)
483
+ errors << I18n.t('vagrant_openstack.config.domain_required')
484
+ elsif @user_domain_name.nil? || @user_domain_name.empty?
485
+ errors << I18n.t('vagrant_openstack.config.user_domain_required')
486
+ elsif @project_domain_name.nil? || @project_domain_name.empty?
487
+ errors << I18n.t('vagrant_openstack.config.project_domain_required')
488
+ end
489
+ end
469
490
  errors << I18n.t('vagrant_openstack.config.project_name_required') if @project_name.nil? || @project_name.empty?
470
491
  errors << I18n.t('vagrant_openstack.config.invalid_interface_type') unless %w(public admin internal).include?(@interface_type)
471
492
  end
@@ -11,14 +11,20 @@ module VagrantPlugins
11
11
  # @return [Integer]
12
12
  attr_accessor :read_timeout
13
13
 
14
+ #
15
+ # @return [Integer]
16
+ attr_accessor :proxy
17
+
14
18
  def initialize
15
19
  @open_timeout = UNSET_VALUE
16
20
  @read_timeout = UNSET_VALUE
21
+ @proxy = UNSET_VALUE
17
22
  end
18
23
 
19
24
  def finalize!
20
25
  @open_timeout = 60 if @open_timeout == UNSET_VALUE
21
26
  @read_timeout = 30 if @read_timeout == UNSET_VALUE
27
+ @proxy = nil if @proxy == UNSET_VALUE
22
28
  end
23
29
 
24
30
  def merge(other)
@@ -13,7 +13,7 @@ module VagrantPlugins
13
13
  end
14
14
  end
15
15
  fail Errors::UnableToResolveIP if addresses.size == 0
16
- if addresses.size == 1
16
+ if addresses.size == 1 || !env[:machine].provider_config.networks
17
17
  net_addresses = addresses.first[1]
18
18
  else
19
19
  first_network = env[:machine].provider_config.networks[0]
@@ -4,7 +4,7 @@ module VagrantPlugins
4
4
  # Stable versions must respect the pattern given
5
5
  # by VagrantPlugins::Openstack::VERSION_PATTERN
6
6
  #
7
- VERSION = '0.12.0'
7
+ VERSION = '0.13.0'
8
8
 
9
9
  #
10
10
  # Stable version must respect the naming convention 'x.y.z'
@@ -16,21 +16,39 @@ module VagrantPlugins
16
16
  #
17
17
  attr_accessor :status
18
18
 
19
+ #
20
+ # boolean attribute to disbale version checker
21
+ #
22
+ attr_accessor :check_enabled
23
+
19
24
  def initialize
20
25
  @status = nil
26
+ @check_enabled = true
27
+
28
+ check = ENV['VAGRANT_OPENSTACK_VERSION_CKECK']
29
+ @check_enabled = false if check && check.upcase == 'DISABLED'
21
30
  end
22
31
 
23
32
  #
24
33
  # Check the latest version from rubygem and set the status
25
34
  #
26
35
  def check
36
+ return :latest unless @check_enabled
27
37
  return @status unless @status.nil?
28
- latest = Gem.latest_spec_for('vagrant-openstack-provider').version.version
38
+
39
+ begin
40
+ latest = Gem.latest_spec_for('vagrant-openstack-provider').version.version
41
+ rescue
42
+ # If for any reason the version of the latest pulished
43
+ # version can't be found we don't fail in any way
44
+ return :latest
45
+ end
46
+
29
47
  current = VagrantPlugins::Openstack::VERSION
30
48
 
31
49
  unless current =~ VERSION_PATTERN
32
50
  @status = :unstable
33
- print I18n.t('vagrant_openstack.version_unstable')
51
+ print_message I18n.t('vagrant_openstack.version_unstable')
34
52
  return
35
53
  end
36
54
 
@@ -47,19 +65,19 @@ module VagrantPlugins
47
65
 
48
66
  if i_current > i_latest
49
67
  @status = :unstable
50
- print I18n.t('vagrant_openstack.version_unstable')
68
+ print_message I18n.t('vagrant_openstack.version_unstable')
51
69
  return
52
70
  end
53
71
 
54
72
  @status = :outdated
55
- print I18n.t('vagrant_openstack.version_outdated', latest: latest, current: current)
73
+ print_message I18n.t('vagrant_openstack.version_outdated', latest: latest, current: current)
56
74
  end
57
75
 
58
76
  private
59
77
 
60
- def print(message)
61
- puts message.yellow
62
- puts ''
78
+ def print_message(message)
79
+ $stderr.puts message.yellow
80
+ $stderr.puts ''
63
81
  end
64
82
  end
65
83
 
@@ -146,13 +146,17 @@ en:
146
146
  settings causes the OpenStack provider to fall back to an old synced
147
147
  folder implementation instead of using standard Vagrant synced folders.
148
148
  domain_required: |-
149
- A domain is required when using identity API version 3
149
+ A domain is required when using identity API version 3. You need to specify domain_name or (project_domain_name and user_domain_name)
150
+ user_domain_required: |-
151
+ A user domain is required when specifying a project domain using identity API version 3.
152
+ project_domain_required: |-
153
+ A project domain is required when specifying a user domain using identity API version 3.
150
154
  project_name_required: |-
151
155
  A project name is required when using identity API version 3
152
156
  invalid_interface_type: |-
153
157
  Interface type must be public, admin or internal (if not provided, default is public)
154
158
  invalid_api_version: |-
155
- identity API verison must be 2 or 3 (if nto provided, default is 2)
159
+ identity API verison must be 2 or 3 (if not provided, default is 2)
156
160
 
157
161
  errors:
158
162
  default: |-
@@ -305,7 +305,8 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
305
305
  end
306
306
  env[:openstack_client].stub(:neutron) { neutron }
307
307
  env[:openstack_client].stub(:glance) { glance }
308
- config.stub(:domain_name) { 'dummy' }
308
+ config.stub(:user_domain_name) { 'dummy' }
309
+ config.stub(:project_domain_name) { 'dummy' }
309
310
  config.stub(:identity_api_version) { '3' }
310
311
 
311
312
  @action.call(env)
@@ -5,6 +5,7 @@ describe VagrantPlugins::Openstack::CinderClient do
5
5
  double('http').tap do |http|
6
6
  http.stub(:read_timeout) { 42 }
7
7
  http.stub(:open_timeout) { 43 }
8
+ http.stub(:proxy) { nil }
8
9
  end
9
10
  end
10
11
 
@@ -5,6 +5,7 @@ describe VagrantPlugins::Openstack::GlanceClient do
5
5
  double('http').tap do |http|
6
6
  http.stub(:read_timeout) { 42 }
7
7
  http.stub(:open_timeout) { 43 }
8
+ http.stub(:proxy) { nil }
8
9
  end
9
10
  end
10
11
 
@@ -7,6 +7,7 @@ describe VagrantPlugins::Openstack::NovaClient do
7
7
  double('http').tap do |http|
8
8
  http.stub(:read_timeout) { 42 }
9
9
  http.stub(:open_timeout) { 43 }
10
+ http.stub(:proxy) { nil }
10
11
  end
11
12
  end
12
13
 
@@ -5,6 +5,7 @@ describe VagrantPlugins::Openstack::KeystoneClient do
5
5
  double('http').tap do |http|
6
6
  http.stub(:read_timeout) { 42 }
7
7
  http.stub(:open_timeout) { 43 }
8
+ http.stub(:proxy) { nil }
8
9
  end
9
10
  end
10
11
 
@@ -178,7 +179,8 @@ describe VagrantPlugins::Openstack::KeystoneClient do
178
179
  # V3
179
180
  context 'with good credentials v3' do
180
181
  it 'store token and tenant id' do
181
- config.stub(:domain_name) { 'dummy' }
182
+ config.stub(:user_domain_name) { 'dummy' }
183
+ config.stub(:project_domain_name) { 'dummy' }
182
184
  config.stub(:identity_api_version) { '3' }
183
185
  config.stub(:openstack_auth_url) { 'http://keystoneAuthV3' }
184
186
 
@@ -200,7 +202,8 @@ describe VagrantPlugins::Openstack::KeystoneClient do
200
202
 
201
203
  context 'with wrong credentials v3' do
202
204
  it 'raise an unauthorized error ' do
203
- config.stub(:domain_name) { 'dummy' }
205
+ config.stub(:user_domain_name) { 'dummy' }
206
+ config.stub(:project_domain_name) { 'dummy' }
204
207
  config.stub(:identity_api_version) { '3' }
205
208
  config.stub(:openstack_auth_url) { 'http://keystoneAuthV3' }
206
209
 
@@ -5,6 +5,7 @@ describe VagrantPlugins::Openstack::NeutronClient do
5
5
  double('http').tap do |http|
6
6
  http.stub(:read_timeout) { 42 }
7
7
  http.stub(:open_timeout) { 43 }
8
+ http.stub(:proxy) { nil }
8
9
  end
9
10
  end
10
11
 
@@ -10,6 +10,7 @@ describe VagrantPlugins::Openstack::NovaClient do
10
10
  double('http').tap do |http|
11
11
  http.stub(:read_timeout) { 42 }
12
12
  http.stub(:open_timeout) { 43 }
13
+ http.stub(:proxy) { nil }
13
14
  end
14
15
  end
15
16
 
@@ -31,8 +31,8 @@ describe VagrantPlugins::Openstack::VersionChecker do
31
31
  def assert_version_is(expected_status, latest, current)
32
32
  stub_const('VagrantPlugins::Openstack::VERSION', current)
33
33
  version.stub(:version) { latest }
34
- @checker.stub(:print)
35
- expect(@checker).to receive(:print) unless expected_status == :latest
34
+ @checker.stub(:print_message)
35
+ expect(@checker).to receive(:print_message) unless expected_status == :latest
36
36
  @checker.check
37
37
  expect(@checker.status).to eq(expected_status)
38
38
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.homepage = 'https://github.com/ggiamarchi/vagrant-openstack-provider'
13
13
  gem.license = 'MIT'
14
14
 
15
- gem.add_dependency 'json', '>= 1.8.1', '< 3.0'
15
+ gem.add_dependency 'json', '> 2', '< 3'
16
16
  gem.add_dependency 'rest-client', '>= 1.6.0', '< 3.0'
17
17
  gem.add_dependency 'terminal-table', '1.4.5'
18
18
  gem.add_dependency 'sshkey', '1.6.1'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-openstack-provider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Giamarchi
@@ -9,28 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-26 00:00:00.000000000 Z
12
+ date: 2018-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - ">"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.8.1
20
+ version: '2'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '3.0'
23
+ version: '3'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ">="
28
+ - - ">"
29
29
  - !ruby/object:Gem::Version
30
- version: 1.8.1
30
+ version: '2'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '3'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rest-client
36
36
  requirement: !ruby/object:Gem::Requirement