linux_container 0.1 → 0.2
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/Manifest +1 -1
- data/README.md +8 -2
- data/lib/linux_container.rb +5 -0
- data/linux_container.gemspec +4 -4
- data/test/test_all.rb +19 -10
- metadata +6 -6
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
data/README.md
CHANGED
@@ -42,6 +42,14 @@ very little disk space, which then disappears when shut down.
|
|
42
42
|
### Start an ephemeral container cloning an existing container
|
43
43
|
|
44
44
|
> e = c.start_ephemeral
|
45
|
+
> e.wait_for { ip && sshable? }
|
46
|
+
|
47
|
+
|
48
|
+
### Clone an existing container and start it in background, with 512M memlimit
|
49
|
+
|
50
|
+
> c2 = LinuxContainer.new(name: 'clonetest')
|
51
|
+
> c2.clone_from(c)
|
52
|
+
> c2.start('-d', '-s', 'lxc.cgroup.memory.limit_in_bytes=512M')
|
45
53
|
|
46
54
|
|
47
55
|
### Get existing containers
|
@@ -57,6 +65,4 @@ very little disk space, which then disappears when shut down.
|
|
57
65
|
|
58
66
|
execute, kill, wait, cgroup, ps, info, freeze, unfreeze, netstat
|
59
67
|
|
60
|
-
|
61
|
-
|
62
68
|
|
data/lib/linux_container.rb
CHANGED
@@ -33,6 +33,11 @@ class LinuxContainer
|
|
33
33
|
define_method(cmd) {|*args| lxc_execute(cmd, *args) }
|
34
34
|
end
|
35
35
|
|
36
|
+
def clone_from(from, *args)
|
37
|
+
fromname = self.class === from ? from.name : from
|
38
|
+
lxc_execute('clone', '-o',fromname, *args)
|
39
|
+
end
|
40
|
+
|
36
41
|
def start_ephemeral
|
37
42
|
args = ['lxc-start-ephemeral','-U','aufs','-u',username,'-o',name]
|
38
43
|
logfile = bg_execute(*args)
|
data/linux_container.gemspec
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "linux_container"
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2"
|
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-02-
|
9
|
+
s.date = "2013-02-10"
|
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"]
|
13
|
-
s.files = ["CHANGELOG", "README.md", "Rakefile", "lib/linux_container.rb", "test/test_all.rb", "
|
13
|
+
s.files = ["CHANGELOG", "Manifest", "README.md", "Rakefile", "lib/linux_container.rb", "test/test_all.rb", "linux_container.gemspec"]
|
14
14
|
s.homepage = "https://github.com/andys/linux_container"
|
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 = "1.8.
|
18
|
+
s.rubygems_version = "1.8.24"
|
19
19
|
s.summary = "Ruby gem for ephemeral LXC linux containers"
|
20
20
|
s.test_files = ["test/test_all.rb"]
|
21
21
|
|
data/test/test_all.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
|
-
|
1
|
+
at_exit do
|
2
|
+
puts "Destroying test containers"
|
3
|
+
File.unlink($sshkey) rescue nil
|
4
|
+
($ec.destroy '-f' if $ec) rescue nil
|
5
|
+
($c2.destroy '-f' if $c2) rescue nil
|
6
|
+
$c.destroy '-f'
|
7
|
+
end
|
2
8
|
|
3
9
|
require 'minitest/autorun'
|
10
|
+
require "#{File.dirname(__FILE__)}/../lib/linux_container"
|
4
11
|
|
5
12
|
class TestLinuxContainer < MiniTest::Unit::TestCase
|
6
13
|
def self.startup
|
14
|
+
puts "Creating test containers"
|
7
15
|
$sshkey = "/tmp/linuxcontainergemtestssh#{$$}"
|
8
16
|
`ssh-keygen -q -t rsa -f #{$sshkey} -N ''` unless File.exists?($sshkey)
|
9
17
|
$c = LinuxContainer.new(name: 'linuxcontainergemtest', ssh_key_path: $sshkey)
|
10
|
-
$c.create
|
18
|
+
$c.create or raise "Create failed"
|
11
19
|
end
|
12
20
|
|
13
21
|
def test_state
|
@@ -26,6 +34,14 @@ class TestLinuxContainer < MiniTest::Unit::TestCase
|
|
26
34
|
assert_includes LinuxContainer.all.map(&:name), 'linuxcontainergemtest'
|
27
35
|
end
|
28
36
|
|
37
|
+
def test_clone
|
38
|
+
$c2 = LinuxContainer.new name: 'linuxcontainergemtest2'
|
39
|
+
$c2.clone_from $c.name
|
40
|
+
assert_includes LinuxContainer.all.map(&:name), 'linuxcontainergemtest2'
|
41
|
+
$c2.destroy('-f')
|
42
|
+
refute_includes LinuxContainer.all.map(&:name), 'linuxcontainergemtest2'
|
43
|
+
end
|
44
|
+
|
29
45
|
def test_ephemeral
|
30
46
|
assert($ec = $c.start_ephemeral)
|
31
47
|
assert_match /^linuxcontainergemtest.+/, $ec.name
|
@@ -38,11 +54,4 @@ class TestLinuxContainer < MiniTest::Unit::TestCase
|
|
38
54
|
end
|
39
55
|
end
|
40
56
|
|
41
|
-
|
42
|
-
|
43
|
-
MiniTest::Unit.after_tests do
|
44
|
-
File.unlink($sshkey) rescue nil
|
45
|
-
($ec.destroy '-f' if $ec) rescue nil
|
46
|
-
$c.destroy '-f'
|
47
|
-
end
|
48
|
-
TestLinuxContainer.startup
|
57
|
+
TestLinuxContainer.startup
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linux_container
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.1'
|
5
4
|
prerelease:
|
5
|
+
version: '0.2'
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andrew Snow
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Ruby gem for ephemeral LXC linux containers
|
15
15
|
email: andrew@modulus.org
|
@@ -21,11 +21,11 @@ extra_rdoc_files:
|
|
21
21
|
- lib/linux_container.rb
|
22
22
|
files:
|
23
23
|
- CHANGELOG
|
24
|
+
- Manifest
|
24
25
|
- README.md
|
25
26
|
- Rakefile
|
26
27
|
- lib/linux_container.rb
|
27
28
|
- test/test_all.rb
|
28
|
-
- Manifest
|
29
29
|
- linux_container.gemspec
|
30
30
|
homepage: https://github.com/andys/linux_container
|
31
31
|
licenses: []
|
@@ -40,20 +40,20 @@ rdoc_options:
|
|
40
40
|
require_paths:
|
41
41
|
- lib
|
42
42
|
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
43
|
requirements:
|
45
44
|
- - ! '>='
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: '0'
|
48
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
47
|
none: false
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
49
|
requirements:
|
51
50
|
- - ! '>='
|
52
51
|
- !ruby/object:Gem::Version
|
53
52
|
version: '1.2'
|
53
|
+
none: false
|
54
54
|
requirements: []
|
55
55
|
rubyforge_project: linux_container
|
56
|
-
rubygems_version: 1.8.
|
56
|
+
rubygems_version: 1.8.24
|
57
57
|
signing_key:
|
58
58
|
specification_version: 3
|
59
59
|
summary: Ruby gem for ephemeral LXC linux containers
|