opendelivery 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,30 +18,22 @@ module OpenDelivery
18
18
  end
19
19
 
20
20
  def destroy(domain)
21
- @sdb.domains[domain].delete
22
- end
23
-
24
- def destroy_item(domain, item_name)
25
- @sdb.domains[domain].items[item_name].delete
21
+ AWS::SimpleDB.consistent_reads do
22
+ @sdb.domains[domain].delete
23
+ end
26
24
  end
27
25
 
28
26
  def get_property(domain, item_name, key)
29
27
  AWS::SimpleDB.consistent_reads do
30
28
  item = @sdb.domains[domain].items[item_name]
31
- item.attributes.each_value do |name, value|
32
- if name == key
33
- @property_value = value.chomp
34
- end
35
- end
29
+ property_value = item.attributes[key].values[0].chomp
36
30
  end
37
-
38
- return @property_value
39
31
  end
40
32
 
41
- def set_property(domain, item_name, property, value)
33
+ def set_property(domain, item_name, key, value)
42
34
  AWS::SimpleDB.consistent_reads do
43
35
  item = @sdb.domains[domain].items[item_name]
44
- item.attributes.set(property => [value])
36
+ item.attributes.set(key => [value])
45
37
  end
46
38
  end
47
39
  end
@@ -1,23 +1,37 @@
1
1
  require 'aws-sdk'
2
2
 
3
3
  module OpenDelivery
4
- class Image
4
+ class MachineImage
5
5
 
6
6
  def initialize(region=nil)
7
7
  if region.nil?
8
8
  @ec2 = AWS::EC2.new
9
9
  @sdb = AWS::SimpleDB.new
10
10
  @auto_scale = AWS::AutoScaling.new
11
+ @domain = OpenDelivery::Domain.new
11
12
  else
12
13
  @ec2 = AWS::EC2.new(:region => region)
13
14
  @sdb = AWS::SimpleDB.new(:region => region)
14
15
  @auto_scale = AWS::AutoScaling.new(:region => region)
16
+ @domain = OpenDelivery::Domain.new(:region => region)
15
17
  end
16
18
  end
17
19
 
18
- protected
20
+ def create(domain, stack_name, type, key)
21
+ instance_id = prep_instance(domain, stack_name)
22
+ image = @ec2.images.create(
23
+ instance_id: instance_id,
24
+ name: image_name)
25
+
26
+ wait_for_image(image)
27
+
28
+ @domain.set_property(domain, key, type, image.id)
29
+ end
30
+
31
+ private
19
32
 
20
33
  def wait_for_image(image)
34
+ # Waiting for AWS to realize the image is ready to start
21
35
  sleep 10
22
36
 
23
37
  while image.state != :available
@@ -32,8 +32,6 @@ module OpenDelivery
32
32
  "UPDATE_ROLLBACK_IN_PROGRESS",
33
33
  "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS" ]
34
34
 
35
- attr_accessor :sleep_time, :silent, :cfm
36
-
37
35
  def watch(stack_name, sleep_time, silent=false)
38
36
  success = false
39
37
  begin
@@ -47,7 +45,7 @@ module OpenDelivery
47
45
  end
48
46
 
49
47
 
50
- def create(template, stack_name, parameters = {}, wait=false)
48
+ def create(stack_name, template, parameters = {}, wait=false, domain=nil)
51
49
  stack = @cfn.stacks.create(stack_name,
52
50
  File.open(template, "r").read,
53
51
  :parameters => parameters,
@@ -58,13 +56,16 @@ module OpenDelivery
58
56
  wait_for_stack(stack)
59
57
  end
60
58
 
61
- stack.resources.each do |resource|
62
- @domain.set_property(domain, stack_name, resource.resource_type, resource.physical_resource_id)
59
+ if domain.nil
60
+ stack.resources.each do |resource|
61
+ @domain.set_property(domain, stack_name, resource.resource_type, resource.physical_resource_id)
62
+ end
63
63
  end
64
64
  end
65
65
 
66
- def destroy(domain, stack_name, wait=false)
66
+ def destroy(stack_name, domain=nil, wait=false)
67
67
  stack = @cfn.stacks[stack_name]
68
+ unless stack.exists? raise "Stack: #{stack_name} doesn't exist, therefore it cannot be destroyed"
68
69
  stack.delete
69
70
  while wait and stack.exists?
70
71
  sleep 20
@@ -78,22 +79,21 @@ module OpenDelivery
78
79
  end
79
80
  end
80
81
 
81
- protected
82
+ private
82
83
 
83
84
  def wait_for_stack(stack)
84
85
  while stack.status != "CREATE_COMPLETE"
85
86
  sleep 20
86
87
 
87
- case stack.status
88
- when "ROLLBACK_IN_PROGESS" || "ROLLBACK_COMPLETE"
88
+ if FAILURE_STATUSES.include? stack.status
89
89
  stack.delete
90
90
  end
91
91
  end
92
92
  end
93
93
 
94
- def print_status status
94
+ def print_status(status, silent)
95
95
  timestamp = Time.now.strftime("%Y.%m.%d %H:%M:%S:%L")
96
- if (!@silent)
96
+ unless silent
97
97
  puts "#{timestamp}: #{status}"
98
98
  end
99
99
  end
data/lib/opendelivery.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'opendelivery/source_control.rb'
2
2
  require 'opendelivery/domain.rb'
3
- require 'opendelivery/image.rb'
3
+ require 'opendelivery/machine_image.rb'
4
4
  require 'opendelivery/stack.rb'
5
5
  require 'opendelivery/storage.rb'
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opendelivery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,6 +13,54 @@ bindir: bin
13
13
  cert_chain: []
14
14
  date: 2013-08-30 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - '='
22
+ - !ruby/object:Gem::Version
23
+ version: 2.14.1
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - '='
30
+ - !ruby/object:Gem::Version
31
+ version: 2.14.1
32
+ - !ruby/object:Gem::Dependency
33
+ name: simplecov
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - '='
38
+ - !ruby/object:Gem::Version
39
+ version: 0.7.1
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.7.1
48
+ - !ruby/object:Gem::Dependency
49
+ name: cucumber
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.3.6
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - '='
62
+ - !ruby/object:Gem::Version
63
+ version: 1.3.6
16
64
  - !ruby/object:Gem::Dependency
17
65
  name: aws-sdk
18
66
  requirement: !ruby/object:Gem::Requirement
@@ -69,7 +117,7 @@ extra_rdoc_files: []
69
117
  files:
70
118
  - lib/opendelivery.rb
71
119
  - lib/opendelivery/domain.rb
72
- - lib/opendelivery/image.rb
120
+ - lib/opendelivery/machine_image.rb
73
121
  - lib/opendelivery/source_control.rb
74
122
  - lib/opendelivery/stack.rb
75
123
  - lib/opendelivery/storage.rb