opsicle 2.10.0 → 2.10.1

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: f351c978f6ecef8f39e1bcaedf071d57766f8fca
4
- data.tar.gz: fb2f615938ab86f7fc8cd431670511ffe0f78f01
3
+ metadata.gz: 2e28df963a182535bfaf92964eeb32df3950e884
4
+ data.tar.gz: 7ba69cac271a9c2269afe46fe28e120a7405d92b
5
5
  SHA512:
6
- metadata.gz: 7d9d7ff9546d924d2bcd8f29786c7d6e8368485f8173a77f013a11dd142dc2f96f1df8337d000f0b5cd300b0a781fa7d36e13f70d805f505ab1070e2d5e4157f
7
- data.tar.gz: 264695840f0389211f6f3bbc6252d16c2cd1078d3f5bb3e9d1dd5ddce19d6d39ff3484f4f8b2be8e0f6d5a34f897959527584e2dde3c183be3de0e4948e31fb3
6
+ metadata.gz: 0197fea7b2f46f0ea103c8c8df2549040acf4f00a87ff220827feb237e21d2edce2cad5587f35f25fe6c21b38e6fa3b35ca8da45f244ac2ee11b42567b3df06d
7
+ data.tar.gz: 46270627f6c99cb98f4e362aeb93dfac47796c982572b7bea7de5be94062c4f98aec94c49036ffe8525532292f9ce8118a24e1356ef0d6a67c4baf44778a05f7
@@ -0,0 +1,3 @@
1
+ module AwsInstanceManagerHelper
2
+
3
+ end
@@ -1,8 +1,8 @@
1
1
  require 'gli'
2
2
  require "opsicle/user_profile"
3
3
  require "opsicle/manageable_layer"
4
- require "opsicle/manageable_instance"
5
4
  require "opsicle/manageable_stack"
5
+ require "opsicle/creatable_instance"
6
6
 
7
7
  module Opsicle
8
8
  class CreateInstance
@@ -18,7 +18,8 @@ module Opsicle
18
18
 
19
19
  def execute(options={})
20
20
  puts "Stack ID = #{@stack.id}"
21
- instances_to_delete = select_instances
21
+ layer = select_layer
22
+ instances_to_delete = select_instances(layer)
22
23
  instances_to_delete.each do |instance|
23
24
  begin
24
25
  @opsworks.delete_instance(instance_id: instance.instance_id)
@@ -29,16 +30,29 @@ module Opsicle
29
30
  end
30
31
  end
31
32
 
32
- def deleteable_instances
33
- @stack.deleteable_instances
33
+ def deleteable_instances(layer)
34
+ @stack.deleteable_instances(layer)
35
+ end
36
+
37
+ def select_layer
38
+ puts "\nLayers:\n"
39
+ ops_layers = @opsworks.describe_layers({ :stack_id => @stack.id }).layers
40
+
41
+ layers = []
42
+ ops_layers.each do |layer|
43
+ layers << ManageableLayer.new(layer.name, layer.layer_id, @stack, @opsworks, @ec2, @cli)
44
+ end
34
45
 
46
+ layers.each_with_index { |layer, index| puts "#{index.to_i + 1}) #{layer.name}" }
47
+ layer_index = @cli.ask("Layer?\n", Integer) { |q| q.in = 1..layers.length.to_i } - 1
48
+ layers[layer_index]
35
49
  end
36
50
 
37
- def select_instances
38
- instances = deleteable_instances
51
+ def select_instances(layer)
52
+ instances = deleteable_instances(layer)
39
53
  return_array = []
40
54
  if instances.empty?
41
- puts "There are no deletable instances"
55
+ puts "There are no deletable instances."
42
56
  else
43
57
  puts "\nDeleteable Instances:\n"
44
58
  instances.each_with_index { |instance, index| puts "#{index.to_i + 1}) #{instance.status} - #{instance.hostname}" }
@@ -18,7 +18,8 @@ module Opsicle
18
18
 
19
19
  def execute(options={})
20
20
  puts "Stack ID = #{@stack.id}"
21
- instances_to_stop = select_instances
21
+ layer = select_layer
22
+ instances_to_stop = select_instances(layer)
22
23
  instances_to_stop.each do |instance|
23
24
  begin
24
25
  @opsworks.stop_instance(instance_id: instance.instance_id)
@@ -29,15 +30,29 @@ module Opsicle
29
30
  end
30
31
  end
31
32
 
32
- def stoppable_instances
33
- @stack.stoppable_instances
33
+ def stoppable_instances(layer)
34
+ @stack.stoppable_instances(layer)
34
35
  end
