guignol 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4636c00535c5d18a301b19f0bfa09d50c68e66dc
4
- data.tar.gz: 0b61247adf8fc490581a3013790a351bb9feec36
3
+ metadata.gz: 3122effa5c76fb24af333186992f6746ec24ce1d
4
+ data.tar.gz: 871d6fcb768cd9de2aa8319d46a7b0c78c8489cf
5
5
  SHA512:
6
- metadata.gz: f80fe802b17f4f02bf0b0a8d5e8ec5cc8b891d4baa2f71b1e4648a62b731adc14c43998d76d5fbfd451b15f36ee384e060181cc384e11a22c204e6d2c6fc2ff0
7
- data.tar.gz: 3891a19536afa2869bed4a6072d577c8d761ba7d07b9a1d17dea2567f7f1c0e4dbd4c70e12bb5f60b2c83ddf2b7691ad564550d709752fcd6e6211696a405942
6
+ metadata.gz: 6697a1414b262ceb5856635b64622f7208d9fde7e91baa77b80e1b92af2e91a56bfbbdbd79ee4085094a99457c1b715d4a97efd370d99ae0511ff20fabfa2e99
7
+ data.tar.gz: 168039823e8ae50ed47fecfc19a2279a283164d07b56ed45c479d20403a2e2ed9dbdc58026e700e8ed1bc4ec2db77fb3ae988bdb351cdf112efd01380ed66d10
@@ -1 +1 @@
1
- 1.9.2-p320
1
+ 2.0.0-p247
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- guignol (0.3.8)
4
+ guignol (0.3.9)
5
5
  activesupport
6
6
  fog (~> 1.12.0)
7
7
  parallel (~> 0.6.2)
@@ -11,12 +11,16 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (3.2.13)
15
- i18n (= 0.6.1)
16
- multi_json (~> 1.0)
14
+ activesupport (4.0.0)
15
+ i18n (~> 0.6, >= 0.6.4)
16
+ minitest (~> 4.2)
17
+ multi_json (~> 1.3)
18
+ thread_safe (~> 0.1)
19
+ tzinfo (~> 0.3.37)
20
+ atomic (1.1.10)
17
21
  builder (3.2.2)
18
22
  coderay (1.0.9)
19
- diff-lcs (1.2.1)
23
+ diff-lcs (1.2.4)
20
24
  excon (0.23.0)
21
25
  fog (1.12.1)
22
26
  builder
@@ -29,33 +33,37 @@ GEM
29
33
  nokogiri (~> 1.5.0)
30
34
  ruby-hmac
31
35
  formatador (0.2.4)
32
- i18n (0.6.1)
36
+ i18n (0.6.4)
33
37
  method_source (0.8.1)
34
38
  mime-types (1.23)
39
+ minitest (4.7.5)
35
40
  multi_json (1.7.7)
36
- net-scp (1.1.1)
41
+ net-scp (1.1.2)
37
42
  net-ssh (>= 2.6.5)
38
- net-ssh (2.6.7)
43
+ net-ssh (2.6.8)
39
44
  nokogiri (1.5.10)
40
45
  parallel (0.6.5)
41
- pry (0.9.12)
46
+ pry (0.9.12.2)
42
47
  coderay (~> 1.0.5)
43
48
  method_source (~> 0.8)
44
49
  slop (~> 3.4)
45
50
  pry-nav (0.2.3)
46
51
  pry (~> 0.9.10)
47
- rake (10.0.3)
52
+ rake (10.1.0)
48
53
  rspec (2.13.0)
49
54
  rspec-core (~> 2.13.0)
50
55
  rspec-expectations (~> 2.13.0)
51
56
  rspec-mocks (~> 2.13.0)
52
- rspec-core (2.13.0)
57
+ rspec-core (2.13.1)
53
58
  rspec-expectations (2.13.0)
54
59
  diff-lcs (>= 1.1.3, < 2.0)
55
- rspec-mocks (2.13.0)
60
+ rspec-mocks (2.13.1)
56
61
  ruby-hmac (0.4.0)
57
- slop (3.4.3)
62
+ slop (3.4.5)
58
63
  thor (0.18.1)
