opendelivery 0.0.8 → 0.0.9

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.
@@ -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