opsicle 2.8.0 → 2.9.0

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: 1e61d35388f34cdb0123201879ba2a6e0b8737d6
4
- data.tar.gz: ba08ee8d2d71fdf3dcefd6e5ba89dfd098f196c6
3
+ metadata.gz: ca50977663e63f6963d4db7590ae6fe5997fc903
4
+ data.tar.gz: 1515347a9f489aa3c092312c61431cc13cbce576
5
5
  SHA512:
6
- metadata.gz: e1ec727a15e561239139e17f484a67c4708d8c42102187f47d2df59fd3722e5b547c50e7837c8cae10281d48ad3d94ff7976b797f9a1a6f6995b7ffa9e92a9ed
7
- data.tar.gz: f450d31f77ef707f45bc55c921a895a12769374de33d9ec1789d40c10d6b45ae63edcb7596596ef4ea251a1a8a85fd286ce37cd2dadf2bb79c18a5d376c93068
6
+ metadata.gz: 70d15051bfd1c61ee6188f617c373a5589f1787f5c2f28e0dd062298535c1e8bf92e3bb4124cd4435538b467001821d64edb8f9ef64350510dd13ca26efcce61
7
+ data.tar.gz: f018f227c6cd17fbf0453aed9d88f98ab6014d116d4e3370e469524faf3be54b413b8b05142426de093a863a31de89418c0826efda198ca29d0b56e1aa6dad7b
@@ -3,6 +3,7 @@ require 'opsicle/config'
3
3
  module Opsicle
4
4
  class Client
5
5
  attr_reader :opsworks
6
+ attr_reader :ec2
6
7
  attr_reader :s3
7
8
  attr_reader :config
8
9
 
@@ -14,6 +15,7 @@ module Opsicle
14
15
  aws_opts = {region: region}
15
16
  aws_opts[:credentials] = credentials unless credentials.nil?
16
17
  @opsworks = Aws::OpsWorks::Client.new aws_opts
18
+ @ec2 = Aws::EC2::Client.new aws_opts
17
19
  @s3 = Aws::S3::Client.new aws_opts
18
20
  end
19
21
 
@@ -4,6 +4,7 @@ module Opsicle
4
4
  :hostname,
5
5
  :status,
6
6
  :layer,
7
+ :stack,
7
8
  :ami_id,
8
9
  :instance_type,
9
10
  :instance_id,
@@ -23,13 +24,15 @@ module Opsicle
23
24
  :ebs_optimized,
24
25
  :tenancy,
25
26
  :opsworks,
27
+ :ec2,
26
28
  :cli
27
29
  )
28
30
 
29
- def initialize(instance, layer, opsworks, cli)
31
+ def initialize(instance, layer, stack, opsworks, ec2, cli)
30
32
  self.hostname = instance.hostname
31
33
  self.status = instance.status
32
34
  self.layer = layer
35
+ self.stack = stack
33
36
  self.ami_id = instance.ami_id
34
37
  self.instance_type = instance.instance_type
35
38
  self.agent_version = instance.agent_version
@@ -47,6 +50,7 @@ module Opsicle
47
50
  self.ebs_optimized = instance.ebs_optimized
48
51
  self.tenancy = instance.tenancy
49
52
  self.opsworks = opsworks
53
+ self.ec2 = ec2
50
54
  self.cli = cli
51
55
  self.instance_id = instance.instance_id
52
56
  self.new_instance_id = nil
@@ -109,6 +113,13 @@ module Opsicle
109
113
  !sibling_hostnames.include?(name)
110
114
  end
111
115
 
116
+ def find_subnet_name(subnet)
117
+ tags = subnet.tags
118
+ tag = nil
119
+ tags.each { |t| tag = t if t.key == 'Name' }
120
+ tag.value if tag
121
+ end
122
+
112
123
  def verify_ami_id
113
124
  if self.layer.ami_id
114
125
  ami_id = self.layer.ami_id
@@ -156,17 +167,26 @@ module Opsicle
156
167
  if self.layer.subnet_id
157
168
  subnet_id = self.layer.subnet_id
158
169
  else
