testlab 0.6.14 → 0.6.15

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.
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem "json" if (RUBY_VERSION == "1.8.7")
4
+ gem "activesupport", "< 4.0.0" if (RUBY_VERSION < "1.9.3")
4
5
 
5
6
  gemspec
@@ -21,17 +21,18 @@ class TestLab
21
21
  self.container.node.ssh.exec(%(sudo chroot #{self.container.fs_root} /bin/bash -c '#{groupadd_command}'))
22
22
  end
23
23
 
24
- useradd_command = %W(useradd --create-home --shell /bin/bash --groups sudo --password #{self.password})
24
+ useradd_command = %W(useradd --create-home --shell /bin/bash --groups sudo)
25
25
  useradd_command << "--uid #{self.uid}" if !self.uid.nil?
26
26
  useradd_command << "--gid #{self.gid}" if !self.gid.nil?
27
27
  useradd_command << self.id
28
28
  useradd_command = useradd_command.flatten.compact.join(' ')
29
29
 
30
- self.container.node.ssh.exec(%(sudo chroot #{self.container.fs_root} /bin/bash -c '#{useradd_command}'))
30
+ self.container.lxc.attach(%(-- /bin/bash -c '#{useradd_command}'))
31
+ self.container.lxc.attach(%(-- /bin/bash -c 'echo "#{self.id}:#{self.password}" | chpasswd'))
31
32
  end
32
33
 
33
34
  # ensure the user user gets our node user key
34
- user_home_dir = File.join(self.container.fs_root, ((self.id == "root") ? %(/root) : %(/home/#{self.id})))
35
+ user_home_dir = File.join(self.container.fs_root, self.home_dir)
35
36
  user_authkeys = File.join(user_home_dir, ".ssh", "authorized_keys")
36
37
  user_authkeys2 = File.join(user_home_dir, ".ssh", "authorized_keys2")
37
38
 
@@ -40,10 +41,23 @@ class TestLab
40
41
  user_authkeys2 => node_authkeys
41
42
  }
42
43
 
44
+ public_identities = Array.new
45
+ !self.public_identity.nil? and [self.public_identity].flatten.compact.each do |pi|
46
+ if File.exists?(pi)
47
+ public_identities << ::IO.read(pi).strip
48
+ end
49
+ end
50
+
43
51
  authkeys.each do |destination, source|
44
52
  @ui.logger.info { "SOURCE: #{source} >>> #{destination}" }
45
53
  self.container.node.ssh.exec(%(sudo mkdir -pv #{File.dirname(destination)}))
54
+
46
55
  self.container.node.ssh.exec(%(sudo grep "$(cat #{source})" #{destination} || sudo cat #{source} | sudo tee -a #{destination}))
56
+
57
+ public_identities.each do |pi|
58
+ self.container.node.ssh.exec(%(sudo grep "#{pi}" #{destination} || sudo echo "#{pi}" | sudo tee -a #{destination}))
59
+ end
60
+
47
61
  self.container.node.ssh.exec(%(sudo chmod -v 644 #{destination}))
48
62
  end
49
63
 
data/lib/testlab/user.rb CHANGED
@@ -19,6 +19,7 @@ class TestLab
19
19
  attribute :password
20
20
 
21
21
  attribute :identity
22
+ attribute :public_identity
22
23
 
23
24
  attribute :uid
24
25
  attribute :gid
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "0.6.14"
4
+ VERSION = "0.6.15"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.14
4
+ version: 0.6.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -301,12 +301,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
301
  - - ! '>='
302
302
  - !ruby/object:Gem::Version
303
303
  version: '0'
304
+ segments:
305
+ - 0
306
+ hash: -738732606304836077
304
307
  required_rubygems_version: !ruby/object:Gem::Requirement
305
308
  none: false
306
309
  requirements:
307
310
  - - ! '>='
308
311
  - !ruby/object:Gem::Version
309
312
  version: '0'
313
+ segments:
314
+ - 0
315
+ hash: -738732606304836077
310
316
  requirements: []
311
317
  rubyforge_project:
312
318
  rubygems_version: 1.8.25