corl 0.5.3 → 0.5.4
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -2
- data/Gemfile.lock +5 -10
- data/VERSION +1 -1
- data/bootstrap/bootstrap.sh +1 -4
- data/bootstrap/os/ubuntu/05_ruby.sh +9 -3
- data/bootstrap/os/ubuntu/10_corl.sh +26 -2
- data/corl.gemspec +7 -10
- data/lib/CORL/machine/AWS.rb +38 -38
- data/lib/CORL/machine/rackspace.rb +2 -3
- data/lib/CORL/node/AWS.rb +36 -36
- data/lib/CORL/node/rackspace.rb +30 -30
- data/lib/core/mod/fog_rackspace_server.rb +29 -0
- data/lib/core/plugin/fog_machine.rb +66 -65
- data/lib/core/plugin/fog_node.rb +56 -56
- data/lib/core/plugin/node.rb +1 -1
- data/lib/corl.rb +14 -14
- data/lib/nucleon/action/node/bootstrap.rb +1 -1
- metadata +20 -30
- data/bootstrap/os/ubuntu/06_puppet.sh +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 881f554ea8a48b043dcd9835c4cad50e4c2b51cb
|
4
|
+
data.tar.gz: 1d1f66df8ea0a33900f95727620e033b99037583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ee65aa1433b07072305fd0e1a4d5d09e61255a59d013df507329681b01f8826084b65cb15edb097e0547278d151fa7129b9f1b3e6c5b2562e64cce309cd878d
|
7
|
+
data.tar.gz: e49913e5c758ee2402edbde41061f0b70c1f2692a92c068a891c6f82d4a8e0035a1382455a4d5b14b07662ad9a0d3ab603440286ef1a4e2d4a7695bf94567aa8
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/coralnexus/nucleon.git
|
3
|
-
revision:
|
3
|
+
revision: 49e01c377d42b1656181b34904f6d7927ecdace4
|
4
4
|
branch: 0.2
|
5
5
|
specs:
|
6
|
-
nucleon (0.2.
|
6
|
+
nucleon (0.2.4)
|
7
7
|
celluloid (~> 0.16)
|
8
8
|
childprocess (~> 0.5)
|
9
9
|
deep_merge (~> 1.0)
|
@@ -72,10 +72,6 @@ GEM
|
|
72
72
|
fog-core
|
73
73
|
fog-xml
|
74
74
|
nokogiri
|
75
|
-
fog-rackspace (1.0.4)
|
76
|
-
addressable
|
77
|
-
fog-core
|
78
|
-
fog-json
|
79
75
|
fog-radosgw (0.0.3)
|
80
76
|
fog-core (>= 1.21.0)
|
81
77
|
fog-json
|
@@ -146,7 +142,7 @@ GEM
|
|
146
142
|
multi_json (~> 1.3)
|
147
143
|
multi_xml (~> 0.5)
|
148
144
|
rack (~> 1.2)
|
149
|
-
octokit (3.
|
145
|
+
octokit (3.7.0)
|
150
146
|
sawyer (~> 0.6.0, >= 0.5.3)
|
151
147
|
opennebula (4.10.1)
|
152
148
|
json
|
@@ -157,7 +153,7 @@ GEM
|
|
157
153
|
hiera (~> 1.0)
|
158
154
|
json_pure
|
159
155
|
rack (1.5.2)
|
160
|
-
rake (10.4.
|
156
|
+
rake (10.4.2)
|
161
157
|
rbvmomi (1.8.2)
|
162
158
|
builder
|
163
159
|
nokogiri (>= 1.4.1)
|
@@ -195,8 +191,7 @@ PLATFORMS
|
|
195
191
|
DEPENDENCIES
|
196
192
|
bundler (~> 1.7)
|
197
193
|
facter (~> 2.3)
|
198
|
-
fog (~> 1.
|
199
|
-
fog-rackspace (~> 1.0)
|
194
|
+
fog (~> 1.23)
|
200
195
|
hiera (~> 1.3)
|
201
196
|
jeweler (~> 2.0)
|
202
197
|
nucleon (~> 0.2, >= 0.2.2)!
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.4
|
data/bootstrap/bootstrap.sh
CHANGED
@@ -29,14 +29,11 @@ Systems initialized:
|
|
29
29
|
* Ruby - Ruby 2.1.x packages installed
|
30
30
|
- Execution alternative configuration (if applicable)
|
31
31
|
- Ruby Gem options initialized
|
32
|
-
|
33
|
-
* Puppet - PuppetLabs Apt source initialized (if applicable)
|
34
|
-
- Puppet and dependencies installed
|
35
|
-
- Hiera configured
|
36
32
|
|
37
33
|
* Nucleon - Nucleon gem and dependencies installed
|
38
34
|
|
39
35
|
* CORL - CORL gem and dependencies installed
|
36
|
+
- Hiera configured
|
40
37
|
|
41
38
|
--------------------------------------------------------------------------------
|
42
39
|
Tested under Ubuntu 12.04 and 14.04 LTS
|
@@ -18,6 +18,8 @@ function initialize_rvm_user()
|
|
18
18
|
|
19
19
|
local PATH_ENTRY='PATH=${PATH}:/usr/local/rvm/bin'
|
20
20
|
local RVMSUDO_SECURE_PATH="export rvmsudo_secure_path=1"
|
21
|
+
local SUDO_ALIAS="alias sudo=rvmsudo"
|
22
|
+
|
21
23
|
local SCRIPT_INCLUDE="[[ -s '/usr/local/rvm/scripts/rvm' ]] && source '/usr/local/rvm/scripts/rvm'"
|
22
24
|
|
23
25
|
echo "3. Initializing RVM user ${USER_NAME} group and environment settings"
|
@@ -30,7 +32,11 @@ function initialize_rvm_user()
|
|
30
32
|
if ! grep -Fxq "$RVMSUDO_SECURE_PATH" "$PROFILE_FILE" >>/tmp/ruby.config.log 2>&1
|
31
33
|
then
|
32
34
|
echo "$RVMSUDO_SECURE_PATH" >> "$PROFILE_FILE"
|
33
|
-
fi
|
35
|
+
fi
|
36
|
+
if ! grep -Fxq "$SUDO_ALIAS" "$PROFILE_FILE" >>/tmp/ruby.config.log 2>&1
|
37
|
+
then
|
38
|
+
echo "$SUDO_ALIAS" >> "$PROFILE_FILE"
|
39
|
+
fi
|
34
40
|
if ! grep -Fxq "$SCRIPT_INCLUDE" "$BASHRC_FILE" >>/tmp/ruby.config.log 2>&1
|
35
41
|
then
|
36
42
|
echo "$SCRIPT_INCLUDE" >> "$BASHRC_FILE"
|
@@ -59,7 +65,7 @@ su - -c "rvm install rbx-2.3.0 --rubygems 2.4.2" root >>/tmp/ruby.config.log 2>&
|
|
59
65
|
su - -c "rvm use rbx-2.3.0 --default" root >>/tmp/ruby.config.log 2>&1 || exit 54
|
60
66
|
|
61
67
|
|
62
|
-
if [ ! -e "
|
68
|
+
if [ ! -e "/root/.gemrc" ]
|
63
69
|
then
|
64
70
|
echo "5. Adding an initial .gemrc configuration"
|
65
71
|
|
@@ -67,5 +73,5 @@ echo "5. Adding an initial .gemrc configuration"
|
|
67
73
|
( cat <<'EOP'
|
68
74
|
gem: --no-rdoc --no-ri
|
69
75
|
EOP
|
70
|
-
) > "
|
76
|
+
) > "/root/.gemrc" || exit 55
|
71
77
|
fi
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
# Uninstall the CORL gem
|
5
5
|
|
6
|
-
echo "1. Removing old versions of
|
6
|
+
echo "1. Removing old versions of CORL gem"
|
7
7
|
su - -c "gem uninstall corl -x --force" root >/tmp/corl.uninstall.log 2>&1 || exit 101
|
8
8
|
|
9
9
|
# Install the CORL gem
|
@@ -27,4 +27,28 @@ then
|
|
27
27
|
else
|
28
28
|
echo "2. Installing latest release of CORL"
|
29
29
|
su - -c "gem install corl" root >/tmp/corl.install.log 2>&1 || exit 102
|
30
|
-
fi
|
30
|
+
fi
|
31
|
+
|
32
|
+
# Set up Hiera configuration
|
33
|
+
mkdir -p /var/corl/config || exit 108
|
34
|
+
|
35
|
+
if [ ! -e /etc/hiera.yaml ]
|
36
|
+
then
|
37
|
+
echo "5. Configuring Hiera"
|
38
|
+
|
39
|
+
( cat <<'EOP'
|
40
|
+
---
|
41
|
+
:merge_behavior: deeper
|
42
|
+
:backends:
|
43
|
+
- yaml
|
44
|
+
- json
|
45
|
+
:yaml:
|
46
|
+
:datadir: /var/corl/config
|
47
|
+
:json:
|
48
|
+
:datadir: /var/corl/config
|
49
|
+
:hierarchy:
|
50
|
+
- common
|
51
|
+
EOP
|
52
|
+
) > /etc/hiera.yaml || exit 109
|
53
|
+
chmod 0440 /etc/hiera.yaml || exit 110
|
54
|
+
fi
|
data/corl.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: corl 0.5.
|
5
|
+
# stub: corl 0.5.4 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "corl"
|
9
|
-
s.version = "0.5.
|
9
|
+
s.version = "0.5.4"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Adrian Webb"]
|
14
|
-
s.date = "2014-12-
|
14
|
+
s.date = "2014-12-04"
|
15
15
|
s.description = "Framework that provides a simple foundation for growing organically in the cloud"
|
16
16
|
s.email = "adrian.webb@coralnexus.com"
|
17
17
|
s.executables = ["corl"]
|
@@ -43,7 +43,6 @@ Gem::Specification.new do |s|
|
|
43
43
|
"bootstrap/os/ubuntu/01_git.sh",
|
44
44
|
"bootstrap/os/ubuntu/02_editor.sh",
|
45
45
|
"bootstrap/os/ubuntu/05_ruby.sh",
|
46
|
-
"bootstrap/os/ubuntu/06_puppet.sh",
|
47
46
|
"bootstrap/os/ubuntu/09_nucleon.sh",
|
48
47
|
"bootstrap/os/ubuntu/10_corl.sh",
|
49
48
|
"corl.gemspec",
|
@@ -70,6 +69,7 @@ Gem::Specification.new do |s|
|
|
70
69
|
"lib/core/mixin/machine/ssh.rb",
|
71
70
|
"lib/core/mixin/macro/network_settings.rb",
|
72
71
|
"lib/core/mod/fog_aws_server.rb",
|
72
|
+
"lib/core/mod/fog_rackspace_server.rb",
|
73
73
|
"lib/core/mod/hiera_backend.rb",
|
74
74
|
"lib/core/plugin/agent.rb",
|
75
75
|
"lib/core/plugin/builder.rb",
|
@@ -177,8 +177,7 @@ Gem::Specification.new do |s|
|
|
177
177
|
|
178
178
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
179
179
|
s.add_runtime_dependency(%q<nucleon>, [">= 0.2.2", "~> 0.2"])
|
180
|
-
s.add_runtime_dependency(%q<fog>, ["~> 1.
|
181
|
-
s.add_runtime_dependency(%q<fog-rackspace>, ["~> 1.0"])
|
180
|
+
s.add_runtime_dependency(%q<fog>, ["~> 1.23"])
|
182
181
|
s.add_runtime_dependency(%q<unf>, ["~> 0.1"])
|
183
182
|
s.add_runtime_dependency(%q<facter>, ["~> 2.3"])
|
184
183
|
s.add_runtime_dependency(%q<hiera>, ["~> 1.3"])
|
@@ -189,8 +188,7 @@ Gem::Specification.new do |s|
|
|
189
188
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
190
189
|
else
|
191
190
|
s.add_dependency(%q<nucleon>, [">= 0.2.2", "~> 0.2"])
|
192
|
-
s.add_dependency(%q<fog>, ["~> 1.
|
193
|
-
s.add_dependency(%q<fog-rackspace>, ["~> 1.0"])
|
191
|
+
s.add_dependency(%q<fog>, ["~> 1.23"])
|
194
192
|
s.add_dependency(%q<unf>, ["~> 0.1"])
|
195
193
|
s.add_dependency(%q<facter>, ["~> 2.3"])
|
196
194
|
s.add_dependency(%q<hiera>, ["~> 1.3"])
|
@@ -202,8 +200,7 @@ Gem::Specification.new do |s|
|
|
202
200
|
end
|
203
201
|
else
|
204
202
|
s.add_dependency(%q<nucleon>, [">= 0.2.2", "~> 0.2"])
|
205
|
-
s.add_dependency(%q<fog>, ["~> 1.
|
206
|
-
s.add_dependency(%q<fog-rackspace>, ["~> 1.0"])
|
203
|
+
s.add_dependency(%q<fog>, ["~> 1.23"])
|
207
204
|
s.add_dependency(%q<unf>, ["~> 0.1"])
|
208
205
|
s.add_dependency(%q<facter>, ["~> 2.3"])
|
209
206
|
s.add_dependency(%q<hiera>, ["~> 1.3"])
|
data/lib/CORL/machine/AWS.rb
CHANGED
@@ -1,49 +1,49 @@
|
|
1
1
|
|
2
2
|
module CORL
|
3
3
|
module Machine
|
4
|
-
class AWS <
|
5
|
-
|
4
|
+
class AWS < FogBase
|
5
|
+
|
6
6
|
#-----------------------------------------------------------------------------
|
7
7
|
# Checks
|
8
|
-
|
8
|
+
|
9
9
|
#-----------------------------------------------------------------------------
|
10
10
|
# Property accessors / modifiers
|
11
|
-
|
11
|
+
|
12
12
|
def set_connection
|
13
13
|
require 'unf'
|
14
14
|
super
|
15
15
|
Kernel.load File.join(File.dirname(__FILE__), '..', '..', 'core', 'mod', 'fog_aws_server.rb')
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
#-----------------------------------------------------------------------------
|
19
19
|
# Management
|
20
20
|
|
21
21
|
def init_server
|
22
22
|
super do
|
23
23
|
myself.plugin_name = @server.id
|
24
|
-
|
24
|
+
|
25
25
|
node[:id] = plugin_name
|
26
26
|
node[:public_ip] = @server.public_ip_address
|
27
|
-
node[:private_ip] = @server.private_ip_address
|
27
|
+
node[:private_ip] = @server.private_ip_address
|
28
28
|
node[:machine_type] = @server.flavor_id
|
29
|
-
node[:image] = @server.image_id
|
29
|
+
node[:image] = @server.image_id
|
30
30
|
node.user = @server.username unless node.user
|
31
|
-
|
31
|
+
|
32
32
|
@server.private_key_path = node.private_key if node.private_key
|
33
33
|
@server.public_key_path = node.public_key if node.public_key
|
34
|
-
end
|
34
|
+
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
#---
|
38
|
-
|
38
|
+
|
39
39
|
def init_ssh(ssh_port)
|
40
40
|
# Security group initialization
|
41
41
|
if compute && ssh_port != 22
|
42
42
|
ensure_security_group("CORL_SSH_#{ssh_port}", ssh_port)
|
43
43
|
end
|
44
44
|
end
|
45
|
-
|
46
|
-
#---
|
45
|
+
|
46
|
+
#---
|
47
47
|
|
48
48
|
def create(options = {})
|
49
49
|
super do |config|
|
@@ -54,36 +54,36 @@ class AWS < Fog
|
|
54
54
|
compute.key_pairs.create(
|
55
55
|
:name => keypair_name,
|
56
56
|
:public_key => Util::Disk.read(node.public_key)
|
57
|
-
)
|
57
|
+
)
|
58
58
|
config[:key_name] = keypair_name
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
#---
|
63
|
-
|
63
|
+
|
64
64
|
def reload(options = {})
|
65
65
|
super do |config|
|
66
66
|
success = server.reboot
|
67
|
-
|
67
|
+
|
68
68
|
server.wait_for { ready? } if success
|
69
69
|
success
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
#---
|
74
|
-
|
74
|
+
|
75
75
|
def create_image(options = {})
|
76
76
|
super do |image_name, config, success|
|
77
77
|
image_name = image_name.gsub(/[^A-Za-z0-9\(\)\.\-\_\/]+/, '_')
|
78
78
|
image_description = config.get(:description, "CORL backup image")
|
79
|
-
|
79
|
+
|
80
80
|
data = compute.create_image(server.identity, image_name, image_description)
|
81
81
|
image_id = data.body['imageId']
|
82
|
-
|
83
|
-
|
82
|
+
|
83
|
+
Fog.wait_for do
|
84
84
|
compute.describe_images('ImageId' => image_id).body['imagesSet'].first['imageState'] == 'available'
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
if image_id
|
88
88
|
node[:image] = image_id
|
89
89
|
success = true
|
@@ -91,7 +91,7 @@ class AWS < Fog
|
|
91
91
|
success
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
#---
|
96
96
|
|
97
97
|
def destroy(options = {})
|
@@ -102,36 +102,36 @@ class AWS < Fog
|
|
102
102
|
key_pair.destroy
|
103
103
|
end
|
104
104
|
end
|
105
|
-
true
|
105
|
+
true
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
#-----------------------------------------------------------------------------
|
110
110
|
# Utilities
|
111
|
-
|
111
|
+
|
112
112
|
def keypair_name
|
113
|
-
"CORL_#{node.plugin_name}"
|
113
|
+
"CORL_#{node.plugin_name}"
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
#---
|
117
|
-
|
117
|
+
|
118
118
|
def ensure_security_group(group_name, from_port, to_port = nil, options = {})
|
119
119
|
config = Config.ensure(options)
|
120
120
|
security_group = compute.security_groups.get(group_name)
|
121
121
|
cidrip = config.get(:cidrip, '0.0.0.0/0')
|
122
122
|
protocol = config.get(:protocol, 'tcp')
|
123
123
|
to_port = from_port if to_port.nil?
|
124
|
-
|
124
|
+
|
125
125
|
if security_group.nil?
|
126
126
|
security_group = compute.security_groups.create(
|
127
127
|
:name => group_name,
|
128
|
-
:description => config.get(:description, "Opening port range: #{from_port} to #{to_port}")
|
129
|
-
)
|
130
|
-
raise unless security_group # TODO: Better error class
|
128
|
+
:description => config.get(:description, "Opening port range: #{from_port} to #{to_port}")
|
129
|
+
)
|
130
|
+
raise unless security_group # TODO: Better error class
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
authorized = false
|
134
|
-
if security_group.ip_permissions
|
134
|
+
if security_group.ip_permissions
|
135
135
|
authorized = security_group.ip_permissions.detect do |ip_permission|
|
136
136
|
ip_permission['ipRanges'].first && ip_permission['ipRanges'].first['cidrIp'] == cidrip &&
|
137
137
|
ip_permission['fromPort'] == from_port &&
|
@@ -142,7 +142,7 @@ class AWS < Fog
|
|
142
142
|
unless authorized
|
143
143
|
security_group.authorize_port_range(Range.new(from_port, to_port))
|
144
144
|
end
|
145
|
-
|
145
|
+
|
146
146
|
if server
|
147
147
|
server.groups = [ group_name ] | server.groups
|
148
148
|
server.save
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
module CORL
|
3
3
|
module Machine
|
4
|
-
class Rackspace <
|
4
|
+
class Rackspace < FogBase
|
5
5
|
|
6
6
|
#-----------------------------------------------------------------------------
|
7
7
|
# Checks
|
@@ -10,9 +10,8 @@ class Rackspace < Fog
|
|
10
10
|
# Property accessors / modifiers
|
11
11
|
|
12
12
|
def set_connection
|
13
|
-
require 'fog-rackspace'
|
14
13
|
super
|
15
|
-
|
14
|
+
Kernel.load File.join(File.dirname(__FILE__), '..', '..', 'core', 'mod', 'fog_rackspace_server.rb')
|
16
15
|
end
|
17
16
|
|
18
17
|
#-----------------------------------------------------------------------------
|
data/lib/CORL/node/AWS.rb
CHANGED
@@ -1,63 +1,63 @@
|
|
1
1
|
|
2
2
|
module CORL
|
3
3
|
module Node
|
4
|
-
class AWS <
|
5
|
-
|
4
|
+
class AWS < FogBase
|
5
|
+
|
6
6
|
#-----------------------------------------------------------------------------
|
7
7
|
# Node plugin interface
|
8
|
-
|
8
|
+
|
9
9
|
def normalize(reload)
|
10
10
|
super do
|
11
11
|
region_info.import({
|
12
|
-
'us-east-1' => 'US East -- North Virginia',
|
13
|
-
'us-west-1' => 'US West -- North California',
|
12
|
+
'us-east-1' => 'US East -- North Virginia',
|
13
|
+
'us-west-1' => 'US West -- North California',
|
14
14
|
'us-west-2' => 'US West -- Oregon',
|
15
15
|
'eu-west-1' => 'EU -- Ireland',
|
16
|
-
'ap-northeast-1' => 'Asia Pacific -- Tokyo',
|
17
|
-
'ap-southeast-1' => 'Asia Pacific -- Singapore',
|
18
|
-
'ap-southeast-2' => 'Asia Pacific -- Sydney',
|
16
|
+
'ap-northeast-1' => 'Asia Pacific -- Tokyo',
|
17
|
+
'ap-southeast-1' => 'Asia Pacific -- Singapore',
|
18
|
+
'ap-southeast-2' => 'Asia Pacific -- Sydney',
|
19
19
|
'sa-east-1' => 'South America -- Sao Paulo'
|
20
20
|
})
|
21
|
-
|
22
|
-
# Return machine provider
|
21
|
+
|
22
|
+
# Return machine provider
|
23
23
|
:aws
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
#-----------------------------------------------------------------------------
|
28
28
|
# Checks
|
29
|
-
|
29
|
+
|
30
30
|
def usable_image?(image)
|
31
31
|
image.state == 'available' && image.name
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
#-----------------------------------------------------------------------------
|
35
35
|
# Property accessors / modifiers
|
36
|
-
|
36
|
+
|
37
37
|
#-----------------------------------------------------------------------------
|
38
38
|
# Settings groups
|
39
|
-
|
39
|
+
|
40
40
|
def machine_config
|
41
41
|
super do |config|
|
42
|
-
config.import({
|
42
|
+
config.import({
|
43
43
|
:provider => 'AWS',
|
44
44
|
:region => region.to_s
|
45
45
|
})
|
46
|
-
|
46
|
+
|
47
47
|
config[:aws_access_key_id] = api_user if api_user
|
48
48
|
config[:aws_secret_access_key] = api_key if api_key
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
#---
|
53
|
-
|
53
|
+
|
54
54
|
def create_config
|
55
|
-
{ :flavor_id => machine_type, :image_id => image, :username => user }
|
55
|
+
{ :flavor_id => machine_type, :image_id => image, :username => user }
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
#-----------------------------------------------------------------------------
|
59
59
|
# Node operations
|
60
|
-
|
60
|
+
|
61
61
|
def create(options = {})
|
62
62
|
super do |op, config|
|
63
63
|
if op == :config
|
@@ -65,9 +65,9 @@ class AWS < Fog
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
#---
|
70
|
-
|
70
|
+
|
71
71
|
def start(options = {})
|
72
72
|
super do |op, config|
|
73
73
|
if op == :config
|
@@ -75,33 +75,33 @@ class AWS < Fog
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
#-----------------------------------------------------------------------------
|
80
80
|
# Utilities
|
81
|
-
|
81
|
+
|
82
82
|
def render_machine_type(machine_type)
|
83
|
-
sprintf("%-25s %-50s [ VCPUS: %-5s ] ( RAM: %6sMB | DISK: %8sGB ) ( BITS: %5s )",
|
83
|
+
sprintf("%-25s %-50s [ VCPUS: %-5s ] ( RAM: %6sMB | DISK: %8sGB ) ( BITS: %5s )",
|
84
84
|
purple(machine_type_id(machine_type)),
|
85
|
-
yellow(machine_type.name),
|
86
|
-
blue(machine_type.cores.to_s),
|
87
|
-
blue(machine_type.ram.to_s),
|
88
|
-
blue(machine_type.disk.to_s),
|
85
|
+
yellow(machine_type.name),
|
86
|
+
blue(machine_type.cores.to_s),
|
87
|
+
blue(machine_type.ram.to_s),
|
88
|
+
blue(machine_type.disk.to_s),
|
89
89
|
blue(machine_type.bits.to_s)
|
90
90
|
)
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
#---
|
94
|
-
|
94
|
+
|
95
95
|
def render_image(image)
|
96
96
|
description = image.name
|
97
97
|
description = image.description if image.description && ! image.description.empty?
|
98
|
-
|
98
|
+
|
99
99
|
location = image.location.split('/').first
|
100
100
|
sprintf("%-23s [ %-10s | %-6s ] %s ( %s )", purple(image_id(image)), blue(image.state), image.architecture, yellow(description), cyan(location))
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
#---
|
104
|
-
|
104
|
+
|
105
105
|
def image_search_text(image)
|
106
106
|
location = image.location.split('/').first
|
107
107
|
location = location.match(/^\d+$/) ? '' : location
|