64
+ thread_safe (0.1.0)
65
+ atomic
66
+ tzinfo (0.3.37)
59
67
  uuidtools (2.1.4)
60
68
 
61
69
  PLATFORMS
data/README.md CHANGED
@@ -126,6 +126,9 @@ Note that Guignol does not delete volumes when tearing down instances.
126
126
  - `:region`
127
127
  The EC2 region. Defaults to `eu-west-1`.
128
128
 
129
+ - `:availability_zone`
130
+ The EC2 availability zone. Defaults to whatever Amazon chooses.
131
+
129
132
  - `:image_id`
130
133
  The AMI to use when creating this instance. Defaults to whatever Amazon defaults it to.
131
134
 
@@ -34,10 +34,22 @@ module Guignol::Models
34
34
  def create
35
35
  log "server already exists" and return self if exist?
36
36
 
37
- create_options = Guignol::DefaultServerOptions.merge options.slice(:image_id, :flavor_id, :key_name, :security_group_ids, :user_data, :username)
37
+ create_options = Guignol::DefaultServerOptions.merge options.slice(:image_id, :flavor_id, :key_name, :security_group_ids, :user_data, :username, :availability_zone)
38
38
 
39
- # check for pre-existing volume(s). if any exist, add their AZ to the server's options
40
39
  zones = create_options[:volumes].map { |name,volume_options| Volume.new(name, volume_options).availability_zone }.compact.uniq
40
+ availability_zone = create_options[:availability_zone]
41
+
42
+ # check if provided availability_zone is valid
43
+ if availability_zone
44
+ unless availability_zone.match(connection.region)
45
+ raise "availability zone #{availability_zone} is not in the defined region #{connection.region}"
46
+ end
47
+ if zones.first && zones.first != availability_zone
48
+ raise "volume availability zone differs to configured server availability_zone"
49
+ end
50
+ end
51
+
52
+ # check for pre-existing volume(s). if any exist, add their AZ to the server's options
41
53
  if zones.size > 1
42
54
  raise "pre-existing volumes volumes are in different availability zones"
43
55
  elsif zones.size == 1
@@ -119,7 +131,7 @@ module Guignol::Models
119
131
  return
120
132
  end
121
133
  log "updating DNS"
122
-
134
+
123
135
  unless dns_zone
124
136
  log "DNS zone does not exist"
125
137
  return self
@@ -246,7 +258,7 @@ module Guignol::Models
246
258
 
247
259
  def dns_record
248
260
  dns_zone.records.find { |record| record.name == fqdn }
249
- end
261
+ end
250
262
 
251
263
  def dns_record_matches?(record)
252
264
  !!record and record.value.any? { |dns_name| dns_name == subject.dns_name }
@@ -263,4 +275,4 @@ module Guignol::Models
263
275
  find { |s| s.tags['UUID'] == uuid }
264
276
  end
265
277
  end
266
- end
278
+ end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Guignol
3
- VERSION = "0.3.8"
3
+ VERSION = "0.3.9"
4
4
  end
@@ -48,6 +48,17 @@ describe Guignol::Models::Instance do
48
48
  subject.create
49
49
  end
50
50
 
51
+ it 'does not break when providing an availibity zone' do
52
+ instance = described_class.new(name, options.merge(:availability_zone => 'eu-west-1c'))
53
+ expect { instance.create }.to_not raise_error
54
+ end
55
+
56
+ it 'does not allow an availability zone that does not match the region' do
57
+ instance = described_class.new(name, options.merge(:availability_zone => 'us-west-1a'))
58
+ expect { instance.create }.to raise_error('availability zone us-west-1a is not in the defined region eu-west-1')
59
+ end
60
+
61
+ it 'requires existing volumes to live in a given availability zone'
51
62
  it 'reuses existing volumes'
52
63
  it 'fails when existing volumes are in different zones'
53
64
 
@@ -74,4 +85,4 @@ describe Guignol::Models::Instance do
74
85
  subject.destroy
75
86
  end
76
87
  end
77
- end
88
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guignol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Letessier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-20 00:00:00.000000000 Z
11
+ date: 2013-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler