awslanes 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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/lanes.rb +56 -54
  3. data/lib/lanes/version.rb +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f486f2c037fce100109559631026a4d7931b4919
4
- data.tar.gz: 3f61bf12739800e7a0244106ab8ab168496022f4
3
+ metadata.gz: 5e7eb766d1083a44fa8002155a81c1cb6af9e5cf
4
+ data.tar.gz: 071f6c24c852a18788f22cf92ead1d8965d95d88
5
5
  SHA512:
6
- metadata.gz: 72c8d2819328dc9b3506c57aba600ec84ad1be191539f74ff8cc036f1bac42852c40a5ea66bd0baa19e26e0c0d6dfbe94dd29f65f2cc73d24284823537e318ed
7
- data.tar.gz: 5adfdabee2bcdf407c54868288920f10bd2f5fb923bb7354d9b6fddfc426ebde3fb55601abb47d2de211563ac59f59c9494e9dd1d75e37819431426cdf246e24
6
+ metadata.gz: 41c4c032841db120724ef2264b2d8b68c5d8d941c92adf472d11446f2dab3d7e15a4c23cf8e0c59b6e29cab5884f8df8ce6779425bf31147a7d19bcb109a91cd
7
+ data.tar.gz: 662db8edaa74645b8ed87f086510775831dd142f3606930a5b18cada5fb4ea40f0e74e4ba01be640a587b925c9254080a35de191b8b5c93bbd195c8cd17ae321
data/lib/lanes.rb CHANGED
@@ -3,8 +3,7 @@ require "lanes/aws"
3
3
  require "lanes/props"
4
4
  require "thor"
5
5
  require 'yaml'
6
- require 'AwsCli'
7
- require 'AwsCli/CLI/EC2/Instances'
6
+ require 'awscli'
8
7
  require 'rest_client'
9
8
 
10
9
  class Lanes < Thor
@@ -36,6 +35,7 @@ class Lanes < Thor
36
35
  method_option :urlConfirm, :type => :string
37
36
  method_option :urlConfirmTimeout, :type => :numeric
38
37
  method_option :v, :type => :boolean
38
+ method_option :confirm, :type => :boolean
39
39
  desc "sh [LANE] ", "Executes a command on all machines with support for confirming an endpoint is available after"
40
40
  def sh(lane)
41
41
  servers = AWS.instance.fetchServers(lane)
@@ -53,67 +53,69 @@ class Lanes < Thor
53
53
 
54
54
  if options[:confirm] then
55
55
  puts "Confirmed via command line. Moving forward with execution"
56
+ confirm = 'CONFIRM'
56
57
  else
57
58
  command = options[:cmd].join(' ')
58
59
  confirm = ask "Type CONFIRM to execute \"#{command} \" on these machines:"
