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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e2ddf654357669ce50978cf4616b55f25244cbf
4
- data.tar.gz: 483e8a3ba68b7995367b40af91791b1aca24e5e0
3
+ metadata.gz: 0be32008f934bc0cd785a217a37345c10f635774
4
+ data.tar.gz: ca65a7a9f88ffedaec11f93f3c51aecb603b0388
5
5
  SHA512:
6
- metadata.gz: bb485c2bb8ea145d9247945efc5d2a7f8d520e7f9b83c3e810a3508e1fc86a24c10541bcf16cb919c11544a68a216df02ce4fd39b3fc9d01819e6d501726335b
7
- data.tar.gz: 33fa85e6175d55f656aacfd9d4eb685bba74eb798663972fef9684f337831f8591c6d211b87afcd16eec659786ac83621eaf57d759d7c690380cc71894ae1480
6
+ metadata.gz: 94be1cf2827ce0ea981d2d0cd5880e7639082f22281b3d715b976814d17ae034fd704a817d66174b93e25c6f8cc166f20298d58ee80686a37603e985e9420c9d
7
+ data.tar.gz: a4b15558c9613d81dbd7af5bd69196153e8469a7a85e02040a8c7920d69f8b09df3a3c7ea4534e186418193937f63ed268a13fe701f4567ee559e421ff63e3a2
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ 0.2.0 (2011-03-13)
2
+ ==================
3
+
4
+ New
5
+ ---
6
+ - Basic support for kato report
7
+
8
+
1
9
  0.1.1 (2011-03-11)
2
10
  ==================
3
11
 
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  class Stackadmin
4
4
  # Gem version
5
- VERSION = '0.1.1'
5
+ VERSION = '0.2.0'
6
6
  end
data/lib/stackadmin.rb CHANGED
@@ -2,6 +2,6 @@
2
2
  #
3
3
  # Utility class for administering Stackato nodes & clusters.
4
4
 
5
- %w( version net-ssh base exceptions audit yaml patch ).each do |rb|
5
+ %w( version net-ssh base exceptions audit yaml patch log ).each do |rb|
6
6
  require_relative "stackadmin/#{rb}"
7
7
  end
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
@@ -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.1.1
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 00:00:00.000000000 Z
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