vagrant-libvirt 0.0.18 → 0.0.19

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: 9bc2f0fdfc01511f71626fdc2fe8b7cbe21c6a09
4
- data.tar.gz: a6af2428f90f0ccc535835336f07cf1f765dd4ba
3
+ metadata.gz: 3dfc179b111aedecd88900df94faec1f9d949c88
4
+ data.tar.gz: e829ca23a1935b411bbdeddc78b57229c13c6014
5
5
  SHA512:
6
- metadata.gz: 62d3180bf379f2b6d264c6c8e8fa29e8d340b5d6dd74c456ac536967c8c10c77b42a942963569db8e6ed936622a8b20ebf9dbb6f81a12b99e420290b943b5b54
7
- data.tar.gz: 6b6ff342e37bfe6c6ceae077d974dad0cedae2eed7581529b2e0b465dac81a007b6ed17c026e6125a160c741abe3322b3338e8e9a584ed1abbbcfb2b79a3ed1b
6
+ metadata.gz: ad2d3f5717e17e96b422d485a08bc1ffc99d8dd53ccd4f82f9a2fea88de56b939773ac033b9f031ebc2e141dd3aa80ff6dbadf2212f9dbeaff04d006ca7092a8
7
+ data.tar.gz: 4c27f90f010454367c90b8eb94d621ce20d300ea4c289ae42285982dfb694e50640cfe5b96789e898471938df0f18c8905ace44584bf7b08abf95073149fd94b
@@ -1,3 +1,4 @@
1
+ require 'securerandom'
1
2
  module VagrantPlugins
2
3
  module ProviderLibvirt
3
4
  module Action
@@ -5,28 +6,19 @@ module VagrantPlugins
5
6
  # Setup name for domain and domain volumes.
6
7
  class SetNameOfDomain
7
8
  def initialize(app, env)
8
- @logger = Log4r::Logger.new("vagrant_libvirt::action::set_name_of_domain")
9
- @app = app
9
+ @logger = Log4r::Logger.new("vagrant_libvirt::action::set_name_of_domain")
10
+ @app = app
10
11
  end
11
12
 
12
13
  def call(env)
13
- require 'securerandom'
14
- config = env[:machine].provider_config
15
- if config.default_prefix.nil?
16
- env[:domain_name] = env[:root_path].basename.to_s.dup
17
- else
18
- env[:domain_name] = config.default_prefix.to_s
19
- end
20
- env[:domain_name].gsub!(/[^-a-z0-9_]/i, '')
21
- env[:domain_name] << '_'
22
- env[:domain_name] << env[:machine].name.to_s
23
-
14
+ env[:domain_name] = build_domain_name(env)
15
+
24
16
  begin
25
- @logger.info("Looking for domain #{env[:domain_name]} through list #{env[:libvirt_compute].servers.all}")
26
- # Check if the domain name is not already taken
27
-
17
+ @logger.info("Looking for domain #{env[:domain_name]} through list #{env[:libvirt_compute].servers.all}")
18
+ # Check if the domain name is not already taken
19
+
28
20
  domain = ProviderLibvirt::Util::Collection.find_matching(
29
- env[:libvirt_compute].servers.all, env[:domain_name])
21
+ env[:libvirt_compute].servers.all, env[:domain_name])
30
22
  rescue Fog::Errors::Error => e
31
23
  @logger.info("#{e}")
32
24
  domain = nil
@@ -34,13 +26,33 @@ module VagrantPlugins
34
26
 
35
27
  @logger.info("Looking for domain #{env[:domain_name]}")
36
28
 
37
- if domain != nil
29
+ unless domain.nil?
38
30
  raise ProviderLibvirt::Errors::DomainNameExists,
39
31
  :domain_name => env[:domain_name]
40
32
  end
41
33
 
42
34
  @app.call(env)
43
35
  end
