linux_container 1.7 → 1.8
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.
- checksums.yaml +15 -0
- data/CHANGELOG +1 -0
- data/README.md +4 -0
- data/lib/linux_container.rb +10 -4
- data/linux_container.gemspec +3 -12
- data/test/test_all.rb +7 -1
- metadata +5 -7
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
ZWU5MGEzNTc4MWE5MWNiNTdiMGNiMWM4N2U2ZTBjZmNhZTVlZGM3MA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
NGYwYjgxYTU5NTNhZDkwOWUyNDk0YTlmNThhYWRiYTA0OTM1ZjU5OA==
|
|
7
|
+
!binary "U0hBNTEy":
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
MGE2OWE2ZGM2NjdkZWY5ZmU0N2EyNmQ3ZjBhMTc3NDY1ZmEzOGJlMTNmYzQ0
|
|
10
|
+
YTQzNTcyYjk3N2Y1ZTlkNjJiYjRhOTc2YzRiODY0OTcyMjA4MGE4ZDYxNjFi
|
|
11
|
+
M2YzNTU5NjVjZmQ5MDcwOTVhYWYxM2Y4ODQ1YzE0NTJmZjZjMWM=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
Nzc0NWE3YTE2MDU3ZDE1NDk1YjBhM2I3N2Y3MGIwZDViYjEwNjU0NjZjY2Jm
|
|
14
|
+
NWQ3MjA4MGYwZjc1NjFjYjUwYWIwNzc3NmUwOGIzZDM0MDRhMWIxMGRhNTRm
|
|
15
|
+
YjU5MDk0Yjk0MGZkZWNkMDkwMDUyOGFhYTZkNGM4NDAyYmY4NGY=
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
|
@@ -68,6 +68,10 @@ that uses little disk space. This container disappears when shut down.
|
|
|
68
68
|
|
|
69
69
|
> c.destroy '-f'
|
|
70
70
|
|
|
71
|
+
### SSH a long running command
|
|
72
|
+
|
|
73
|
+
> c.ssh('mason build') {|log| print "->#{log}" }
|
|
74
|
+
|
|
71
75
|
### other commands
|
|
72
76
|
|
|
73
77
|
execute, kill, wait, cgroup, ps, info, freeze, unfreeze, netstat
|
data/lib/linux_container.rb
CHANGED
|
@@ -71,8 +71,8 @@ class LinuxContainer
|
|
|
71
71
|
self.class.new(name: newname, ssh_key_path: ssh_key_path, username: username)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
def ssh(cmd)
|
|
75
|
-
execute('ssh', *ssh_args, "#{username}@#{ip}", cmd)
|
|
74
|
+
def ssh(cmd, &bl)
|
|
75
|
+
execute('ssh', *ssh_args, "#{username}@#{ip}", cmd, &bl)
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def scp_to(srcpath, dstpath, *args)
|
|
@@ -85,7 +85,7 @@ class LinuxContainer
|
|
|
85
85
|
|
|
86
86
|
def ssh_args
|
|
87
87
|
raise "cannot ssh without ip" unless ip
|
|
88
|
-
args = ['-o','StrictHostKeyChecking=no','-o','UserKnownHostsFile=/dev/null']
|
|
88
|
+
args = ['-o','StrictHostKeyChecking=no','-o','UserKnownHostsFile=/dev/null','-q']
|
|
89
89
|
args.push('-i', ssh_key_path) if ssh_key_path
|
|
90
90
|
args
|
|
91
91
|
end
|
|
@@ -127,7 +127,13 @@ class LinuxContainer
|
|
|
127
127
|
|
|
128
128
|
def execute(*cmd)
|
|
129
129
|
cmdstring = "#{self.class.sudo_if_needed} #{cmd.shift} #{Shellwords.join(cmd)}"
|
|
130
|
-
result =
|
|
130
|
+
result = ''
|
|
131
|
+
IO.popen("#{cmdstring} 2>&1", 'r') do |io|
|
|
132
|
+
io.each_line do |line|
|
|
133
|
+
yield line if block_given?
|
|
134
|
+
result << line
|
|
135
|
+
end
|
|
136
|
+
end
|
|
131
137
|
raise "command failed: #{cmdstring.inspect}\n#{result}" unless $? == 0
|
|
132
138
|
result
|
|
133
139
|
end
|
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.8"
|
|
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-
|
|
9
|
+
s.date = "2013-08-20"
|
|
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,16 +15,7 @@ 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 = "2.0.3"
|
|
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
|
|
30
21
|
end
|
data/test/test_all.rb
CHANGED
|
@@ -49,7 +49,13 @@ class TestLinuxContainer < MiniTest::Unit::TestCase
|
|
|
49
49
|
assert($ec.wait_for { running? }, 'wait_for running?')
|
|
50
50
|
assert($ec.wait_for { ip }, 'wait_for ip')
|
|
51
51
|
assert($ec.wait_for { sshable? }, 'wait_for sshable?')
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
assert_equal "hi!\n", $ec.ssh('echo hi!')
|
|
54
|
+
|
|
55
|
+
yield_result = nil
|
|
56
|
+
$ec.execute('echo hi!') {|line| yield_result = line }
|
|
57
|
+
assert_equal "hi!\n", yield_result
|
|
58
|
+
|
|
53
59
|
File.unlink('/tmp/lsb-release') rescue nil
|
|
54
60
|
$ec.scp_from('/etc/lsb-release', '/tmp/lsb-release')
|
|
55
61
|
assert File.exists?('/tmp/lsb-release')
|
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: linux_container
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: '1.8'
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Andrew Snow
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
11
|
+
date: 2013-08-20 00:00:00.000000000 Z
|
|
13
12
|
dependencies: []
|
|
14
13
|
description: Ruby gem for ephemeral LXC linux containers
|
|
15
14
|
email: andrew@modulus.org
|
|
@@ -29,6 +28,7 @@ files:
|
|
|
29
28
|
- linux_container.gemspec
|
|
30
29
|
homepage: https://github.com/andys/linux_container
|
|
31
30
|
licenses: []
|
|
31
|
+
metadata: {}
|
|
32
32
|
post_install_message:
|
|
33
33
|
rdoc_options:
|
|
34
34
|
- --line-numbers
|
|
@@ -40,22 +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
47
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
48
|
requirements:
|
|
51
49
|
- - ! '>='
|
|
52
50
|
- !ruby/object:Gem::Version
|
|
53
51
|
version: '1.2'
|
|
54
52
|
requirements: []
|
|
55
53
|
rubyforge_project: linux_container
|
|
56
|
-
rubygems_version:
|
|
54
|
+
rubygems_version: 2.0.3
|
|
57
55
|
signing_key:
|
|
58
|
-
specification_version:
|
|
56
|
+
specification_version: 4
|
|
59
57
|
summary: Ruby gem for ephemeral LXC linux containers
|
|
60
58
|
test_files:
|
|
61
59
|
- test/test_all.rb
|