vagrant-libvirt 0.0.18 → 0.0.19

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: 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