36
+
37
+ # build domain name
38
+ # avoids `domain about to create is already taken`
39
+ # parsable and sortable by epoch time
40
+ # @example
41
+ # development-centos-6-chef-11_1404488971_3b7a569e2fd7c554b852
42
+ # @return [String] libvirt domain name
43
+ def build_domain_name(env)
44
+ postfix = "#{Time.now.utc.to_i}_#{SecureRandom.hex(10)}"
45
+ config = env[:machine].provider_config
46
+ domain_name =
47
+ if config.default_prefix.nil?
48
+ env[:root_path].basename.to_s.dup
49
+ else
50
+ config.default_prefix.to_s
51
+ end
52
+ domain_name.gsub!(/[^-a-z0-9_]/i, '')
53
+ domain_name << "_#{postfix}"
54
+ end
55
+
44
56
  end
45
57
 
46
58
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProviderLibvirt
3
- VERSION = '0.0.18'
3
+ VERSION = '0.0.19'
4
4
  end
5
5
  end
@@ -0,0 +1,5 @@
1
+ require 'vagrant-libvirt'
2
+ require 'support/environment_helper'
3
+
4
+ RSpec.configure do |spec|
5
+ end
@@ -0,0 +1,36 @@
1
+ require "ostruct"
2
+ require "pathname"
3
+
4
+ class EnvironmentHelper
5
+
6
+ attr_writer :default_prefix, :domain_name
7
+
8
+ def [](value)
9
+ self.send(value.to_sym)
10
+ end
11
+
12
+ def machine
13
+ self
14
+ end
15
+
16
+ def provider_config
17
+ self
18
+ end
19
+
20
+ def default_prefix
21
+ # noop
22
+ end
23
+
24
+ def root_path
25
+ Pathname.new("./spec/support/foo")
26
+ end
27
+
28
+ def domain_name
29
+ #noop
30
+ end
31
+
32
+ def libvirt_compute
33
+ OpenStruct.new(servers: [])
34
+ end
35
+
36
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain do
4
+ before :each do
5
+ @env = EnvironmentHelper.new
6
+ end
7
+
8
+ it "builds uniqie domain name" do
9
+ dmn = VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain.new(Object.new, @env)
10
+ first = dmn.build_domain_name(@env)
11
+ second = dmn.build_domain_name(@env)
12
+ first.should_not eq(second)
13
+ end
14
+ end
@@ -16,6 +16,10 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ['lib']
17
17
  gem.version = VagrantPlugins::ProviderLibvirt::VERSION
18
18
 
19
+ gem.add_development_dependency "rspec-core", "~> 2.12.2"
20
+ gem.add_development_dependency "rspec-expectations", "~> 2.12.1"
21
+ gem.add_development_dependency "rspec-mocks", "~> 2.12.1"
22
+
19
23
  gem.add_runtime_dependency 'fog', '~> 1.15'
20
24
  gem.add_runtime_dependency 'ruby-libvirt', '~> 0.4.0'
21
25
  gem.add_runtime_dependency 'nokogiri', '~> 1.5.9'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-libvirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Stanek
@@ -10,8 +10,50 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-25 00:00:00.000000000 Z
13
+ date: 2014-07-06 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec-core
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: 2.12.2
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: 2.12.2
29
+ - !ruby/object:Gem::Dependency
30
+ name: rspec-expectations
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 2.12.1
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 2.12.1
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec-mocks
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 2.12.1
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 2.12.1
15
57
  - !ruby/object:Gem::Dependency
16
58
  name: fog
17
59
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +180,9 @@ files:
138
180
  - lib/vagrant-libvirt/util/timer.rb
139
181
  - lib/vagrant-libvirt/version.rb
140
182
  - locales/en.yml
183
+ - spec/spec_helper.rb
184
+ - spec/support/environment_helper.rb
185
+ - spec/vagrant-libvirt/action/set_name_of_domain_spec.rb
141
186
  - tools/prepare_redhat_for_box.sh
142
187
  - vagrant-libvirt.gemspec
143
188
  homepage: https://github.com/pradels/vagrant-libvirt
@@ -164,4 +209,7 @@ rubygems_version: 2.2.2
164
209
  signing_key:
165
210
  specification_version: 4
166
211
  summary: Vagrant provider for libvirt.
167
- test_files: []
212
+ test_files:
213
+ - spec/spec_helper.rb
214
+ - spec/support/environment_helper.rb
215
+ - spec/vagrant-libvirt/action/set_name_of_domain_spec.rb