rstuk 0.0.1 → 0.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/lib/rstuk.rb +33 -4
- data/rstuk.gemspec +1 -1
- metadata +33 -50
data/lib/rstuk.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
1
|
require 'open3'
|
2
|
+
require 'socket'
|
3
|
+
require 'timeout'
|
4
|
+
|
5
|
+
class SSHFail < RuntimeError
|
6
|
+
def initialize server, port
|
7
|
+
super "Couldn't get connection to #{server}:#{port}"
|
8
|
+
end
|
9
|
+
end
|
2
10
|
|
3
11
|
class Shell
|
4
12
|
|
5
|
-
def self.remote server, port, cmd,
|
6
|
-
|
7
|
-
|
13
|
+
def self.remote server, port, cmd, opts = {}
|
14
|
+
defaults = {exit_code: 0, timeout: 90}
|
15
|
+
opts = defaults.merge opts
|
16
|
+
self.wait_for server, port, opts[:timeout]
|
8
17
|
puts "ssh: #{cmd}"
|
9
18
|
self.do \
|
10
19
|
"ssh root@#{server} #{self.ssh_options} -p #{port} \"#{cmd}\"",
|
11
|
-
|
20
|
+
opts[:exit_code]
|
12
21
|
end
|
13
22
|
|
14
23
|
def self.local cmd, expected_exit_status = 0
|
@@ -24,6 +33,7 @@ class Shell
|
|
24
33
|
private
|
25
34
|
|
26
35
|
def self.do cmd, expected_exit_status
|
36
|
+
# We want to avoid test failures due to non English Locale
|
27
37
|
self.verify \
|
28
38
|
expected_exit_status,
|
29
39
|
*(Open3.capture3 "LANG=C; #{cmd}")
|
@@ -41,7 +51,26 @@ private
|
|
41
51
|
end
|
42
52
|
|
43
53
|
def self.ssh_options
|
54
|
+
# We want to avoid host key interactive accept question
|
44
55
|
"-o 'UserKnownHostsFile /dev/null' -o StrictHostKeyChecking=no"
|
45
56
|
end
|
46
57
|
|
58
|
+
def self.wait_for server, port, seconds
|
59
|
+
puts "Waiting for ssh."
|
60
|
+
Timeout::timeout(seconds) do
|
61
|
+
tcp_banner = nil
|
62
|
+
until tcp_banner =~ /^SSH-2.0-OpenSSH.*/
|
63
|
+
begin
|
64
|
+
socket = TCPSocket.new server, port
|
65
|
+
tcp_banner = socket.readline.strip
|
66
|
+
socket.close
|
67
|
+
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, EOFError, Errno::ETIMEDOUT
|
68
|
+
# Go through the loop again
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
rescue Timeout::Error
|
73
|
+
raise SSHFail.new server, port
|
74
|
+
end
|
75
|
+
|
47
76
|
end
|
data/rstuk.gemspec
CHANGED
metadata
CHANGED
@@ -1,48 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rstuk
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Yury Tsarev
|
14
9
|
- Theo Chatzimichos
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: fuubar
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
33
23
|
type: :runtime
|
34
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
35
31
|
description: Common library for kiwi_spec and studio_spec
|
36
|
-
email:
|
32
|
+
email:
|
37
33
|
- ytsarev@suse.com
|
38
34
|
- tchatzimichos@suse.com
|
39
35
|
executables: []
|
40
|
-
|
41
36
|
extensions: []
|
42
|
-
|
43
37
|
extra_rdoc_files: []
|
44
|
-
|
45
|
-
files:
|
38
|
+
files:
|
46
39
|
- .gitignore
|
47
40
|
- COPYING
|
48
41
|
- Gemfile
|
@@ -52,36 +45,26 @@ files:
|
|
52
45
|
- rstuk.gemspec
|
53
46
|
homepage:
|
54
47
|
licenses: []
|
55
|
-
|
56
48
|
post_install_message:
|
57
49
|
rdoc_options: []
|
58
|
-
|
59
|
-
require_paths:
|
50
|
+
require_paths:
|
60
51
|
- lib
|
61
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
53
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
|
67
|
-
|
68
|
-
- 0
|
69
|
-
version: "0"
|
70
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
59
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
segments:
|
77
|
-
- 0
|
78
|
-
version: "0"
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
79
64
|
requirements: []
|
80
|
-
|
81
65
|
rubyforge_project: rstuk
|
82
|
-
rubygems_version: 1.8.
|
66
|
+
rubygems_version: 1.8.23
|
83
67
|
signing_key:
|
84
68
|
specification_version: 3
|
85
69
|
summary: Common library for kiwi_spec and studio_spec
|
86
70
|
test_files: []
|
87
|
-
|