dployr 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -4
- data/dployr.gemspec +2 -2
- data/lib/dployr/commands/base.rb +4 -6
- data/lib/dployr/configuration.rb +24 -2
- data/lib/dployr/init.rb +7 -6
- data/lib/dployr/version.rb +1 -1
- data/spec/configuration_spec.rb +7 -6
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c5a14e300cb3831bedf130b3a12975e13fbbad8
|
4
|
+
data.tar.gz: 29fa5cbb80af3b030fd181f5231cbb062f85290e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65d4d90a2364345c3c259062413ef105330ca17830480c56d95347be455011133d067ee8467f67e4dcd93c46dee524a5bb03ca8b7b0ceaa18566489620dd96fc
|
7
|
+
data.tar.gz: 0376ef3eda087804224485fbdbcab63fbe78fa88d5320058b9a017a405926fbafcf43af9bb1713a0fe3c414ab445e4c335d8b73baa8f19f508d7fb27fcf64122
|
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# dployr [![Build Status](https://secure.travis-ci.org/innotech/dployr.svg?branch=master)][travis] [![Dependency Status](https://gemnasium.com/innotech/dployr.svg)][gemnasium] [![Gem](https://badge.fury.io/rb/dployr.svg)][gem]
|
2
2
|
|
3
|
-
> Multicloud management and deployment made simple
|
4
|
-
|
5
3
|
> **Alpha project, use it by your own risk**
|
6
4
|
|
7
5
|
<table>
|
@@ -19,10 +17,10 @@
|
|
19
17
|
and deployment** across different providers
|
20
18
|
|
21
19
|
You can setup all your project cloud infraestructure from a
|
22
|
-
simple configuration file and deploy it into multiple clouds easily
|
20
|
+
simple [configuration file](#configuration) and deploy it into multiple clouds easily
|
23
21
|
|
24
22
|
Through Dployr you can take full control about the multiple stages phases
|
25
|
-
which covers the
|
23
|
+
which covers the complete infrastructure workflow,
|
26
24
|
such as instances creation, network configuration, provisioning, testing and halting
|
27
25
|
|
28
26
|
It provides a featured [command-line interface](#command-line-interface) and [programmatic API](#programmatic-api)
|
data/dployr.gemspec
CHANGED
@@ -4,8 +4,8 @@ require 'dployr/version'
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "dployr"
|
6
6
|
s.version = Dployr::VERSION
|
7
|
-
s.summary = "Multicloud management and deployment
|
8
|
-
s.description = "Multicloud management and deployment
|
7
|
+
s.summary = "Multicloud management and deployment made simple"
|
8
|
+
s.description = "Multicloud management and deployment made simple from a single configuration file with a featured CLI and programmatic API, supporting deployment stages, local scripts and remote scripts execution and more"
|
9
9
|
s.authors = ["Tomas Aparicio", "German Ramos"]
|
10
10
|
s.email = ["nerds@innotechapp.com"]
|
11
11
|
s.homepage = "https://github.com/innotech/dployr"
|
data/lib/dployr/commands/base.rb
CHANGED
@@ -39,17 +39,15 @@ module Dployr
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
def get_region_config(options)
|
43
|
-
@dployr.config.get_region options[:name], options[:provider], options[:region]
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
42
|
def get_config
|
49
43
|
@config = get_region_config @options
|
50
44
|
@p_attrs = @config[:attributes]
|
51
45
|
end
|
52
46
|
|
47
|
+
def get_region_config(options)
|
48
|
+
@dployr.config.get_region options[:name], options[:provider], options[:region]
|
49
|
+
end
|
50
|
+
|
53
51
|
end
|
54
52
|
end
|
55
53
|
end
|
data/lib/dployr/configuration.rb
CHANGED
@@ -125,6 +125,26 @@ module Dployr
|
|
125
125
|
attrs
|
126
126
|
end
|
127
127
|
|
128
|
+
# Pending refactor
|
129
|
+
def get_inherited_attributes(config, provider, region)
|
130
|
+
config = merge_defaults(config)
|
131
|
+
attrs = config[:attributes].is_a?(Hash) ? deep_copy(config[:attributes]) : {}
|
132
|
+
|
133
|
+
if current = get_by_key(config, :providers)
|
134
|
+
attrs.merge! current[:attributes] if current[:attributes].is_a? Hash
|
135
|
+
if current = get_by_key(current, provider)
|
136
|
+
attrs.merge! get_by_key(current, :attributes) if get_by_key(current, :attributes).is_a? Hash
|
137
|
+
if (regions = get_by_key current, :regions).is_a? Hash
|
138
|
+
attrs.merge! get_by_key(regions, :attributes) if get_by_key(regions, :attributes).is_a? Hash
|
139
|
+
if (region = get_by_key regions, region).is_a? Hash
|
140
|
+
attrs.merge! get_by_key(region, :attributes) if get_by_key(region, :attributes).is_a? Hash
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
attrs
|
146
|
+
end
|
147
|
+
|
128
148
|
def merge_config(instance, attributes = {})
|
129
149
|
config = merge_defaults instance.get_values
|
130
150
|
config[:attributes] =
|
@@ -140,11 +160,13 @@ module Dployr
|
|
140
160
|
def merge_providers(config)
|
141
161
|
key = get_real_key config, :providers
|
142
162
|
if config[key].is_a? Hash
|
143
|
-
config[key].each do |
|
144
|
-
provider = replace_keywords 'provider',
|
163
|
+
config[key].each do |provider_name, provider|
|
164
|
+
provider = replace_keywords 'provider', provider_name, inherit_config(provider, config)
|
145
165
|
regions = get_by_key provider, get_real_key(provider, :regions)
|
146
166
|
regions.each do |name, region|
|
147
167
|
regions[name] = replace_keywords 'region', name, inherit_config(region, provider)
|
168
|
+
attrs = get_inherited_attributes config, provider_name, name
|
169
|
+
regions[name] = replace_variables regions[name], attrs
|
148
170
|
end if regions
|
149
171
|
end
|
150
172
|
end
|
data/lib/dployr/init.rb
CHANGED
@@ -43,11 +43,12 @@ module Dployr
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def load_config(file_path = nil)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
@file_path =
|
47
|
+
if file_path
|
48
|
+
file_path
|
49
|
+
else
|
50
|
+
discover
|
51
|
+
end
|
51
52
|
set_config @file_path
|
52
53
|
end
|
53
54
|
|
@@ -67,7 +68,7 @@ module Dployr
|
|
67
68
|
config = read_yaml file_path
|
68
69
|
if config.is_a? Hash
|
69
70
|
config.each do |name, config|
|
70
|
-
if name == 'default'
|
71
|
+
if name.to_s == 'default'
|
71
72
|
@config.set_default config
|
72
73
|
else
|
73
74
|
@config.add_instance name, config
|
data/lib/dployr/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -18,7 +18,9 @@ describe Dployr::Configuration do
|
|
18
18
|
attributes: {
|
19
19
|
name: "example",
|
20
20
|
instance_type: "m1.small",
|
21
|
-
version: "${DPLOYR}"
|
21
|
+
version: "${DPLOYR}",
|
22
|
+
network_id: "be457fca",
|
23
|
+
mixed: "%{network_id}-%{instance_type}"
|
22
24
|
},
|
23
25
|
scripts: [
|
24
26
|
{ path: "configure.sh" }
|
@@ -28,8 +30,7 @@ describe Dployr::Configuration do
|
|
28
30
|
attributes: {
|
29
31
|
network_id: "be457fca",
|
30
32
|
instance_type: "m1.small",
|
31
|
-
"type-%{name}" => "small"
|
32
|
-
mixed: "%{network_id}-%{instance_type}"
|
33
|
+
"type-%{name}" => "small"
|
33
34
|
},
|
34
35
|
scripts: [
|
35
36
|
{
|
@@ -60,7 +61,7 @@ describe Dployr::Configuration do
|
|
60
61
|
|
61
62
|
it "should have valid attributes" do
|
62
63
|
config.default.attributes.should be_a Hash
|
63
|
-
config.default.attributes.should have(
|
64
|
+
config.default.attributes.should have(5).items
|
64
65
|
end
|
65
66
|
|
66
67
|
it "should have scripts" do
|
@@ -225,7 +226,7 @@ describe Dployr::Configuration do
|
|
225
226
|
}
|
226
227
|
|
227
228
|
it "should have a valid number of attributes" do
|
228
|
-
gce[:attributes].should have(
|
229
|
+
gce[:attributes].should have(5).items
|
229
230
|
end
|
230
231
|
|
231
232
|
it "should have the instance_type attributes" do
|
@@ -246,7 +247,7 @@ describe Dployr::Configuration do
|
|
246
247
|
}
|
247
248
|
|
248
249
|
it "should have a valid number of attributes" do
|
249
|
-
region[:attributes].should have(
|
250
|
+
region[:attributes].should have(6).items
|
250
251
|
end
|
251
252
|
|
252
253
|
it "should have inherited scripts" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dployr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Aparicio
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
@@ -109,8 +109,9 @@ dependencies:
|
|
109
109
|
- - ~>
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '2'
|
112
|
-
description: Multicloud management and deployment
|
113
|
-
a
|
112
|
+
description: Multicloud management and deployment made simple from a single configuration
|
113
|
+
file with a featured CLI and programmatic API, supporting deployment stages, local
|
114
|
+
scripts and remote scripts execution and more
|
114
115
|
email:
|
115
116
|
- nerds@innotechapp.com
|
116
117
|
executables:
|
@@ -198,7 +199,7 @@ rubyforge_project: dployr
|
|
198
199
|
rubygems_version: 2.0.6
|
199
200
|
signing_key:
|
200
201
|
specification_version: 4
|
201
|
-
summary: Multicloud management and deployment
|
202
|
+
summary: Multicloud management and deployment made simple
|
202
203
|
test_files:
|
203
204
|
- spec/commands_config_spec.rb
|
204
205
|
- spec/commands_util_spec.rb
|