59
- if confirm == 'CONFIRM' then
60
- servers.each{ |server|
61
- Net::SSH.start( server[:ip], 'ec2-user',
62
- :keys => [identity],
63
- # :verbose => :debug,
64
- :encryption => "blowfish-cbc",
65
- :compression => "zlib",
66
- :host_key => "ssh-rsa") do |ssh|
67
- puts "Executing on %{name} ( %{ip} ):\t #{command} \n" % server
68
- stdout = ''
69
- ssh.exec!(command) do |channel, stream, data|
70
- stdout << data
71
- end
72
- puts "Completed. %{name}\n\tOutput: #{stdout}\n\n " % server
60
+ end
61
+
62
+ if confirm == 'CONFIRM' then
63
+ servers.each{ |server|
64
+ Net::SSH.start( server[:ip], 'ec2-user',
65
+ :keys => [identity],
66
+ # :verbose => :debug,
67
+ :encryption => "blowfish-cbc",
68
+ :compression => "zlib",
69
+ :host_key => "ssh-rsa") do |ssh|
70
+ puts "Executing on %{name} ( %{ip} ):\t #{command} \n" % server
71
+ stdout = ''
72
+ ssh.exec!(command) do |channel, stream, data|
73
+ stdout << data
73
74
  end
74
- }
75
-
76
-
77
- confirmPath = options[:urlConfirm]
78
- if confirmPath != nil then
79
- confirmTimeout = (options[:urlConfirmTimeout] or 30);
80
- startTime = Time.new.to_i
81
-
82
- # we better sleep for a few, otherwise the shutdown won't have executed
83
- puts "Sleeping for 5 seconds, then trying the confirmation endpoint for #{confirmTimeout} seconds..."
84
- sleep 5
85
- while Time.new.to_i - startTime < confirmTimeout && servers.length > 0 do
86
- servers.each_with_index{ |server, index|
87
- begin
88
- res = RestClient.get (confirmPath % server)
89
- if res.code >= 200 && res.code < 300 then
90
- puts "\t => #{server[:ip]} responded with #{res.code}"
91
- servers.delete_at(index)
92
- else
93
- puts "\t XX #{server[:ip]} responded with #{res.code}" if options[:v]
94
- end
95
- rescue => e
96
- puts "\t XX #{server[:ip]} connection failed: #{e}" if options[:v]
75
+ puts "Completed. %{name}\n\tOutput: #{stdout}\n\n " % server
76
+ end
77
+ }
78
+
79
+
80
+ confirmPath = options[:urlConfirm]
81
+ if confirmPath != nil then
82
+ confirmTimeout = (options[:urlConfirmTimeout] or 30);
83
+ startTime = Time.new.to_i
84
+
85
+ # we better sleep for a few, otherwise the shutdown won't have executed
86
+ puts "Sleeping for 5 seconds, then trying the confirmation endpoint for #{confirmTimeout} seconds..."
87
+ sleep 5
88
+ while Time.new.to_i - startTime < confirmTimeout && servers.length > 0 do
89
+ servers.each_with_index{ |server, index|
90
+ begin
91
+ res = RestClient.get (confirmPath % server)
92
+ if res.code >= 200 && res.code < 300 then
93
+ puts "\t => #{server[:ip]} responded with #{res.code}"
94
+ servers.delete_at(index)
95
+ else
96
+ puts "\t XX #{server[:ip]} responded with #{res.code}" if options[:v]
97
97
  end
98
- }
98
+ rescue => e
99
+ puts "\t XX #{server[:ip]} connection failed: #{e}" if options[:v]
100
+ end
101
+ }
99
102
 
100
- sleep 5 if servers.length > 0
101
- puts "\t => #{servers.length} server(s) remaining..." if servers.length > 0
102
- end
103
+ sleep 5 if servers.length > 0
104
+ puts "\t => #{servers.length} server(s) remaining..." if servers.length > 0
105
+ end
103
106
 
104
- if servers.length == 0 then
105
- puts "Successfully confirmed endpoints responded with a 2XX"
106
- else
107
- puts "The following server(s) did not respond with a 2XX:"
108
- servers.each{ |server|
109
- puts "\t%{name} (%{lane}) \t %{ip} \t %{id} " % server
110
- }
111
- end
107
+ if servers.length == 0 then
108
+ puts "Successfully confirmed endpoints responded with a 2XX"
109
+ else
110
+ puts "The following server(s) did not respond with a 2XX:"
111
+ servers.each{ |server|
112
+ puts "\t%{name} (%{lane}) \t %{ip} \t %{id} " % server
113
+ }
112
114
  end
113
- else
114
- puts 'Aborted!'
115
- exit 1
116
115
  end
116
+ else
117
+ puts 'Aborted!'
118
+ exit 1
117
119
  end
118
120
  end
119
121
 
data/lib/lanes/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module AwsLanes
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awslanes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Welch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-02 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.0.2
123
+ rubygems_version: 2.1.11
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Manage "lanes" of AWS machines