159
- puts "\nCurrent subnet id is #{self.subnet_id}"
170
+ current_subnet = Aws::EC2::Subnet.new(id: self.subnet_id)
171
+ subnet_name = find_subnet_name(current_subnet)
172
+ puts "\nCurrent subnet ID is \"#{subnet_name}\" #{current_subnet.availability_zone} (#{self.subnet_id})"
160
173
 
161
174
  if ask_for_overriding_permission("subnet ID", true)
162
- instances = @opsworks.describe_instances(stack_id: self.stack_id).instances
163
- subnet_ids = instances.collect { |i| i.subnet_id }.uniq
164
- subnet_ids << "Provide a different subnet ID."
165
- subnet_id = ask_for_possible_options(subnet_ids, "subnet ID")
175
+ ec2_subnets = ec2.describe_subnets.subnets
176
+ subnets = []
166
177
 
167
- if subnet_id == "Provide a different subnet ID."
168
- subnet_id = ask_for_new_option('subnet ID')
178
+ ec2_subnets.each do |subnet|
179
+ if subnet.vpc_id == stack.vpc_id
180
+ subnet_name = find_subnet_name(subnet)
181
+ zone_name = subnet.availability_zone
182
+ subnet_id = subnet.subnet_id
183
+ subnets << "\"#{subnet_name}\" #{zone_name} (#{subnet_id})"
184
+ end
169
185
  end
186
+
187
+ subnets = subnets.sort
188
+ subnet_id = ask_for_possible_options(subnets, "subnet ID")
189
+ subnet_id = subnet_id.scan(/(subnet-[a-z0-9]*)/).first.first if subnet_id
170
190
  else
171
191
  subnet_id = self.subnet_id
172
192
  end
@@ -212,9 +232,9 @@ module Opsicle
212
232
  os: self.os,
213
233
  ami_id: ami_id,
214
234
  ssh_key_name: self.ssh_key_name,
215
- availability_zone: self.availability_zone,
216
- virtualization_type: self.virtualization_type,
235
+ # availability_zone: self.availability_zone,
217
236
  subnet_id: subnet_id,
237
+ virtualization_type: self.virtualization_type,
218
238
  architecture: self.architecture, # accepts x86_64, i386
219
239
  root_device_type: self.root_device_type, # accepts ebs, instance-store
220
240
  install_updates_on_boot: self.install_updates_on_boot,
@@ -1,11 +1,13 @@
1
1
  module Opsicle
2
2
  class CloneableLayer
3
- attr_accessor :name, :layer_id, :instances, :opsworks, :cli, :agent_version, :ami_id, :subnet_id
3
+ attr_accessor :name, :layer_id, :stack, :instances, :opsworks, :ec2, :cli, :agent_version, :ami_id, :subnet_id
4
4
 
5
- def initialize(name, layer_id, opsworks, cli)
5
+ def initialize(name, layer_id, stack, opsworks, ec2, cli)
6
6
  self.name = name
7
7
  self.layer_id = layer_id
8
+ self.stack = stack
8
9
  self.opsworks = opsworks
10
+ self.ec2 = ec2
9
11
  self.cli = cli
10
12
  self.instances = []
11
13
  end
@@ -13,14 +15,14 @@ module Opsicle
13
15
  def get_cloneable_instances
14
16
  ops_instances = @opsworks.describe_instances({ :layer_id => layer_id }).instances
15
17
  ops_instances.each do |instance|
16
- self.instances << CloneableInstance.new(instance, self, @opsworks, @cli)
18
+ self.instances << CloneableInstance.new(instance, self, stack, @opsworks, @ec2, @cli)
17
19
  end
18
20
  self.instances
19
21
  end
20
22
 
21
23
  def add_new_instance(instance_id)
22
24
  instance = @opsworks.describe_instances({ :instance_ids => [instance_id] }).instances.first
23
- self.instances << CloneableInstance.new(instance, self, @opsworks, @cli)
25
+ self.instances << CloneableInstance.new(instance, self, stack, @opsworks, @ec2, @cli)
24
26
  end
25
27
  end
26
28
  end
@@ -1,11 +1,12 @@
1
1
  module Opsicle
2
2
  class CloneableStack
3
- attr_accessor :id, :opsworks, :stack
3
+ attr_accessor :id, :opsworks, :stack, :vpc_id
4
4
 
5
5
  def initialize(stack_id, opsworks)
6
6
  self.id = stack_id
7
7
  self.opsworks = opsworks
8
8
  self.stack = get_stack
9
+ self.vpc_id = self.stack.vpc_id
9
10
  end
10
11
 
11
12
  def get_stack
@@ -10,6 +10,7 @@ module Opsicle
10
10
  def initialize(environment)
11
11
  @client = Client.new(environment)
12
12
  @opsworks = @client.opsworks
13
+ @ec2 = @client.ec2
13
14
  stack_id = @client.config.opsworks_config[:stack_id]
14
15
  @stack = CloneableStack.new(@client.config.opsworks_config[:stack_id], @opsworks)
15
16
  @cli = HighLine.new
@@ -39,7 +40,7 @@ module Opsicle
39
40
 
40
41
  layers = []
41
42
  ops_layers.each do |layer|
42
- layers << CloneableLayer.new(layer.name, layer.layer_id, @opsworks, @cli)
43
+ layers << CloneableLayer.new(layer.name, layer.layer_id, @stack, @opsworks, @ec2, @cli)
43
44
  end
44
45
 
45
46
  layers.each_with_index { |layer, index| puts "#{index.to_i + 1}) #{layer.name}"}
@@ -1,3 +1,3 @@
1
1
  module Opsicle
2
- VERSION = "2.8.0"
2
+ VERSION = "2.9.0"
3
3
  end
@@ -25,19 +25,31 @@ module Opsicle
25
25
  allow(@layer).to receive(:subnet_id)
26
26
  @new_instance = double('new_instance', :instance_id => 1029384756)
27
27
  @opsworks = double('opsworks', :create_instance => @new_instance)
28
+ @ec2 = double('ec2')
29
+ @stack = double('stack')
28
30
  @agent_version_1 = double('agent_version', :version => '3434-20160316181345')
29
31
  @agent_version_2 = double('agent_version', :version => '3435-20160406115841')
30
32
  @agent_version_3 = double('agent_version', :version => '3436-20160418214624')
31
33
  @agent_versions = double('agent_versions', :agent_versions => [@agent_version_1, @agent_version_2, @agent_version_3])
32
34
  allow(@opsworks).to receive(:describe_agent_versions).with({:stack_id=>1234567890}).and_return(@agent_versions)
35
+ tag1 = double('tag', :value => 'Subnet', :key => 'Name')
36
+ @tags = [tag1]
37
+ @subnet1 = double('subnet', :vpc_id => 'vpc-123456', :subnet_id => 'subnet-123456', :tags => @tags, :availability_zone => 'us-east-1b')
38
+ @subnet2 = double('subnet', :vpc_id => 'vpc-123456', :subnet_id => 'subnet-789123', :tags => @tags, :availability_zone => 'us-east-1b')
39
+ @subnet3 = double('subnet', :vpc_id => 'vpc-123456', :subnet_id => 'subnet-456789', :tags => @tags, :availability_zone => 'us-east-1b')
40
+ @subnets = double('subnets', :subnets => [@subnet1, @subnet2, @subnet3])
41
+ allow(@stack).to receive(:vpc_id).and_return('vpc-123456')
33
42
  @instances = double('instances', :instances => [@instance])
43
+ allow(@ec2).to receive(:describe_subnets).and_return(@subnets)
34
44
  allow(@opsworks).to receive(:describe_instances).with({:stack_id=>1234567890}).and_return(@instances)
45
+ @current_subnet = double('subnet', :tags => @tags, :availability_zone => 'us-east-1b')
46
+ allow(Aws::EC2::Subnet).to receive(:new).and_return(@current_subnet)
35
47
  @cli = double('cli', :ask => 2)
36
48
  end
37
49
 
38
50
  context "#make_new_hostname" do
39
51
  it "should make a unique incremented hostname" do
40
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
52
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
41
53
  instance1 = double('instance', :hostname => 'example-hostname-01')
42
54
  instance2 = double('instance', :hostname => 'example-hostname-02')
43
55
  allow(@layer).to receive(:instances).and_return([instance1, instance2])
@@ -45,7 +57,7 @@ module Opsicle
45
57
  end