35
36
 
36
- def select_instances
37
- instances = stoppable_instances
37
+ def select_layer
38
+ puts "\nLayers:\n"
39
+ ops_layers = @opsworks.describe_layers({ :stack_id => @stack.id }).layers
40
+
41
+ layers = []
42
+ ops_layers.each do |layer|
43
+ layers << ManageableLayer.new(layer.name, layer.layer_id, @stack, @opsworks, @ec2, @cli)
44
+ end
45
+
46
+ layers.each_with_index { |layer, index| puts "#{index.to_i + 1}) #{layer.name}" }
47
+ layer_index = @cli.ask("Layer?\n", Integer) { |q| q.in = 1..layers.length.to_i } - 1
48
+ layers[layer_index]
49
+ end
50
+
51
+ def select_instances(layer)
52
+ instances = stoppable_instances(layer)
38
53
  return_array = []
39
54
  if instances.empty?
40
- puts "There are no stoppable instances"
55
+ puts "There are no stoppable instances."
41
56
  else
42
57
  puts "\nStoppable Instances:\n"
43
58
  instances.each_with_index { |instance, index| puts "#{index.to_i + 1}) #{instance.status} - #{instance.hostname}" }
@@ -30,14 +30,14 @@ module Opsicle
30
30
  end
31
31
 
32
32
  def make_new_hostname
33
- new_instance_hostname = auto_generated_hostname
34
- puts "\nAutomatically generated hostname: #{new_instance_hostname}\n"
33
+ new_instance_hostname = auto_generated_hostname || nil
34
+ puts "\nAutomatically generated hostname: #{new_instance_hostname}\n" if new_instance_hostname
35
35
  new_instance_hostname = ask_for_new_option("instance's hostname") if ask_for_overriding_permission("hostname", false)
36
36
  new_instance_hostname
37
37
  end
38
38
 
39
39
  def hostname
40
- self.layer.instances.first.hostname
40
+ self.layer.instances.first.hostname if self.layer.instances.first
41
41
  end
42
42
 
43
43
  def auto_generated_hostname
@@ -118,7 +118,7 @@ module Opsicle
118
118
  end
119
119
 
120
120
  def os
121
- self.layer.instances.first.os
121
+ self.layer.instances.first.os if self.layer.instances.first
122
122
  end
123
123
 
124
124
  def ask_for_possible_options(arr, description)
@@ -149,7 +149,7 @@ module Opsicle
149
149
  ami_id: ami_id,
150
150
  subnet_id: subnet_id,
151
151
  agent_version: agent_version,
152
- os: os
152
+ os: os || 'Custom'
153
153
  })
154
154
  self.new_instance_id = new_instance.instance_id
155
155
  self.layer.add_new_instance(new_instance_id)
@@ -68,16 +68,16 @@ module Opsicle
68
68
  @opsworks.describe_instances(stack_id: self.id).instances
69
69
  end
70
70
 
71
- def deleteable_instances
72
- instances.select{ |instance| instance.auto_scaling_type.nil? && instance.status == "stopped" }
71
+ def deleteable_instances(layer)
72
+ instances.select{ |instance| instance.auto_scaling_type.nil? && instance.status == "stopped" && instance.layer_ids.include?(layer.layer_id) }
73
73
  end
74
74
 
75
75
  def stoppable_states
76
76
  %w(start_failed stop_failed online running_setup setup_failed booting rebooting)
77
77
  end
78
78
 
79
- def stoppable_instances
80
- instances.select{ |instance| instance.elastic_ip.nil? && stoppable_states.include?(instance.status) }
79
+ def stoppable_instances(layer)
80
+ instances.select{ |instance| instance.elastic_ip.nil? && stoppable_states.include?(instance.status) && instance.layer_ids.include?(layer.layer_id) }
81
81
  end
82
82
  end
83
83
  end
@@ -1,3 +1,3 @@
1
1
  module Opsicle
2
- VERSION = "2.10.0"
2
+ VERSION = "2.10.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opsicle
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.0
4
+ version: 2.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Fleener
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-31 00:00:00.000000000 Z
12
+ date: 2018-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -190,6 +190,7 @@ files:
190
190
  - LICENSE
191
191
  - bin/opsicle
192
192
  - lib/opsicle.rb
193
+ - lib/opsicle/aws_instance_manager_helper.rb
193
194
  - lib/opsicle/client.rb
194
195
  - lib/opsicle/commands.rb
195
196
  - lib/opsicle/commands/add_tags.rb