ztk 1.2.0 → 1.3.0
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/README.md +4 -4
- data/lib/ztk/benchmark.rb +1 -1
- data/lib/ztk/ssh.rb +23 -16
- data/lib/ztk/ssh/bootstrap.rb +1 -1
- data/lib/ztk/ssh/file.rb +65 -0
- data/lib/ztk/tcp_socket_check.rb +2 -2
- data/lib/ztk/version.rb +1 -1
- metadata +5 -4
data/README.md
CHANGED
@@ -10,6 +10,10 @@ Zachary's (DevOp) Tool Kit is a general purpose utility gem, featuring a collect
|
|
10
10
|
|
11
11
|
# RESOURCES
|
12
12
|
|
13
|
+
Documentation:
|
14
|
+
|
15
|
+
* http://zpatten.github.io/ztk/
|
16
|
+
|
13
17
|
Source:
|
14
18
|
|
15
19
|
* https://github.com/zpatten/ztk
|
@@ -18,10 +22,6 @@ Issues:
|
|
18
22
|
|
19
23
|
* https://github.com/zpatten/ztk/issues
|
20
24
|
|
21
|
-
Documentation:
|
22
|
-
|
23
|
-
* http://zpatten.github.io/ztk/
|
24
|
-
|
25
25
|
# LICENSE
|
26
26
|
|
27
27
|
ZTK - Zachary's (DevOp) Tool Kit
|
data/lib/ztk/benchmark.rb
CHANGED
@@ -81,7 +81,7 @@ module ZTK
|
|
81
81
|
# after the block is yielded. This *String* should have an *sprintf*
|
82
82
|
# floating point macro in it if the benchmark is desired to be embedded
|
83
83
|
# in the given *String*.
|
84
|
-
# @option options [Boolean] :use_spinner (true)
|
84
|
+
# @option options [Boolean] :use_spinner (true) Whether or not to use the
|
85
85
|
# ZTK::Spinner while benchmarking.
|
86
86
|
#
|
87
87
|
# @yield Block should execute the tasks to be benchmarked.
|
data/lib/ztk/ssh.rb
CHANGED
@@ -119,32 +119,40 @@ module ZTK
|
|
119
119
|
autoload :Command, 'ztk/ssh/command'
|
120
120
|
autoload :Download, 'ztk/ssh/download'
|
121
121
|
autoload :Exec, 'ztk/ssh/exec'
|
122
|
+
autoload :File, 'ztk/ssh/file'
|
122
123
|
autoload :Upload, 'ztk/ssh/upload'
|
123
124
|
|
124
125
|
include ZTK::SSH::Bootstrap
|
125
126
|
include ZTK::SSH::Command
|
126
127
|
include ZTK::SSH::Download
|
127
128
|
include ZTK::SSH::Exec
|
129
|
+
include ZTK::SSH::File
|
128
130
|
include ZTK::SSH::Upload
|
129
131
|
|
130
132
|
# @param [Hash] configuration Configuration options hash.
|
131
|
-
# @option
|
132
|
-
# @option
|
133
|
-
# @option
|
133
|
+
# @option configuration [String] :host_name Server hostname to connect to.
|
134
|
+
# @option configuration [String] :user Username to use for authentication.
|
135
|
+
# @option configuration [String, Array<String>] :keys A single or series of
|
134
136
|
# identity files to use for authentication.
|
135
|
-
# @option
|
136
|
-
# @option
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
#
|
142
|
-
# @option
|
137
|
+
# @option configuration [String] :password Password to use for authentication.
|
138
|
+
# @option configuration [Integer] :timeout (60) SSH connection timeout in
|
139
|
+
# seconds to use.
|
140
|
+
# @option configuration [Boolean] :compression (false) Whether or not to use
|
141
|
+
# compression for this session.
|
142
|
+
# @option configuration [Integer] :compression_level What level of
|
143
|
+
# compression to use.
|
144
|
+
# @option configuration [String] :proxy_host_name Server hostname to proxy
|
145
|
+
# through.
|
146
|
+
# @option configuration [String] :proxy_user Username to use for proxy
|
143
147
|
# authentication.
|
144
|
-
# @option
|
145
|
-
# obtain a PTY
|
146
|
-
# @option
|
147
|
-
#
|
148
|
+
# @option configuration [Boolean] :request_pty (true) Whether or not we
|
149
|
+
# should try to obtain a PTY
|
150
|
+
# @option configuration [Boolean] :ignore_exit_status (false) Whether or not
|
151
|
+
# we should throw an exception if the exit status is not kosher.
|
152
|
+
# @option configuration [Boolean] :forward_agent (true) Whether or not to
|
153
|
+
# enable SSH agent forwarding.
|
154
|
+
# @option configuration [String, Array<String>] :proxy_keys A single or
|
155
|
+
# series of identity files to use for authentication with the proxy.
|
148
156
|
def initialize(configuration={})
|
149
157
|
super({
|
150
158
|
:forward_agent => true,
|
@@ -181,7 +189,6 @@ module ZTK
|
|
181
189
|
# process.
|
182
190
|
#
|
183
191
|
# @example Launch a console:
|
184
|
-
# $logger = ZTK::Logger.new(STDOUT)
|
185
192
|
# ssh = ZTK::SSH.new
|
186
193
|
# ssh.config do |config|
|
187
194
|
# config.user = ENV["USER"]
|
data/lib/ztk/ssh/bootstrap.rb
CHANGED
data/lib/ztk/ssh/file.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
################################################################################
|
2
|
+
#
|
3
|
+
# Author: Zachary Patten <zachary@jovelabs.net>
|
4
|
+
# Copyright: Copyright (c) Zachary Patten
|
5
|
+
# License: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
################################################################################
|
20
|
+
module ZTK
|
21
|
+
class SSH
|
22
|
+
|
23
|
+
module File
|
24
|
+
require 'tempfile'
|
25
|
+
|
26
|
+
# Opens a temporary local file, yielding this to the supplied block. Once
|
27
|
+
# the block returns the temporary file is uploaded to the remote host and
|
28
|
+
# installed as the supplied target.
|
29
|
+
#
|
30
|
+
# If the optional 'chown' or 'chmod' options are supplied then their
|
31
|
+
# respective actions will be taken on the target file on the remote host.
|
32
|
+
#
|
33
|
+
# @param [Hash] options The options hash.
|
34
|
+
# @option options [String] :target The target file on the remote host.
|
35
|
+
# @option options [String] :chown A user:group representation of who
|
36
|
+
# to change ownership of the target file to (i.e. 'root:root').
|
37
|
+
# @option options [String] :chmod An octal file mode which to set the
|
38
|
+
# target file to (i.e. '0755').
|
39
|
+
# @return [Boolean] Returns true if successfull.
|
40
|
+
def file(options={}, &block)
|
41
|
+
target = options[:target]
|
42
|
+
chown = options[:chown]
|
43
|
+
chmod = options[:chmod]
|
44
|
+
|
45
|
+
target.nil? and raise SSHError, "You must supply a target file!"
|
46
|
+
!block_given? and raise SSHError, "You must supply a block!"
|
47
|
+
|
48
|
+
tempfile = Tempfile.new("tempfile")
|
49
|
+
::File.open(tempfile, 'w') do |file|
|
50
|
+
yield(file)
|
51
|
+
end
|
52
|
+
self.upload(tempfile.path, tempfile.path)
|
53
|
+
|
54
|
+
self.exec(%(sudo mv -v #{tempfile.path} #{target}), :silence => true)
|
55
|
+
|
56
|
+
self.exec(%(sudo chown -v #{chown} #{target}), :silence => true) if !chown.nil?
|
57
|
+
self.exec(%(sudo chmod -v #{chmod} #{target}), :silence => true) if !chmod.nil?
|
58
|
+
|
59
|
+
true
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
data/lib/ztk/tcp_socket_check.rb
CHANGED
@@ -101,7 +101,7 @@ module ZTK
|
|
101
101
|
# method will timeout and return false after the amount of seconds specified
|
102
102
|
# in *config.timeout* has passed if the socket has not become ready.
|
103
103
|
#
|
104
|
-
# @return [Boolean] Returns true or false depending on
|
104
|
+
# @return [Boolean] Returns true or false depending on Whether the socket
|
105
105
|
# is ready or not.
|
106
106
|
def ready?
|
107
107
|
config.host.nil? and log_and_raise(TCPSocketCheckError, "You must supply a host!")
|
@@ -128,7 +128,7 @@ module ZTK
|
|
128
128
|
# method will timeout and return false after the amount of seconds specified
|
129
129
|
# in *config.wait* has passed if the socket has not become ready.
|
130
130
|
#
|
131
|
-
# @return [Boolean] Returns true or false depending on
|
131
|
+
# @return [Boolean] Returns true or false depending on Whether the socket
|
132
132
|
# became ready or not.
|
133
133
|
def wait
|
134
134
|
config.ui.logger.debug { "Waiting for socket to become available; timeout after #{config.wait} seconds." }
|
data/lib/ztk/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ztk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: erubis
|
@@ -204,6 +204,7 @@ files:
|
|
204
204
|
- lib/ztk/ssh/command.rb
|
205
205
|
- lib/ztk/ssh/download.rb
|
206
206
|
- lib/ztk/ssh/exec.rb
|
207
|
+
- lib/ztk/ssh/file.rb
|
207
208
|
- lib/ztk/ssh/upload.rb
|
208
209
|
- lib/ztk/tcp_socket_check.rb
|
209
210
|
- lib/ztk/template.rb
|
@@ -245,7 +246,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
245
246
|
version: '0'
|
246
247
|
segments:
|
247
248
|
- 0
|
248
|
-
hash:
|
249
|
+
hash: 2390490628279422468
|
249
250
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
251
|
none: false
|
251
252
|
requirements:
|
@@ -254,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
255
|
version: '0'
|
255
256
|
segments:
|
256
257
|
- 0
|
257
|
-
hash:
|
258
|
+
hash: 2390490628279422468
|
258
259
|
requirements: []
|
259
260
|
rubyforge_project:
|
260
261
|
rubygems_version: 1.8.25
|