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.
- data/lib/opendelivery/domain.rb +6 -14
- data/lib/opendelivery/{image.rb → machine_image.rb} +16 -2
- data/lib/opendelivery/stack.rb +11 -11
- data/lib/opendelivery.rb +1 -1
- metadata +50 -2
data/lib/opendelivery/domain.rb
CHANGED
@@ -18,30 +18,22 @@ module OpenDelivery
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def destroy(domain)
|
21
|
-
|
22
|
-
|
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.
|
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,
|
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(
|
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
|
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
|
-
|
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
|
data/lib/opendelivery/stack.rb
CHANGED
@@ -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(
|
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
|
-
|
62
|
-
|
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(
|
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
|
-
|
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
|
-
|
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
|
94
|
+
def print_status(status, silent)
|
95
95
|
timestamp = Time.now.strftime("%Y.%m.%d %H:%M:%S:%L")
|
96
|
-
|
96
|
+
unless silent
|
97
97
|
puts "#{timestamp}: #{status}"
|
98
98
|
end
|
99
99
|
end
|
data/lib/opendelivery.rb
CHANGED
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.
|
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/
|
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
|