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 +4 -4
- data/lib/vagrant-libvirt/action/set_name_of_domain.rb +30 -18
- data/lib/vagrant-libvirt/version.rb +1 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/support/environment_helper.rb +36 -0
- data/spec/vagrant-libvirt/action/set_name_of_domain_spec.rb +14 -0
- data/vagrant-libvirt.gemspec +4 -0
- metadata +51 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3dfc179b111aedecd88900df94faec1f9d949c88
|
4
|
+
data.tar.gz: e829ca23a1935b411bbdeddc78b57229c13c6014
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
9
|
-
@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
|
-
|
14
|
-
|
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
|
-
|
26
|
-
|
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
|
-
|
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
|
-
|
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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|
data/vagrant-libvirt.gemspec
CHANGED
@@ -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.
|
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
|
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
|