stackadmin 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG +8 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +5 -0
- data/README.md +0 -1
- data/lib/stackadmin/log.rb +54 -0
- data/lib/stackadmin/version.rb +1 -1
- data/lib/stackadmin.rb +1 -1
- data/stackadmin.gemspec +2 -0
- data/test/stackadmin_test.rb +24 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0be32008f934bc0cd785a217a37345c10f635774
|
4
|
+
data.tar.gz: ca65a7a9f88ffedaec11f93f3c51aecb603b0388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94be1cf2827ce0ea981d2d0cd5880e7639082f22281b3d715b976814d17ae034fd704a817d66174b93e25c6f8cc166f20298d58ee80686a37603e985e9420c9d
|
7
|
+
data.tar.gz: a4b15558c9613d81dbd7af5bd69196153e8469a7a85e02040a8c7920d69f8b09df3a3c7ea4534e186418193937f63ed268a13fe701f4567ee559e421ff63e3a2
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
ruby '2.0.0'
|
3
3
|
|
4
|
+
gem 'net-scp', '~> 1.2.1'
|
4
5
|
gem 'net-ssh', '~> 2.9.2'
|
5
6
|
gem 'json', '~> 1.8.2'
|
6
7
|
|
@@ -8,6 +9,7 @@ group :development do
|
|
8
9
|
gem 'minitest', '~> 4.3.2'
|
9
10
|
gem 'minitest-reporters', '~> 0.14.24'
|
10
11
|
gem 'rake', '~> 10.4.2'
|
12
|
+
gem 'redcarpet', '~> 3.2.2'
|
11
13
|
gem 'vagrant-wrapper', '~> 2.0.2'
|
12
14
|
gem 'yard', '~> 0.8.7.6'
|
13
15
|
end
|
data/Gemfile.lock
CHANGED
@@ -11,11 +11,14 @@ GEM
|
|
11
11
|
builder
|
12
12
|
minitest (>= 2.12, < 5.0)
|
13
13
|
powerbar
|
14
|
+
net-scp (1.2.1)
|
15
|
+
net-ssh (>= 2.6.5)
|
14
16
|
net-ssh (2.9.2)
|
15
17
|
powerbar (1.0.12)
|
16
18
|
ansi (~> 1.5.0)
|
17
19
|
hashie (>= 1.1.0)
|
18
20
|
rake (10.4.2)
|
21
|
+
redcarpet (3.2.2)
|
19
22
|
vagrant-wrapper (2.0.2)
|
20
23
|
yard (0.8.7.6)
|
21
24
|
|
@@ -26,7 +29,9 @@ DEPENDENCIES
|
|
26
29
|
json (~> 1.8.2)
|
27
30
|
minitest (~> 4.3.2)
|
28
31
|
minitest-reporters (~> 0.14.24)
|
32
|
+
net-scp (~> 1.2.1)
|
29
33
|
net-ssh (~> 2.9.2)
|
30
34
|
rake (~> 10.4.2)
|
35
|
+
redcarpet (~> 3.2.2)
|
31
36
|
vagrant-wrapper (~> 2.0.2)
|
32
37
|
yard (~> 0.8.7.6)
|
data/README.md
CHANGED
@@ -54,7 +54,6 @@ That last command assumes that your personal public key is located in `~/.ssh/ke
|
|
54
54
|
```
|
55
55
|
bundle exec rake test:setup_env['~/.ssh/certs/me.pub']
|
56
56
|
```
|
57
|
-
where `<pub_key_location>` is the path to your public key.
|
58
57
|
|
59
58
|
You can also provide the public key location when using `rake test`:
|
60
59
|
```
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'net/scp'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rubygems/package'
|
6
|
+
require 'zlib'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
require_relative 'base'
|
10
|
+
require_relative 'net-ssh'
|
11
|
+
|
12
|
+
class Stackadmin
|
13
|
+
# Retrieve a report from the targeted Stackato
|
14
|
+
# @param destination [String] where to save the report
|
15
|
+
def report(destination = '.')
|
16
|
+
tarball = nil
|
17
|
+
Net::SSH.start(@id, 'stackato', port: @port) do |ssh|
|
18
|
+
location = ssh.exec_sc!('kato report')[:stdout].match(/^Report generated at (.+)\. /)[1]
|
19
|
+
tarball = StringIO.new(ssh.scp.download!(location))
|
20
|
+
end
|
21
|
+
|
22
|
+
decompress_report(tarball, destination)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Decompresses a report tarball to a specified location
|
28
|
+
# @param report [StringIO] in-memory buffer of the report tarball
|
29
|
+
# @param destination [String] where to decompress the report
|
30
|
+
# @see http://old.thoughtsincomputation.com/posts/tar-and-a-few-feathers-in-ruby Yanked from TiC
|
31
|
+
def decompress_report(tarball, destination)
|
32
|
+
# Ungzip
|
33
|
+
z = Zlib::GzipReader.new(tarball)
|
34
|
+
unzipped = StringIO.new(z.read)
|
35
|
+
z.close
|
36
|
+
|
37
|
+
# Untar
|
38
|
+
Gem::Package::TarReader.new unzipped do |tar|
|
39
|
+
tar.each do |tarfile|
|
40
|
+
destination_file = File.join(destination, tarfile.full_name)
|
41
|
+
|
42
|
+
if tarfile.directory?
|
43
|
+
FileUtils.mkdir_p(destination_file)
|
44
|
+
else
|
45
|
+
destination_directory = File.dirname(destination_file)
|
46
|
+
FileUtils.mkdir_p(destination_directory) unless File.directory?(destination_directory)
|
47
|
+
File.open(destination_file, 'wb') do |f|
|
48
|
+
f.print tarfile.read
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/stackadmin/version.rb
CHANGED
data/lib/stackadmin.rb
CHANGED
data/stackadmin.gemspec
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
|
+
spec.add_dependency 'net-scp'
|
19
20
|
spec.add_dependency 'net-ssh'
|
20
21
|
spec.add_dependency 'json'
|
21
22
|
spec.add_development_dependency 'minitest'
|
@@ -23,4 +24,5 @@ Gem::Specification.new do |spec|
|
|
23
24
|
spec.add_development_dependency 'vagrant-wrapper'
|
24
25
|
spec.add_development_dependency 'rake'
|
25
26
|
spec.add_development_dependency 'yard'
|
27
|
+
spec.add_development_dependency 'redcarpet'
|
26
28
|
end
|
data/test/stackadmin_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'fileutils'
|
1
2
|
require 'minitest/autorun'
|
2
3
|
require 'minitest/reporters'
|
3
4
|
require_relative '../lib/stackadmin'
|
@@ -5,6 +6,7 @@ require_relative '../lib/stackadmin'
|
|
5
6
|
MiniTest::Reporters.use! [MiniTest::Reporters::SpecReporter.new]
|
6
7
|
|
7
8
|
TEST_ENV = '127.0.0.1'
|
9
|
+
TEMP_DIR = File.expand_path('tmp')
|
8
10
|
|
9
11
|
describe Stackadmin do
|
10
12
|
subject { Stackadmin.new(TEST_ENV, 2222) }
|
@@ -27,6 +29,28 @@ describe Stackadmin do
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
32
|
+
describe 'logging' do
|
33
|
+
before do
|
34
|
+
@tmp_dir_exists = File.exist?(TEMP_DIR)
|
35
|
+
if @tmp_dir_exists
|
36
|
+
raise "Desired temporary directory \"#{TEMP_DIR}\" is unavailable!"
|
37
|
+
else
|
38
|
+
FileUtils.mkdir_p(TEMP_DIR)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
after { FileUtils.rm_rf(TEMP_DIR) unless @tmp_dir_exists }
|
43
|
+
|
44
|
+
describe 'report' do
|
45
|
+
it 'downloads a report to the current directory by default' do
|
46
|
+
Dir.chdir(TEMP_DIR) do
|
47
|
+
subject.report
|
48
|
+
assert File.directory?(File.join(TEMP_DIR, 'stackato-report'))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
30
54
|
describe 'auditing' do
|
31
55
|
it 'retrieves the Stackato version' do
|
32
56
|
subject.version.must_equal '3.4.2'
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackadmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andres Rojas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: net-scp
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: net-ssh
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - '>='
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: redcarpet
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description:
|
112
140
|
email:
|
113
141
|
- andres.rojas@mtnsat.com
|
@@ -125,6 +153,7 @@ files:
|
|
125
153
|
- lib/stackadmin/audit.rb
|
126
154
|
- lib/stackadmin/base.rb
|
127
155
|
- lib/stackadmin/exceptions.rb
|
156
|
+
- lib/stackadmin/log.rb
|
128
157
|
- lib/stackadmin/net-ssh.rb
|
129
158
|
- lib/stackadmin/patch.rb
|
130
159
|
- lib/stackadmin/version.rb
|