awslanes 0.0.1 → 0.0.2

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