lorj_cloud 0.1.1 → 0.1.2
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/lib/lorj_cloud/version.rb +2 -2
- data/lib/process/cloud/process/keypairs.rb +23 -7
- data/lib/process/cloud/process/public_ip.rb +2 -2
- data/lib/process/cloud/process/security_groups.rb +16 -4
- data/lib/process/cloud/process/server.rb +7 -2
- data/lib/process/cloud/providers/hpcloud/compute.rb +5 -0
- data/lib/process/cloud/providers/hpcloud/hpcloud.rb +13 -5
- data/lib/process/cloud/providers/openstack/openstack.rb +12 -7
- data/lib/process/cloud/providers/openstack/openstack_get.rb +2 -0
- data/lorj_cloud.gemspec +2 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18667a9e2559cedc572e479ea365835bc026849e
|
4
|
+
data.tar.gz: 823ba90cf29360f228c5ee561fec98f5d58e8f37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c591e614887169d6badb2e8b434df750ed54f140900993b66c971499f556c3c432f9458c41ef978274e06d3eb0810fbafb9f3f9142ce7924347609a476b971a
|
7
|
+
data.tar.gz: 67dbe332d5b8719393a0c2f3af55f9a130a2e05d98da194d29b79be01ded3a3d9683c247df873940a679ff36ebc453999fd61782a6bbcc9995c2d6fe0cb82c39
|
data/lib/lorj_cloud/version.rb
CHANGED
@@ -40,15 +40,22 @@ class CloudProcess
|
|
40
40
|
#
|
41
41
|
def forj_get_or_create_keypair(sCloudObj, hParams)
|
42
42
|
keypair_name = hParams['credentials#keypair_name']
|
43
|
+
|
43
44
|
PrcLib.state("Searching for keypair '%s'", keypair_name)
|
44
45
|
|
45
46
|
keypair = forj_get_keypair(sCloudObj, keypair_name, hParams)
|
46
|
-
if keypair.empty?
|
47
|
+
if keypair.empty? &&
|
48
|
+
hParams.exist?(:keypair_path) && hParams.exist?(:keypair_base)
|
49
|
+
|
47
50
|
loc_kpair = keypair_detect(keypair_name, hParams[:keypair_path],
|
48
51
|
hParams[:keypair_base])
|
49
52
|
keypair = keypair_import(hParams, loc_kpair)
|
50
53
|
else
|
51
|
-
|
54
|
+
if keypair.empty?
|
55
|
+
PrcLib.warning("keypair '%s' was not found.", keypair_name)
|
56
|
+
else
|
57
|
+
keypair_display(keypair)
|
58
|
+
end
|
52
59
|
end
|
53
60
|
keypair
|
54
61
|
end
|
@@ -56,16 +63,18 @@ class CloudProcess
|
|
56
63
|
# Query cloud keypairs and check coherence with local files
|
57
64
|
# of same name in forj files located by :keypair_path
|
58
65
|
def forj_query_keypairs(sCloudObj, sQuery, hParams)
|
59
|
-
keypair_path = File.expand_path(hParams[:keypair_path])
|
60
|
-
keypair_base = File.expand_path(hParams[:keypair_base])
|
61
|
-
|
62
66
|
ssl_error_obj = SSLErrorMgt.new
|
63
67
|
begin
|
64
68
|
keypairs = controller_query(sCloudObj, sQuery)
|
65
69
|
rescue => e
|
66
70
|
retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
|
67
71
|
end
|
72
|
+
return keypairs unless hParams.exist?(:keypair_path) &&
|
73
|
+
hParams.exist?(:keypair_base)
|
68
74
|
# Looping on keypairs to identify if they have a valid local ssh key.
|
75
|
+
keypair_path = File.expand_path(hParams[:keypair_path])
|
76
|
+
keypair_base = File.expand_path(hParams[:keypair_base])
|
77
|
+
|
69
78
|
keypairs.each do |keypair|
|
70
79
|
loc_kpair = keypair_detect(keypair_name, keypair_path, keypair_base)
|
71
80
|
keypair_files_detected(keypair, loc_kpair)
|
@@ -83,6 +92,7 @@ class CloudProcess
|
|
83
92
|
retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
|
84
93
|
end
|
85
94
|
|
95
|
+
return keypair unless hParams.exist?(:keypair_path)
|
86
96
|
keypair_path = File.expand_path(hParams[:keypair_path])
|
87
97
|
loc_kpair = keypair_detect(keypair_name, keypair_path, keypair_name)
|
88
98
|
keypair_files_detected(keypair, loc_kpair) unless keypair.empty?
|
@@ -103,11 +113,12 @@ class Lorj::BaseDefinition
|
|
103
113
|
|
104
114
|
obj_needs :CloudObject, :compute_connection
|
105
115
|
obj_needs :data, 'credentials#keypair_name', :for => [:create_e]
|
116
|
+
|
117
|
+
obj_needs_optional
|
118
|
+
# By default optional. But required by the ssh case if needed.
|
106
119
|
obj_needs :data, :keypair_path
|
107
120
|
obj_needs :data, :keypair_base
|
108
|
-
|
109
121
|
# By default optional. But required by the import case if needed.
|
110
|
-
obj_needs_optional
|
111
122
|
obj_needs :data, :public_key, :for => [:create_e]
|
112
123
|
|
113
124
|
def_attribute :public_key
|
@@ -120,6 +131,11 @@ class CloudProcess
|
|
120
131
|
def keypair_display(keypair)
|
121
132
|
PrcLib.info("Found keypair '%s'.", keypair[:name])
|
122
133
|
|
134
|
+
unless keypair.exist?(:keypair_path)
|
135
|
+
PrcLib.info('Unable to verify your keypair with your local files.'\
|
136
|
+
' :keypair_path is missing.')
|
137
|
+
return
|
138
|
+
end
|
123
139
|
private_key_file = File.join(keypair[:keypair_path],
|
124
140
|
keypair[:private_key_name])
|
125
141
|
public_key_file = File.join(keypair[:keypair_path],
|
@@ -71,8 +71,8 @@ end
|
|
71
71
|
class Lorj::BaseDefinition
|
72
72
|
define_obj(:public_ip,
|
73
73
|
:create_e => :forj_get_or_assign_public_address,
|
74
|
-
:query_e
|
75
|
-
|
74
|
+
:query_e => :forj_query_public_address,
|
75
|
+
:get_e => :forj_get_public_address
|
76
76
|
# :update_e => :forj_update_address
|
77
77
|
# :delete_e => :forj_delete_address
|
78
78
|
)
|
@@ -31,8 +31,21 @@ class CloudProcess
|
|
31
31
|
register(security_group)
|
32
32
|
|
33
33
|
PrcLib.info('Configuring Security Group \'%s\'', sg_name)
|
34
|
-
|
34
|
+
if hParams.exist?('server#ports')
|
35
|
+
ports = hParams['server#ports']
|
36
|
+
else # case kept for compatibility.
|
37
|
+
ports = config[:ports]
|
38
|
+
end
|
39
|
+
|
40
|
+
return security_group unless ports.is_a?(Array)
|
35
41
|
|
42
|
+
forj_sg_update_ports(ports)
|
43
|
+
|
44
|
+
security_group
|
45
|
+
end
|
46
|
+
|
47
|
+
# forj get or create port on SG
|
48
|
+
def forj_sg_update_ports(ports)
|
36
49
|
ports.each do |port|
|
37
50
|
port = port.to_s if port.class != String
|
38
51
|
if !(/^\d+(-\d+)?$/ =~ port)
|
@@ -55,7 +68,6 @@ class CloudProcess
|
|
55
68
|
process_create(:rule, params)
|
56
69
|
end
|
57
70
|
end
|
58
|
-
security_group
|
59
71
|
end
|
60
72
|
|
61
73
|
# Process Delete handler
|
@@ -80,8 +92,7 @@ class CloudProcess
|
|
80
92
|
end
|
81
93
|
case sgroups.length
|
82
94
|
when 0
|
83
|
-
PrcLib.info("No security group '%s' found",
|
84
|
-
hParams[:security_group])
|
95
|
+
PrcLib.info("No security group '%s' found", hParams[:security_group])
|
85
96
|
nil
|
86
97
|
when 1
|
87
98
|
PrcLib.info("Found security group '%s'", sgroups[0, :name])
|
@@ -102,6 +113,7 @@ class Lorj::BaseDefinition
|
|
102
113
|
obj_needs :CloudObject, :network_connection
|
103
114
|
obj_needs :data, :security_group, :for => [:create_e]
|
104
115
|
obj_needs_optional
|
116
|
+
obj_needs :data, 'server#ports', :for => [:create_e]
|
105
117
|
obj_needs :data, :sg_desc, :for => [:create_e]
|
106
118
|
end
|
107
119
|
|
@@ -48,7 +48,7 @@ class CloudProcess
|
|
48
48
|
def forj_query_server(sCloudObj, sQuery, _hParams)
|
49
49
|
ssl_error_obj = SSLErrorMgt.new
|
50
50
|
begin
|
51
|
-
|
51
|
+
query_single(sCloudObj, sQuery, config[:search_for])
|
52
52
|
rescue => e
|
53
53
|
retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
|
54
54
|
end
|
@@ -93,7 +93,12 @@ class Lorj::BaseDefinition
|
|
93
93
|
predefine_data_value :boot, :desc => 'Server is booting.'
|
94
94
|
predefine_data_value :active, :desc => 'Server is started.'
|
95
95
|
predefine_data_value :error, :desc => 'Server is in error.'
|
96
|
-
|
96
|
+
predefine_data_value :shutdown, :desc => 'Server is down.'
|
97
|
+
# The private addresses attribute should be composed by
|
98
|
+
# network_name:
|
99
|
+
# - IP addresses
|
100
|
+
# The controller must return at least those structured data.
|
101
|
+
def_attribute :private_ip_addresses
|
97
102
|
def_attribute :public_ip_address
|
98
103
|
|
99
104
|
def_attribute :image_id
|
@@ -67,6 +67,11 @@ module HPCompute
|
|
67
67
|
result
|
68
68
|
end
|
69
69
|
|
70
|
+
def self.get_server_assigned_address(oComputeConnect, id)
|
71
|
+
addresses = oComputeConnect.addresses.all
|
72
|
+
addresses.each { |oElem| return oElem if oElem.attributes['id'] == id }
|
73
|
+
end
|
74
|
+
|
70
75
|
def self.server_assign_address(oComputeConnect, server)
|
71
76
|
while server.state != 'ACTIVE'
|
72
77
|
sleep(5)
|
@@ -99,11 +99,13 @@ class Hpcloud
|
|
99
99
|
|
100
100
|
# ************************************ SERVER Object
|
101
101
|
define_obj :server
|
102
|
+
def_attr_mapping :private_ip_addresses, [:addresses, '{key}', [:addr]]
|
102
103
|
def_attr_mapping :status, :state
|
103
|
-
attr_value_mapping :create,
|
104
|
-
attr_value_mapping :boot,
|
105
|
-
attr_value_mapping :active,
|
106
|
-
attr_value_mapping :error,
|
104
|
+
attr_value_mapping :create, 'BUILD'
|
105
|
+
attr_value_mapping :boot, :boot
|
106
|
+
attr_value_mapping :active, 'ACTIVE'
|
107
|
+
attr_value_mapping :error, 'ERROR'
|
108
|
+
attr_value_mapping :shutdown, 'SHUTOFF'
|
107
109
|
|
108
110
|
# ************************************ SERVER log Object
|
109
111
|
define_obj :server_log
|
@@ -342,7 +344,7 @@ class HpcloudController # rubocop: disable Metrics/ClassLength
|
|
342
344
|
hParams[:server])
|
343
345
|
end
|
344
346
|
end
|
345
|
-
|
347
|
+
# rubocop: disable CyclomaticComplexity,
|
346
348
|
def get(sObjectType, sUniqId, hParams)
|
347
349
|
case sObjectType
|
348
350
|
when :server_log
|
@@ -361,10 +363,16 @@ class HpcloudController # rubocop: disable Metrics/ClassLength
|
|
361
363
|
when :keypairs
|
362
364
|
required?(hParams, :compute_connection)
|
363
365
|
HPKeyPairs.get_keypair(hParams[:compute_connection], sUniqId)
|
366
|
+
when :public_ip
|
367
|
+
required?(hParams, :compute_connection)
|
368
|
+
required?(hParams, :server)
|
369
|
+
HPCompute.get_server_assigned_address(hParams[:compute_connection],
|
370
|
+
sUniqId)
|
364
371
|
else
|
365
372
|
forjError "'%s' is not a valid object for 'get'", sObjectType
|
366
373
|
end
|
367
374
|
end
|
375
|
+
# rubocop: enable CyclomaticComplexity
|
368
376
|
|
369
377
|
def query_each(oFogObject)
|
370
378
|
case oFogObject.class.to_s
|
@@ -209,13 +209,18 @@ class Openstack
|
|
209
209
|
|
210
210
|
define_obj :server
|
211
211
|
def_attr_mapping :status, :state
|
212
|
-
attr_value_mapping :create,
|
213
|
-
attr_value_mapping :boot,
|
214
|
-
attr_value_mapping :active,
|
215
|
-
attr_value_mapping :error,
|
216
|
-
|
217
|
-
|
218
|
-
def_attr_mapping :
|
212
|
+
attr_value_mapping :create, 'BUILD'
|
213
|
+
attr_value_mapping :boot, :boot
|
214
|
+
attr_value_mapping :active, 'ACTIVE'
|
215
|
+
attr_value_mapping :error, 'ERROR'
|
216
|
+
attr_value_mapping :shutdown, 'SHUTOFF'
|
217
|
+
|
218
|
+
def_attr_mapping :private_ip_addresses,
|
219
|
+
[:addresses, '{/.*/}',
|
220
|
+
'<%= data["OS-EXT-IPS:type"] == "fixed" %>|addr']
|
221
|
+
def_attr_mapping :public_ip_address,
|
222
|
+
[:addresses, '{/.*/}',
|
223
|
+
'<%= data["OS-EXT-IPS:type"] == "floating" %>|addr']
|
219
224
|
def_attr_mapping :image_id, [:image, 'id']
|
220
225
|
|
221
226
|
define_obj :router
|
data/lorj_cloud.gemspec
CHANGED
@@ -26,7 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.9"
|
27
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
28
28
|
|
29
|
-
spec.add_runtime_dependency "lorj", "
|
29
|
+
spec.add_runtime_dependency "lorj", ">= 1.0.12"
|
30
|
+
spec.add_runtime_dependency 'subhash', '>= 0.1.3'
|
30
31
|
spec.add_runtime_dependency "fog", "~> 1.30.0"
|
31
32
|
spec.add_development_dependency "rspec", "~> 3.1.0"
|
32
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lorj_cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christophe Larsonneur
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,16 +42,30 @@ dependencies:
|
|
42
42
|
name: lorj
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.0.
|
47
|
+
version: 1.0.12
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.12
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: subhash
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.1.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
68
|
+
version: 0.1.3
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: fog
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|