stackadmin 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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