awsome 0.0.59 → 0.0.60

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,10 +5,11 @@ module Awsome
5
5
 
6
6
  def self.execute(command, options={})
7
7
  command = command.join(' ') if command.is_a?(Array)
8
- if config.verbose
8
+ description = options[:task] ? "[#{options[:task]}] #{command}" : command
9
+ verbose = config.verbose && options[:verbose] != false
10
+ if verbose
9
11
  puts
10
- puts command
11
- puts '-' * [command.length, 100].min
12
+ puts description
12
13
  end
13
14
  if options[:system]
14
15
  result = system(command)
@@ -18,10 +19,11 @@ module Awsome
18
19
  result = map_table(result, options)
19
20
  end
20
21
  ensure
21
- if config.verbose
22
+ if verbose && options[:output] != false
23
+ puts '-' * description.length
22
24
  case result
23
25
  when String then puts result
24
- else ap result
26
+ else ap result # print a table perhaps..
25
27
  end
26
28
  end
27
29
  if config.stacks
@@ -48,7 +50,10 @@ module Awsome
48
50
  retries = opts[:retries] || 5
49
51
  interval = opts[:interval] || 5
50
52
  while !yield && retries > 0
51
- puts "block returned false (#{retries} more retries)..." if Awsome.config.verbose
53
+ if config.verbose
54
+ task = opts[:task] || 'block returned false'
55
+ puts "[#{retries} more retries] #{task}"
56
+ end
52
57
  sleep interval
53
58
  retries -= 1
54
59
  end
@@ -44,13 +44,23 @@ module Awsome
44
44
  'instance-type'.to_sym => properties['instance_type'],
45
45
  'availability-zone'.to_sym => properties['availability_zone']
46
46
  )
47
- Awsome::Ec2::Instance.new(Awsome.execute(cmd, columns: @@run_instance_fields, filter: /^INSTANCE/).first)
47
+ result = Awsome.execute(
48
+ cmd,
49
+ columns: @@run_instance_fields,
50
+ filter: /^INSTANCE/,
51
+ task: 'creating instance'
52
+ )
53
+ Awsome::Ec2::Instance.new(result.first)
48
54
  end
49
55
 
50
56
  def self.create_tags(resource_id, tags)
51
57
  tags = tags.collect { |k, v| v ? "--tag #{k}=#{v}" : "--tag #{k}" }
52
58
  cmd = command('ec2-create-tags', resource_id, *tags)
53
- Awsome.execute(cmd)
59
+ Awsome.execute(
60
+ cmd,
61
+ task: "tagging #{resource_id}",
62
+ output: false
63
+ )
54
64
  end
55
65
 