46
58
 
47
59
  it "should make a unique incremented hostname" do
48
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
60
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
49
61
  instance1 = double('instance', :hostname => 'example-hostname-01')
50
62
  instance2 = double('instance', :hostname => 'example-hostname-02')
51
63
  instance3 = double('instance', :hostname => 'example-hostname-03')
@@ -57,7 +69,7 @@ module Opsicle
57
69
 
58
70
  context "#increment_hostname" do
59
71
  it "should increment the hostname" do
60
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
72
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
61
73
  expect(instance).to receive(:hostname_unique?).and_return('example-hostname-03')
62
74
  allow(@opsworks).to receive(:describe_agent_version).with({})
63
75
  expect(instance.increment_hostname).to eq('example-hostname-01')
@@ -66,13 +78,13 @@ module Opsicle
66
78
 
67
79
  context "#clone" do
68
80
  it "should grab instances and make new hostname" do
69
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
81
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
70
82
  expect(instance).to receive(:make_new_hostname).and_return('example-hostname-03')
71
83
  instance.clone({})
72
84
  end
73
85
 
74
86
  it "should get information from old instance" do
75
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
87
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
76
88
  expect(instance).to receive(:verify_ami_id)
77
89
  expect(instance).to receive(:verify_agent_version)
78
90
  expect(instance).to receive(:verify_instance_type)
@@ -81,13 +93,13 @@ module Opsicle
81
93
  end
82
94
 
83
95
  it "should create new instance" do
84
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
96
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
85
97
  expect(instance).to receive(:create_new_instance)
86
98
  instance.clone({})
87
99
  end
88
100
 
89
101
  it "should start new instance" do
90
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
102
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
91
103
  allow(instance).to receive(:ask_to_start_instance).and_return(true)
92
104
  expect(instance).to receive(:start_new_instance)
93
105
  instance.clone({})
@@ -97,7 +109,7 @@ module Opsicle
97
109
  context '#verify_agent_version' do
98
110
  it "should check the agent version and ask if the user wants a new agent version" do
99
111
  @cli = double('cli', :ask => 1)
100
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
112
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
101
113
  allow(@layer).to receive(:agent_version).and_return(nil)
102
114
  allow_any_instance_of(HighLine).to receive(:ask).with("Do you wish to override this version? By overriding, you are choosing to override the current agent version for all instances you are cloning.\n1) Yes\n2) No", Integer).and_return(1)
103
115
  expect(instance).to receive(:ask_for_possible_options)
@@ -105,7 +117,7 @@ module Opsicle
105
117
  end
106
118
 
107
119
  it "should see if the layer already has overwritten the agent version" do
108
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
120
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
109
121
  expect(@layer).to receive(:agent_version)
110
122
  instance.verify_agent_version
111
123
  end
@@ -114,7 +126,7 @@ module Opsicle
114
126
  context '#verify_subnet_id' do
115
127
  it "should check the subnet id and ask if the user wants a new subnet id" do
116
128
  @cli = double('cli', :ask => 1)
117
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
129
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
118
130
  allow(@layer).to receive(:subnet_id).and_return(nil)
119
131
  allow_any_instance_of(HighLine).to receive(:ask).with("Do you wish to override this id? By overriding, you are choosing to override the current agent version for all instances you are cloning.\n1) Yes\n2) No", Integer).and_return(1)
120
132
  expect(instance).to receive(:ask_for_possible_options)
@@ -122,7 +134,7 @@ module Opsicle
122
134
  end
123
135
 
124
136
  it "should see if the layer already has overwritten the subnet id" do
125
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
137
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
126
138
  expect(@layer).to receive(:subnet_id)
127
139
  instance.verify_subnet_id
128
140
  end
@@ -131,7 +143,7 @@ module Opsicle
131
143
  context '#verify_ami_id' do
132
144
  it "should check the ami id and ask if the user wants a new ami" do
133
145
  @cli = double('cli', :ask => 1)
134
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
146
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
135
147
  allow(@layer).to receive(:ami_id).and_return(nil)
136
148
  allow_any_instance_of(HighLine).to receive(:ask).with("Do you wish to override this AMI? By overriding, you are choosing to override the current AMI for all instances you are cloning.\n1) Yes\n2) No", Integer).and_return(1)
137
149
  expect(@cli).to receive(:ask)
@@ -140,7 +152,7 @@ module Opsicle
140
152
  end
141
153
 
142
154
  it "should see if the layer already has overwritten the ami id" do
143
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
155
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
144
156
  expect(@layer).to receive(:ami_id)
145
157
  instance.verify_ami_id
146
158
  end
@@ -149,7 +161,7 @@ module Opsicle
149
161
  context '#verify_instance_type' do
150
162
  it "should check the agent version and ask if the user wants a new agent version" do
151
163
  @cli = double('cli', :ask => 1)
152
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
164
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
153
165
  allow(@layer).to receive(:ami_id).and_return(nil)
154
166
  allow_any_instance_of(HighLine).to receive(:ask).with("Do you wish to override this instance type?\n1) Yes\n2) No", Integer).and_return(1)
155
167
  expect(@cli).to receive(:ask).twice
@@ -159,19 +171,18 @@ module Opsicle
159
171
 
160
172
  context "#create_new_instance" do
161
173
  it "should create an instance" do
162
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
174
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
163
175
  expect(@opsworks).to receive(:create_instance)
164
176
  instance.create_new_instance('hostname', 'type', 'ami', 'agent_version', 'subnet_id')
165
177
  end
166
178
 
167
179
  it "should take information from old instance" do
168
- instance = CloneableInstance.new(@instance, @layer, @opsworks, @cli)
180
+ instance = CloneableInstance.new(@instance, @layer, @stack, @opsworks, @ec2, @cli)
169
181
  expect(instance).to receive(:stack_id)
170
182
  expect(instance).to receive(:layer_ids)
171
183
  expect(instance).to receive(:auto_scaling_type)
172
184
  expect(instance).to receive(:os)
173
185
  expect(instance).to receive(:ssh_key_name)
174
- expect(instance).to receive(:availability_zone)
175
186
  expect(instance).to receive(:virtualization_type)
176
187
  instance.create_new_instance('hostname', 'type', 'ami', 'agent_version', 'subnet_id')
177
188
  end
@@ -36,18 +36,20 @@ module Opsicle
36
36
  @instances = double('instances', :instances => [@instance1, @instance2])
37
37
  @new_instance = double('new_instance', :instances => [@instance3])
38
38
  @opsworks = double('opsworks', :describe_instances => @instances)
39
+ @ec2 = double('ec2')
40
+ @stack = double('stack')
39
41
  end
40
42
 
41
43
  context "#get_cloneable_instances" do
42
44
  it "should gather opsworks instances for that layer" do
43
- layer = CloneableLayer.new('layer-name', 12345, @opsworks, @cli)
45
+ layer = CloneableLayer.new('layer-name', 12345, @stack, @opsworks, @ec2, @cli)
44
46
  expect(@opsworks).to receive(:describe_instances).and_return(@instances)
45
47
  expect(@instances).to receive(:instances)
46
48
  layer.get_cloneable_instances
47
49
  end
48
50
 
49
51
  it "should make a new CloneableInstance for each instance" do
50
- layer = CloneableLayer.new('layer-name', 12345, @opsworks, @cli)
52
+ layer = CloneableLayer.new('layer-name', 12345, @stack, @opsworks, @ec2, @cli)
51
53
  expect(CloneableInstance).to receive(:new).twice
52
54
  layer.get_cloneable_instances
53
55
  end
@@ -55,14 +57,14 @@ module Opsicle
55
57
 
56
58
  context "#add_new_instance" do
57
59
  it "should accurately find a new instance via instance_id" do
58
- layer = CloneableLayer.new('layer-name', 12345, @opsworks, @cli)
60
+ layer = CloneableLayer.new('layer-name', 12345, @stack, @opsworks, @ec2, @cli)
59
61
  expect(@opsworks).to receive(:describe_instances).and_return(@new_instance)
60
62
  expect(@new_instance).to receive(:instances)
61
63
  layer.add_new_instance('456-789')
62
64
  end
63
65
 
64
66
  it "should add the new instance to the instances array" do
65
- layer = CloneableLayer.new('layer-name', 12345, @opsworks, @cli)
67
+ layer = CloneableLayer.new('layer-name', 12345, @stack, @opsworks, @ec2, @cli)
66
68
  expect(@opsworks).to receive(:describe_instances).and_return(@new_instance)
67
69
  expect(CloneableInstance).to receive(:new).once
68
70
  layer.add_new_instance('456-789')
@@ -6,7 +6,7 @@ require "opsicle/user_profile"
6
6
  module Opsicle
7
7
  describe CloneableStack do
8
8
  before do
9
- @stack = double('stack')
9
+ @stack = double('stack', :vpc_id => 'vpc-123456')
10
10
  @stacks = double('stacks', :stacks => [@stack])
11
11
  @opsworks = double('opsworks', :describe_stacks => @stacks)
12
12
  end
@@ -29,13 +29,14 @@ module Opsicle
29
29
  @layer2 = double('layer2', :name => 'layer-2', :layer_id => 67890, :instances => [@instance1, @instance2])
30
30
  @layers = double('layers', :layers => [@layer1, @layer2])
31
31
  @new_instance = double('new_instance', :instance_id => 1029384756)
32
- @stack = double('stack')
32
+ @stack = double('stack', :vpc_id => "vpc-123456")
33
33
  @stacks = double('stacks', :stacks => [@stack])
34
34
  @opsworks = double('opsworks', :describe_instances => @instances, :describe_layers => @layers,
35
35
  :create_instance => @new_instance, :describe_stacks => @stacks,
36
36
  :start_instance => @new_instance)
37
+ @ec2 = double('ec2')
37
38
  @config = double('config', :opsworks_config => {:stack_id => 1234567890})
38
- @client = double('client', :config => @config, :opsworks => @opsworks)
39
+ @client = double('client', :config => @config, :opsworks => @opsworks, :ec2 => @ec2)
39
40
  allow(Client).to receive(:new).with(:environment).and_return(@client)
40
41
  allow(@instances).to receive(:each_with_index)
41
42
  @agent_version_1 = double('agent_version', :version => '3434-20160316181345')
@@ -43,6 +44,10 @@ module Opsicle
43
44
  @agent_version_3 = double('agent_version', :version => '3436-20160418214624')
44
45
  @agent_versions = double('agent_versions', :agent_versions => [@agent_version_1, @agent_version_2, @agent_version_3])
45
46
  allow(@opsworks).to receive(:describe_agent_versions).and_return(@agent_versions)
47
+ tag1 = double('tag', :value => 'Subnet', :key => 'Name')
48
+ @tags = [tag1]
49
+ @current_subnet = double('subnet', :tags => @tags, :availability_zone => 'us-east-1b')
50
+ allow(Aws::EC2::Subnet).to receive(:new).and_return(@current_subnet)
46
51
  allow_any_instance_of(HighLine).to receive(:ask).with("Layer?\n", Integer).and_return(2)
47
52
  allow_any_instance_of(HighLine).to receive(:ask).with("Instances? (enter as a comma separated list)\n", String).and_return('2')
48
53
  allow_any_instance_of(HighLine).to receive(:ask).with("Do you wish to override this hostname?\n1) Yes\n2) No", Integer).and_return(2)
@@ -93,7 +98,8 @@ module Opsicle
93
98
  it "generates a new AWS client from the given configs" do
94
99
  @config = double('config', :opsworks_config => {:stack_id => 1234567890})
95
100
  @client = double('client', :config => @config,
96
- :opsworks => @opsworks)
101
+ :opsworks => @opsworks,
102
+ :ec2 => @ec2)
97
103
  expect(Client).to receive(:new).with(:environment).and_return(@client)
98
104
  CloneInstance.new(:environment)
99
105
  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.8.0
4
+ version: 2.9.0
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: 2017-06-27 00:00:00.000000000 Z
12
+ date: 2017-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -282,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
282
  version: '0'
283
283
  requirements: []
284
284
  rubyforge_project:
285
- rubygems_version: 2.6.12
285
+ rubygems_version: 2.4.8
286
286
  signing_key:
287
287
  specification_version: 4
288
288
  summary: An opsworks specific abstraction on top of the aws sdk