linux_container 1.6 → 1.7
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/CHANGELOG +1 -0
- data/README.md +2 -2
- data/lib/linux_container.rb +11 -4
- data/linux_container.gemspec +12 -3
- data/test/test_all.rb +6 -1
- metadata +7 -5
- checksums.yaml +0 -15
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -4,8 +4,8 @@ This gem is an easy ruby interface to ubuntu linux containers (LXC). It
|
|
4
4
|
provides a convenient wrapper for starting Ubuntu Cloud image-based
|
5
5
|
ephemeral containers.
|
6
6
|
|
7
|
-
lxc-start-ephemeral uses
|
8
|
-
|
7
|
+
lxc-start-ephemeral uses "overlay filesystems" to start a cloned container
|
8
|
+
that uses little disk space. This container disappears when shut down.
|
9
9
|
|
10
10
|
$ gem install linux_container
|
11
11
|
|
data/lib/linux_container.rb
CHANGED
@@ -6,7 +6,7 @@ require 'tempfile'
|
|
6
6
|
class LinuxContainer
|
7
7
|
attr_accessor :name, :username, :ssh_key_path
|
8
8
|
attr_writer :ip
|
9
|
-
|
9
|
+
|
10
10
|
def self.all
|
11
11
|
`#{sudo_if_needed} lxc-ls -1`.lines.map(&:strip).uniq.map {|cname| new(name: cname) }
|
12
12
|
end
|
@@ -132,11 +132,18 @@ class LinuxContainer
|
|
132
132
|
result
|
133
133
|
end
|
134
134
|
|
135
|
+
class ProcessFailed < Exception ; end
|
136
|
+
|
135
137
|
def bg_execute(*cmd)
|
136
138
|
logfile_path = "/tmp/lxc_ephemeral_#{Time.now.to_i.to_s(36)}#{$$}#{rand(0x100000000).to_s(36)}.log"
|
137
|
-
cmdstring = "
|
138
|
-
|
139
|
-
raise "command failed: #{cmdstring.inspect}
|
139
|
+
cmdstring = "#{self.class.sudo_if_needed} #{cmd.shift} #{Shellwords.join(cmd)} >>#{logfile_path} 2>>#{logfile_path}"
|
140
|
+
pid = spawn(cmdstring, pgroup: true)
|
141
|
+
raise ProcessFailed.new("command failed: #{cmdstring.inspect}") unless pid > 0
|
142
|
+
Thread.abort_on_exception = true
|
143
|
+
Thread.new do
|
144
|
+
Process.waitpid pid
|
145
|
+
raise ProcessFailed.new("command failed: #{cmdstring.inspect}") unless $? == 0
|
146
|
+
end
|
140
147
|
logfile_path
|
141
148
|
end
|
142
149
|
|
data/linux_container.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "linux_container"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.7"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Andrew Snow"]
|
9
|
-
s.date = "2013-06-
|
9
|
+
s.date = "2013-06-23"
|
10
10
|
s.description = "Ruby gem for ephemeral LXC linux containers"
|
11
11
|
s.email = "andrew@modulus.org"
|
12
12
|
s.extra_rdoc_files = ["CHANGELOG", "README.md", "lib/linux_container.rb"]
|
@@ -15,7 +15,16 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Linux_container", "--main", "README.md"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = "linux_container"
|
18
|
-
s.rubygems_version = "
|
18
|
+
s.rubygems_version = "1.8.25"
|
19
19
|
s.summary = "Ruby gem for ephemeral LXC linux containers"
|
20
20
|
s.test_files = ["test/test_all.rb"]
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
s.specification_version = 3
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
else
|
27
|
+
end
|
28
|
+
else
|
29
|
+
end
|
21
30
|
end
|
data/test/test_all.rb
CHANGED
@@ -66,7 +66,12 @@ class TestLinuxContainer < MiniTest::Unit::TestCase
|
|
66
66
|
assert($ec.wait_for { !running? }, 'wait_for !running?')
|
67
67
|
end
|
68
68
|
|
69
|
-
|
69
|
+
def test_bg_execute_failure
|
70
|
+
assert_raises(LinuxContainer::ProcessFailed) do
|
71
|
+
$c.bg_execute 'false'
|
72
|
+
sleep 5
|
73
|
+
end
|
74
|
+
end
|
70
75
|
|
71
76
|
end
|
72
77
|
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linux_container
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.7'
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Andrew Snow
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-23 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: Ruby gem for ephemeral LXC linux containers
|
14
15
|
email: andrew@modulus.org
|
@@ -28,7 +29,6 @@ files:
|
|
28
29
|
- linux_container.gemspec
|
29
30
|
homepage: https://github.com/andys/linux_container
|
30
31
|
licenses: []
|
31
|
-
metadata: {}
|
32
32
|
post_install_message:
|
33
33
|
rdoc_options:
|
34
34
|
- --line-numbers
|
@@ -40,20 +40,22 @@ rdoc_options:
|
|
40
40
|
require_paths:
|
41
41
|
- lib
|
42
42
|
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
43
44
|
requirements:
|
44
45
|
- - ! '>='
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '0'
|
47
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
48
50
|
requirements:
|
49
51
|
- - ! '>='
|
50
52
|
- !ruby/object:Gem::Version
|
51
53
|
version: '1.2'
|
52
54
|
requirements: []
|
53
55
|
rubyforge_project: linux_container
|
54
|
-
rubygems_version:
|
56
|
+
rubygems_version: 1.8.25
|
55
57
|
signing_key:
|
56
|
-
specification_version:
|
58
|
+
specification_version: 3
|
57
59
|
summary: Ruby gem for ephemeral LXC linux containers
|
58
60
|
test_files:
|
59
61
|
- test/test_all.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MDU5NjE1MGQ4YTViMjAwMTNjMGVkZjkxNGM3NjUzZWUwMWU0NzFhZg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZGZkZjlhMjVhMzBjNzVhMTVlZTgwZjIwYjJjNTYxNTlhMzYxMmMyMw==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NmE0NmYwZGI5Y2M0MWNhODU0NTg5MWNhNjRjZTA4ZTc5ZGQ4ZTVmMTU0NTk1
|
10
|
-
MTUzODM3YjRhYmMzODg0Nzk0NzUwYTFmY2Q5YmQwMTA0MjkxZDc1MWUyYzhl
|
11
|
-
Mzg2Yzc3MGNjZTMyNGY4Yjc0MDMxYzdlZWE5ZTU3ODQ0ZDM1Mjc=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzAwMzhiNTNmNDIxZWVhMjg0ZDVlY2YzMDBkZTBhYjc0YmRmYmVjYmZkYmZj
|
14
|
-
ZTZmM2M4ZjNjYjdiNzA5Nzk2NzkyMmRkY2M1NzI0MjlkNDZmMTU5NDVkMWUx
|
15
|
-
MzQ3NTIyYjU2M2MwMjZlZDVmMmRlYWY1YTFhNjIzZjA5NDZiYTk=
|