56
66
  @@describe_instance_fields = %w(
@@ -76,7 +86,13 @@ module Awsome
76
86
  cmd = [Awsome::Ec2.command('ec2-describe-instances')]
77
87
  cmd += filters.collect { |k,v| "--filter \"#{k}=#{v}\"" }
78
88
  preprocess = Proc.new { |text| text.gsub("\nINSTANCE", " INSTANCE") }
79
- properties = Awsome.execute(cmd, columns: @@describe_instance_fields, filter: /^RESERVATION/, preprocess: preprocess)
89
+ properties = Awsome.execute(
90
+ cmd,
91
+ columns: @@describe_instance_fields,
92
+ filter: /^RESERVATION/,
93
+ preprocess: preprocess,
94
+ verbose: false
95
+ )
80
96
  properties.collect { |p| Awsome::Ec2::Instance.new(p) }
81
97
  end
82
98
 
@@ -94,7 +110,12 @@ module Awsome
94
110
  def self.describe_volumes(*volume_ids)
95
111
  return [] if volume_ids.empty?
96
112
  cmd = [Awsome::Ec2.command('ec2-describe-volumes')] + volume_ids
97
- Awsome.execute(cmd, columns: @@describe_volumes_fields, filter: /^VOLUME/)
113
+ Awsome.execute(
114
+ cmd,
115
+ columns: @@describe_volumes_fields,
116
+ filter: /^VOLUME/,
117
+ verbose: false
118
+ )
98
119
  end
99
120
 
100
121
  def self.volume_available?(volume_id)
@@ -127,7 +148,11 @@ module Awsome
127
148
  instance.ssh "sudo umount #{dir}"
128
149
 
129
150
  cmd = Awsome::Ec2.command('ec2-detach-volume', volume_id)
130
- Awsome.execute(cmd)
151
+ Awsome.execute(
152
+ cmd,
153
+ task: 'detaching volume',
154
+ output: false
155
+ )
131
156
  end
132
157
  end
133
158
 
@@ -139,18 +164,32 @@ module Awsome
139
164
 
140
165
  def self.associate_address(instance_id, ip_address)
141
166
  cmd = Awsome::Ec2.command('ec2-associate-address', ip_address, instance: instance_id)
142
- Awsome.execute(cmd, columns: @@associate_address_columns, filter: /^ADDRESS/)
167
+ Awsome.execute(
168
+ cmd,
169
+ columns: @@associate_address_columns,
170
+ filter: /^ADDRESS/,
171
+ task: 'associating ip',
172
+ output: false
173
+ )
143
174
  end
144
175
 
145
176
  def self.attach_volume(volume_id, instance_id, device)
146
177
  cmd = Awsome::Ec2.command('ec2-attach-volume', volume_id, instance: instance_id, device: device)
147
- Awsome.execute(cmd)
178
+ Awsome.execute(
179
+ cmd,
180
+ task: 'attaching volume',
181
+ output: false
182
+ )
148
183
  end
149
184
 
150
185
  def self.terminate_instances(*instance_ids)
151
186
  return if instance_ids.empty?
152
187
  cmd = Awsome::Ec2.command("ec2-terminate-instances #{instance_ids.join(' ')}")
153
- Awsome.execute(cmd)
188
+ Awsome.execute(
189
+ cmd,
190
+ task: 'terminating instances',
191
+ output: false
192
+ )
154
193
  end
155
194
  end
156
195
  end
@@ -23,14 +23,14 @@ module Awsome
23
23
  end
24
24
 
25
25
  def wait_until_running!
26
- Awsome.wait_until(interval: 20) do
26
+ Awsome.wait_until(interval: 20, task: "waiting for instance #{id} 'running' status") do
27
27
  reload!
28
28
  @properties['state'] =~ /^running/
29
29
  end
30
30
  end
31
31
 
32
32
  def wait_for_ssh!
33
- Awsome.wait_until(interval: 20) { has_ssh? }
33
+ Awsome.wait_until(interval: 20, task: "waiting for instance #{id} ssh access") { has_ssh? }
34
34
  end
35
35
 
36
36
  def ssh(*args)
@@ -58,7 +58,9 @@ module Awsome
58
58
  def reattach_volumes(*volumes)
59
59
  volumes.each do |info|
60
60
  Awsome::Ec2.detach_volume(info['id'], info['dir'], info['preumount'])
61
- Awsome.wait_until(interval: 10) { Awsome::Ec2.volume_available?(info['id']) }
61
+ Awsome.wait_until(interval: 10, task: "waiting for volume #{info['id']} to become available") do
62
+ Awsome::Ec2.volume_available?(info['id'])
63
+ end
62
64
  Awsome::Ec2.attach_volume(info['id'], @properties['instance_id'], info['device'])
63
65
  end
64
66
  end
@@ -47,18 +47,33 @@ module Awsome
47
47
 
48
48
  def self.describe_lbs(*load_balancer_names)
49
49
  cmd = Awsome::Elb.command("elb-describe-lbs #{load_balancer_names.join(' ')}")
50
- properties = Awsome.execute(cmd, columns: @@describe_lbs_columns, delimiter: @@delimiter)
50
+ properties = Awsome.execute(
51
+ cmd,
52
+ columns: @@describe_lbs_columns,
53
+ delimiter: @@delimiter,
54
+ verbose: false
55
+ )
51
56
  properties.collect { |p| Awsome::Elb::LoadBalancer.new(p) }
52
57
  end
53
58
 
54
59
  def self.deregister_instance_from_lb(load_balancer_name, instance_id)
55
60
  cmd = Awsome::Elb.command('elb-deregister-instances-from-lb', load_balancer_name, instances: instance_id)
56
- Awsome.execute(cmd, delimiter: @@delimiter)
61
+ Awsome.execute(
62
+ cmd,
63
+ delimiter: @@delimiter,
64
+ task: 'deregistering from elb',
65
+ output: false
66
+ )
57
67
  end
58
68
 
59
69
  def self.register_instance_with_lb(load_balancer_name, instance_id)
60
70
  cmd = Awsome::Elb.command('elb-register-instances-with-lb', load_balancer_name, instances: instance_id)
61
- Awsome.execute(cmd, delimiter: @@delimiter)
71
+ Awsome.execute(
72
+ cmd,
73
+ delimiter: @@delimiter,
74
+ task: 'registering with elb',
75
+ output: false
76
+ )
62
77
  end
63
78
  end
64
79
  end
@@ -17,11 +17,11 @@ module Awsome
17
17
  else
18
18
  from = "#{ENV['SSH_USER']}@#{from}"
19
19
  end
20
- Awsome.execute("scp -i #{ENV['SSH_KEY']} #{from} #{to}", system: true)
20
+ Awsome.execute("scp -i #{ENV['SSH_KEY']} #{from} #{to}", system: true, verbose: false)
21
21
  end
22
22
 
23
23
  def self.has_ssh?(host)
24
- Awsome.execute("nc -zw 2 #{host} 22 < /dev/null", system: true)
24
+ Awsome.execute("nc -zw 2 #{host} 22 < /dev/null", system: true, verbose: false)
25
25
  end
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awsome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.59
4
+ version: 0.0.60
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: