lorj 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +39 -579
- data/Rakefile +7 -0
- data/example/students_1/student_v1.md +115 -0
- data/example/students_1/students.rb +8 -2
- data/example/students_2/process/students.rb +5 -5
- data/example/students_2/student_v2.md +90 -0
- data/example/students_2/students.rb +6 -6
- data/example/students_3/controller/yaml_students.rb +23 -73
- data/example/students_3/controller/yaml_students_code.rb +106 -0
- data/example/students_3/controller/yaml_students_def.rb +69 -0
- data/example/students_3/process/students.rb +23 -157
- data/example/students_3/student_v3.md +283 -0
- data/example/students_3/students.rb +26 -83
- data/example/students_4/controller/yaml_students.rb +51 -0
- data/example/students_4/controller/yaml_students_code.rb +109 -0
- data/example/students_4/controller/yaml_students_def.rb +72 -0
- data/example/students_4/process/students/code/students.rb +103 -0
- data/example/students_4/process/students/definition/students.rb +60 -0
- data/example/students_4/process/students.rb +29 -0
- data/example/students_4/student_v4.md +191 -0
- data/example/students_4/students.rb +65 -0
- data/example/students_5/controller/yaml_students.rb +106 -0
- data/example/{students_3 → students_5}/controller/yaml_students_controller.rb +5 -3
- data/example/students_5/process/students.rb +182 -0
- data/example/students_5/student_v5.md +382 -0
- data/example/students_5/students.rb +119 -0
- data/example/yaml_students/students.rb +1 -1
- data/example/yaml_students/yaml_students.rb +102 -23
- data/lib/concept.md +3 -3
- data/lib/core/core.rb +15 -15
- data/lib/core/core_controller.rb +49 -24
- data/lib/core/core_internal.rb +2 -2
- data/lib/core/core_model.rb +13 -7
- data/lib/core/core_object_data.rb +18 -18
- data/lib/core/core_object_params.rb +75 -34
- data/lib/core/core_process.rb +104 -59
- data/lib/core/core_process_setup.rb +11 -11
- data/lib/core/core_setup_ask.rb +24 -14
- data/lib/core/core_setup_encrypt.rb +17 -15
- data/lib/core/core_setup_init.rb +19 -15
- data/lib/core/core_setup_list.rb +12 -12
- data/lib/core/definition.rb +20 -20
- data/lib/core/definition_internal.rb +20 -10
- data/lib/core/lorj_basecontroller.rb +8 -8
- data/lib/core/lorj_basedefinition.rb +47 -126
- data/lib/core/lorj_baseprocess.rb +81 -57
- data/lib/core/lorj_data.rb +28 -27
- data/lib/core/lorj_keypath.rb +1 -1
- data/lib/core_process/cloud/process/flavor.rb +3 -2
- data/lib/core_process/cloud/process/keypairs.rb +5 -4
- data/lib/core_process/cloud/process/network.rb +4 -3
- data/lib/core_process/cloud/process/public_ip.rb +3 -2
- data/lib/core_process/cloud/process/rules.rb +7 -6
- data/lib/core_process/cloud/process/security_groups.rb +1 -1
- data/lib/core_process/cloud/process/server.rb +1 -1
- data/lib/core_process/cloud/process/server_log.rb +1 -1
- data/lib/core_process/cloud/process/subnetwork.rb +4 -1
- data/lib/core_process/cloud_process.rb +1 -1
- data/lib/logging.rb +41 -48
- data/lib/lorj/version.rb +1 -1
- data/lib/lorj.rb +7 -0
- data/lib/lorj_account.rb +3 -3
- data/lib/lorj_config.rb +1 -1
- data/lib/lorj_defaults.rb +222 -26
- data/lib/overview.md +120 -0
- data/lib/prc.rb +97 -24
- data/lib/prc_core_config.rb +134 -52
- data/lib/providers/hpcloud/compute.rb +3 -3
- data/lib/providers/hpcloud/hpcloud.rb +14 -14
- data/lib/providers/hpcloud/network.rb +4 -4
- data/lib/providers/hpcloud/security_groups.rb +1 -1
- data/lib/providers/mock/mock.rb +3 -3
- data/lib/providers/openstack/openstack.rb +12 -12
- data/lib/providers/templates/compute.rb +6 -6
- data/lib/rh.rb +7 -5
- data/spec/04_prc_core_config_spec.rb +52 -0
- data/spec/11_lorj_config_spec.rb +1 -1
- metadata +21 -3
@@ -57,24 +57,21 @@ module Lorj
|
|
57
57
|
|
58
58
|
@config = oForjConfig
|
59
59
|
@erb_config = ERBConfig.new(oForjConfig)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
!oForjConfig.is_a?(Lorj::Config)
|
66
|
-
|
60
|
+
if !oForjConfig.is_a?(Lorj::Account) && !oForjConfig.is_a?(Lorj::Config)
|
61
|
+
PrcLib.runtime_fail "'%s' is not a valid ForjAccount or ForjConfig"\
|
62
|
+
' Object.', oForjConfig.class
|
63
|
+
end
|
67
64
|
@controller = controller
|
68
|
-
|
69
|
-
runtime_fail "'%s' is not a valid
|
70
|
-
|
65
|
+
unless controller.nil? || controller.is_a?(BaseController)
|
66
|
+
PrcLib.runtime_fail "'%s' is not a valid BaseController Object type.",
|
67
|
+
controller.class
|
71
68
|
end
|
72
69
|
|
73
70
|
@process = process
|
74
|
-
|
75
|
-
|
71
|
+
PrcLib.runtime_fail "'%s' is not a valid BaseProcess Object type.",
|
72
|
+
process.class unless process.is_a?(BaseProcess)
|
76
73
|
|
77
|
-
@process.base_object
|
74
|
+
@process.base_object = self
|
78
75
|
end
|
79
76
|
|
80
77
|
# ------------------------------------------------------
|
@@ -98,9 +95,8 @@ module Lorj
|
|
98
95
|
# config.get(key)
|
99
96
|
# OR
|
100
97
|
# config[key]
|
101
|
-
|
102
98
|
def config
|
103
|
-
|
99
|
+
PrcLib.runtime_fail 'No config object loaded.' unless @config
|
104
100
|
@config
|
105
101
|
end
|
106
102
|
|
@@ -140,87 +136,69 @@ module Lorj
|
|
140
136
|
maps = PrcLib.model.meta_obj.rh_get(object_type, :query_mapping)
|
141
137
|
hParams.each do |key, value|
|
142
138
|
key_path_obj = KeyPath.new(key)
|
143
|
-
|
139
|
+
|
140
|
+
bold_action = ANSI.bold('ACTION REQUIRED')
|
144
141
|
PrcLib.runtime_fail "Forj query field '%s.%s' not defined by class"\
|
145
|
-
" '%s'.\n#{
|
142
|
+
" '%s'.\n#{bold_action}"\
|
146
143
|
":\nMissing data model 'def_attribute' or "\
|
147
144
|
"'def_query_attribute' for '%s'??? "\
|
148
145
|
"Check the object '%s' data model.",
|
149
146
|
object_type, key_path_obj.key,
|
150
147
|
self.class, key_path_obj.key,
|
151
148
|
object_type unless maps.key?(key_path_obj.fpath)
|
152
|
-
map_path = KeyPath.new(maps[key_path_obj.fpath])
|
153
|
-
value_mapping = PrcLib.model.meta_obj.rh_get(object_type,
|
154
|
-
:value_mapping, key_path)
|
155
|
-
if value_mapping
|
156
|
-
PrcLib.runtime_fail "'%s.%s': No value mapping for '%s'",
|
157
|
-
object_type, key_path_obj.key,
|
158
|
-
value unless value_mapping.rh_exist?(value)
|
159
149
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
150
|
+
next if maps[key_path_obj.fpath].nil?
|
151
|
+
|
152
|
+
map_path = KeyPath.new(maps[key_path_obj.fpath])
|
153
|
+
_query_value_mapping(object_type, result, key_path_obj, map_path, value)
|
164
154
|
end
|
165
155
|
result
|
166
156
|
end
|
167
157
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
# ! oObject.rh_exist?(:object_type)
|
177
|
-
# sCloudObj = oObject[:object_type]
|
178
|
-
# oKeyPath = KeyPath.new(key)
|
179
|
-
# fail Lorj::PrcError.new, "'%s' key is not declared as data of '%s' "\
|
180
|
-
# 'CloudObject. You may need to add obj_needs...'
|
181
|
-
# % [oKeyPath.key, sCloudObj] if PrcLib.model.meta_obj.rh_exist?(sClou
|
182
|
-
# dObj, :returns, oKeyPath.fpath) != 3
|
183
|
-
# begin
|
184
|
-
# oMapPath = KeyPath.new PrcLib.model.meta_obj.rh_get(sCloudObj, :
|
185
|
-
# returns, oKeyPath.fpath)
|
186
|
-
# hMap = oMapPath.fpath
|
187
|
-
# value = @controller.get_attr(get_cObject(oObject), hMap)
|
188
|
-
|
189
|
-
# hValueMapping = PrcLib.model.meta_obj.rh_get(sCloudObj, :value_m
|
190
|
-
# apping, oKeyPath.fpath)
|
158
|
+
def _query_value_mapping(object_type, result, key_path_obj, map_path, value)
|
159
|
+
key_path = key_path_obj.fpath
|
160
|
+
value_mapping = PrcLib.model.meta_obj.rh_get(object_type, :value_mapping,
|
161
|
+
key_path)
|
162
|
+
if value_mapping
|
163
|
+
PrcLib.runtime_fail "'%s.%s': No value mapping for '%s'",
|
164
|
+
object_type, key_path_obj.key,
|
165
|
+
value unless value_mapping.rh_exist?(value)
|
191
166
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
# end
|
199
|
-
# end
|
200
|
-
# rescue => e
|
201
|
-
# raise Lorj::PrcError.new, "'%s.get_attr' fails to provide value of '%s'
|
202
|
-
# " % [oProvider.class, key]
|
203
|
-
# end
|
204
|
-
# end
|
167
|
+
result.rh_set(value_mapping[value], map_path.tree)
|
168
|
+
else
|
169
|
+
result.rh_set(value, map_path.tree)
|
170
|
+
end
|
171
|
+
nil
|
172
|
+
end
|
205
173
|
|
206
174
|
# Register the object to the internal @object_data instance
|
207
175
|
def register(oObject, sObjectType = nil, sDataType = :object)
|
208
176
|
if oObject.is_a?(Lorj::Data)
|
209
177
|
data_objects = oObject
|
210
178
|
else
|
211
|
-
runtime_fail "Unable to register an object '%s' "\
|
212
|
-
|
213
|
-
|
179
|
+
PrcLib.runtime_fail "Unable to register an object '%s' "\
|
180
|
+
'as Lorj::Data object if ObjectType is not given.',
|
181
|
+
oObject.class unless sObjectType
|
214
182
|
data_objects = Lorj::Data.new(sDataType)
|
215
|
-
data_objects.set(oObject, sObjectType) do |
|
183
|
+
data_objects.set(oObject, sObjectType) do |sObjType, oControlerObject|
|
216
184
|
_return_map(sObjType, oControlerObject)
|
217
185
|
end
|
218
186
|
end
|
219
187
|
@object_data.add data_objects
|
220
188
|
end
|
221
189
|
|
190
|
+
# Function to get Lorj core data cache.
|
191
|
+
#
|
192
|
+
# *Args*
|
193
|
+
# - object_type : Object type to get
|
194
|
+
# - *key : tree of keys to get values.
|
195
|
+
# The syntax is defined by Lorj::Data[]
|
196
|
+
#
|
197
|
+
# *Return*
|
198
|
+
# - Value of the Lorj::Data cached key.
|
199
|
+
#
|
222
200
|
def data_objects(sObjectType, *key)
|
223
|
-
@object_data[sObjectType, key]
|
201
|
+
@object_data[sObjectType, *key]
|
224
202
|
end
|
225
203
|
|
226
204
|
# get an attribute/object/... from an object.
|
@@ -234,56 +212,11 @@ module Lorj
|
|
234
212
|
object_data[oObj, *key]
|
235
213
|
end
|
236
214
|
|
237
|
-
# ~ def hParams(sCloudObj, hParams)
|
238
|
-
# ~ aParams = _get_object_params(sCloudObj, ":ObjectData.hParams")
|
239
|
-
# ~ end
|
240
|
-
|
241
|
-
# def get_cObject(oObject)
|
242
|
-
# return nil unless oObject.rh_exist?(:object)
|
243
|
-
# oObject.rh_get(:object)
|
244
|
-
# end
|
245
|
-
|
246
215
|
private
|
247
216
|
|
248
217
|
# -------------------------------------------------------------------------
|
249
218
|
# Functions available for Process to communicate with the controler Object
|
250
219
|
# -------------------------------------------------------------------------
|
251
|
-
# def cloud_obj_requires(sCloudObj, res = {})
|
252
|
-
# aCaller = caller
|
253
|
-
# aCaller.pop
|
254
|
-
|
255
|
-
# return res if @object_data.exist?(sCloudObj)
|
256
|
-
# # ~ return res if Lorj::rh_exist?(@CloudData, sCloudObj)
|
257
|
-
|
258
|
-
# PrcLib.model.meta_obj.rh_get(sCloudObj, :params).each do |
|
259
|
-
# key, hParams|
|
260
|
-
# case hParams[:type]
|
261
|
-
# when :data
|
262
|
-
# if hParams.key?(:array)
|
263
|
-
# hParams[:array].each do | aElem |
|
264
|
-
# aElem = aElem.clone
|
265
|
-
# aElem.pop # Do not go until last level, as used to loop next.
|
266
|
-
# hParams.rh_get(aElem).each do | subkey, _hSubParam |
|
267
|
-
# next if aElem.length == 0 && [:array, :type].include?(subkey)
|
268
|
-
# if hSubParams[:required] && @config.get(subkey).nil?
|
269
|
-
# res[subkey] = hSubParams
|
270
|
-
# end
|
271
|
-
# end
|
272
|
-
# end
|
273
|
-
# else
|
274
|
-
# if hParams[:required] && @config.get(key).nil?
|
275
|
-
# res[key] = hParams
|
276
|
-
# end
|
277
|
-
# end
|
278
|
-
# when :CloudObject
|
279
|
-
# if hParams[:required] && !@object_data.exist?(sCloudObj)
|
280
|
-
# res[key] = hParams
|
281
|
-
# cloud_obj_requires(key, res)
|
282
|
-
# end
|
283
|
-
# end
|
284
|
-
# end
|
285
|
-
# res
|
286
|
-
# end
|
287
220
|
|
288
221
|
def get_object(sCloudObj)
|
289
222
|
# ~ return nil unless Lorj::rh_exist?(@CloudData, sCloudObj)
|
@@ -291,17 +224,5 @@ module Lorj
|
|
291
224
|
@object_data[sCloudObj, :ObjectData]
|
292
225
|
# ~ Lorj::rh_get(@CloudData, sCloudObj)
|
293
226
|
end
|
294
|
-
|
295
|
-
# def objectExist?(sCloudObj)
|
296
|
-
# @object_data.exist?(sCloudObj)
|
297
|
-
# # ~ !(Lorj::rh_exist?(@CloudData, sCloudObj))
|
298
|
-
# end
|
299
|
-
|
300
|
-
# def get_forjKey(sCloudObj, key)
|
301
|
-
# return nil unless @object_data.exist?(sCloudObj)
|
302
|
-
# @object_data[sCloudObj, :attrs, key]
|
303
|
-
# # ~ return nil unless Lorj::rh_exist?(oCloudData, sCloudObj)
|
304
|
-
# # ~ Lorj::rh_get(oCloudData, sCloudObj, :attrs, key)
|
305
|
-
# end
|
306
227
|
end
|
307
228
|
end
|
@@ -30,7 +30,7 @@ module Lorj
|
|
30
30
|
# with controller calls
|
31
31
|
class BaseProcess
|
32
32
|
def initialize
|
33
|
-
@
|
33
|
+
@base_object = nil
|
34
34
|
end
|
35
35
|
|
36
36
|
# Simply raise an error
|
@@ -43,39 +43,45 @@ module Lorj
|
|
43
43
|
# - Lorj::PrcError
|
44
44
|
def process_error(msg, *p)
|
45
45
|
msg = format(msg, *p)
|
46
|
-
|
46
|
+
fail Lorj::PrcError.new, format('%s: %s', self.class, msg)
|
47
47
|
end
|
48
48
|
|
49
49
|
attr_writer :base_object
|
50
50
|
|
51
|
-
def controller_connect(sObjectType,
|
52
|
-
|
53
|
-
|
51
|
+
def controller_connect(sObjectType, params = nil)
|
52
|
+
process_error 'No Controler object loaded.' unless @base_object
|
53
|
+
params = nil unless params.is_a?(Hash)
|
54
|
+
@base_object.controller_connect(sObjectType, params)
|
54
55
|
end
|
55
56
|
|
56
|
-
def controller_create(sObjectType,
|
57
|
-
|
58
|
-
|
57
|
+
def controller_create(sObjectType, params = nil)
|
58
|
+
process_error 'No Controler object loaded.' unless @base_object
|
59
|
+
params = nil unless params.is_a?(Hash)
|
60
|
+
@base_object.controller_create(sObjectType, params)
|
59
61
|
end
|
60
62
|
|
61
|
-
def controller_query(sObjectType, sQuery,
|
62
|
-
|
63
|
-
|
63
|
+
def controller_query(sObjectType, sQuery, params = nil)
|
64
|
+
process_error 'No Controler object loaded.' unless @base_object
|
65
|
+
params = nil unless params.is_a?(Hash)
|
66
|
+
@base_object.controller_query(sObjectType, sQuery, params)
|
64
67
|
end
|
65
68
|
|
66
|
-
def controller_update(sObjectType,
|
67
|
-
|
68
|
-
|
69
|
+
def controller_update(sObjectType, params = nil)
|
70
|
+
process_error 'No Controler object loaded.' unless @base_object
|
71
|
+
params = nil unless params.is_a?(Hash)
|
72
|
+
@base_object.controller_update(sObjectType, params)
|
69
73
|
end
|
70
74
|
|
71
|
-
def controller_delete(sObjectType,
|
72
|
-
|
73
|
-
|
75
|
+
def controller_delete(sObjectType, params = nil)
|
76
|
+
process_error 'No Controler object loaded.' unless @base_object
|
77
|
+
params = nil unless params.is_a?(Hash)
|
78
|
+
@base_object.controller_delete(sObjectType, params)
|
74
79
|
end
|
75
80
|
|
76
|
-
def controller_get(sObjectType, sId,
|
77
|
-
|
78
|
-
|
81
|
+
def controller_get(sObjectType, sId, params = nil)
|
82
|
+
process_error 'No Controler object loaded.' unless @base_object
|
83
|
+
params = nil unless params.is_a?(Hash)
|
84
|
+
@base_object.controller_get(sObjectType, sId, params)
|
79
85
|
end
|
80
86
|
end
|
81
87
|
|
@@ -83,28 +89,28 @@ module Lorj
|
|
83
89
|
# with process calls
|
84
90
|
class BaseProcess
|
85
91
|
def process_create(sObjectType)
|
86
|
-
|
87
|
-
@
|
92
|
+
process_error 'No Base object loaded.' unless @base_object
|
93
|
+
@base_object.process_create(sObjectType)
|
88
94
|
end
|
89
95
|
|
90
96
|
def process_query(sObjectType, sQuery)
|
91
|
-
|
92
|
-
@
|
97
|
+
process_error 'No Base object loaded.' unless @base_object
|
98
|
+
@base_object.process_query(sObjectType, sQuery)
|
93
99
|
end
|
94
100
|
|
95
101
|
def process_update(sObjectType)
|
96
|
-
|
97
|
-
@
|
102
|
+
process_error 'No Base object loaded.' unless @base_object
|
103
|
+
@base_object.process_update(sObjectType)
|
98
104
|
end
|
99
105
|
|
100
106
|
def process_get(sObjectType, sId)
|
101
|
-
|
102
|
-
@
|
107
|
+
process_error 'No Base object loaded.' unless @base_object
|
108
|
+
@base_object.process_get(sObjectType, sId)
|
103
109
|
end
|
104
110
|
|
105
111
|
def process_delete(sObjectType)
|
106
|
-
|
107
|
-
@
|
112
|
+
process_error 'No Base object loaded.' unless @base_object
|
113
|
+
@base_object.process_delete(sObjectType)
|
108
114
|
end
|
109
115
|
end
|
110
116
|
|
@@ -114,62 +120,62 @@ module Lorj
|
|
114
120
|
private
|
115
121
|
|
116
122
|
def query_cache_cleanup(sObjectType)
|
117
|
-
fail Lorj::PrcError.new, 'No Base object loaded.' unless @
|
118
|
-
@
|
123
|
+
fail Lorj::PrcError.new, 'No Base object loaded.' unless @base_object
|
124
|
+
@base_object.query_cleanup(sObjectType)
|
119
125
|
end
|
120
126
|
|
121
127
|
def object_cache_cleanup(sObjectType)
|
122
|
-
fail Lorj::PrcError.new, 'No Base object loaded.' unless @
|
123
|
-
@
|
128
|
+
fail Lorj::PrcError.new, 'No Base object loaded.' unless @base_object
|
129
|
+
@base_object.object_cleanup(sObjectType)
|
124
130
|
end
|
125
131
|
|
126
132
|
def controler
|
127
133
|
PrcLib.warning('controler object call is obsolete. Please update your'\
|
128
134
|
" code. Use controller_<action> instead.\n%s", caller)
|
129
|
-
|
130
|
-
@
|
135
|
+
PrcLib.runtime_fail 'No Controler object loaded.' unless @base_object
|
136
|
+
@base_object
|
131
137
|
end
|
132
138
|
|
133
139
|
def object
|
134
140
|
PrcLib.warning('object call is obsolete. Please update your code.'\
|
135
141
|
"Use <Action> instead.\n%s", caller)
|
136
|
-
|
137
|
-
@
|
142
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
143
|
+
@base_object
|
138
144
|
end
|
139
145
|
|
140
146
|
def format_object(sObjectType, oMiscObj)
|
141
|
-
|
142
|
-
@
|
147
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
148
|
+
@base_object.format_object(sObjectType, oMiscObj)
|
143
149
|
end
|
144
150
|
|
145
151
|
def format_query(sObjectType, oMiscObj, hQuery)
|
146
|
-
|
147
|
-
@
|
152
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
153
|
+
@base_object.format_list(sObjectType, oMiscObj, hQuery)
|
148
154
|
end
|
149
155
|
|
150
156
|
def data_objects(sObjectType, *key)
|
151
|
-
|
152
|
-
@
|
157
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
158
|
+
@base_object.data_objects(sObjectType, *key)
|
153
159
|
end
|
154
160
|
|
155
161
|
def get_data(oObj, *key)
|
156
162
|
PrcLib.warning('get_data call is obsolete. Please update your code. '\
|
157
163
|
"Use [] instead.\n%s", caller)
|
158
|
-
|
159
|
-
@
|
164
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
165
|
+
@base_object.get_data(oObj, :attrs, key)
|
160
166
|
end
|
161
167
|
|
162
168
|
def register(oObject, sObjectType = nil)
|
163
|
-
|
164
|
-
@
|
169
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
170
|
+
@base_object.register(oObject, sObjectType)
|
165
171
|
end
|
166
172
|
|
167
173
|
def config
|
168
|
-
|
169
|
-
@
|
174
|
+
PrcLib.runtime_fail 'No Base object loaded.' unless @base_object
|
175
|
+
@base_object.config
|
170
176
|
end
|
171
177
|
|
172
|
-
def query_single(sCloudObj,
|
178
|
+
def query_single(sCloudObj, sQuery, name, sInfoMsg = {})
|
173
179
|
list = controller_query(sCloudObj, sQuery)
|
174
180
|
|
175
181
|
info = _qs_info_init(sInfoMsg)
|
@@ -214,22 +220,40 @@ module Lorj
|
|
214
220
|
class BaseProcess
|
215
221
|
private
|
216
222
|
|
223
|
+
# Internal Function to printout a format string
|
224
|
+
#
|
225
|
+
# *Args*
|
226
|
+
# - list : ObjectData
|
227
|
+
# - items: Symbol or Array of symbols
|
228
|
+
# - items_format : String format supported by format function
|
229
|
+
#
|
230
|
+
# *return:
|
231
|
+
# - formated string thanks to data extracted from list.
|
232
|
+
# If the key is not found (or value nil) from list,
|
233
|
+
# an error message is return to the formated string
|
234
|
+
# with the wrong key.
|
235
|
+
#
|
217
236
|
def _qs_info(list, items, items_form)
|
218
237
|
items_built = []
|
219
238
|
if items.is_a?(Array)
|
220
|
-
items.each do |
|
221
|
-
items_built << list
|
239
|
+
items.each do |key|
|
240
|
+
items_built << _qs_value(list, 0, key)
|
222
241
|
end
|
223
242
|
else
|
224
|
-
items_built << list
|
243
|
+
items_built << _qs_value(list, 0, items)
|
225
244
|
end
|
226
|
-
format(items_form, items_built)
|
245
|
+
format(items_form, *items_built)
|
246
|
+
end
|
247
|
+
|
248
|
+
def _qs_value(list, index, key)
|
249
|
+
value = list[index, key]
|
250
|
+
(value.nil? ? format("\"key '%s' unknown\"", key) : value)
|
227
251
|
end
|
228
252
|
|
229
253
|
def _qs_check_match(list, sQuery)
|
230
|
-
list.each do |
|
254
|
+
list.each do |oElem|
|
231
255
|
is_found = true
|
232
|
-
sQuery.each do |
|
256
|
+
sQuery.each do |key, value|
|
233
257
|
if oElem[key] != value
|
234
258
|
is_found = false
|
235
259
|
break
|
data/lib/core/lorj_data.rb
CHANGED
@@ -155,11 +155,31 @@ module Lorj
|
|
155
155
|
@data[:object] = oObj
|
156
156
|
@data[:attrs] = yield(sObjType, oObj)
|
157
157
|
when :list
|
158
|
-
list_set(oObj, sObjType, hQuery)
|
158
|
+
list_set(oObj, sObjType, hQuery) do |object_type, object|
|
159
|
+
yield(object_type, object)
|
160
|
+
end
|
159
161
|
end
|
160
162
|
self
|
161
163
|
end
|
162
164
|
|
165
|
+
def to_s
|
166
|
+
str = format("-- Lorj::Data --\nType: %s\nContent:\n", @type)
|
167
|
+
str += format('%s <= ', @data[:object_type])
|
168
|
+
str += format("(%s) :\n", @data[:object].class)
|
169
|
+
if @type != :list
|
170
|
+
str += @data[:attrs].to_yaml
|
171
|
+
return str
|
172
|
+
end
|
173
|
+
str += format("query:\n%s", @data[:query].to_yaml)
|
174
|
+
str += format("\nlist count: %s\n", @data[:list].length)
|
175
|
+
elem_print = []
|
176
|
+
@data[:list].each do |elem|
|
177
|
+
elem_print << elem.to_s
|
178
|
+
end
|
179
|
+
str += elem_print.to_yaml
|
180
|
+
str
|
181
|
+
end
|
182
|
+
|
163
183
|
# Set the :object type
|
164
184
|
#
|
165
185
|
# * *Args* :
|
@@ -347,25 +367,6 @@ module Lorj
|
|
347
367
|
@data[:object].nil?
|
348
368
|
end
|
349
369
|
|
350
|
-
# Redefine nil? Warning! Can be confused. Cannot see if your object is
|
351
|
-
# simply nil or if current object is simply empty.
|
352
|
-
# Use empty? instead.
|
353
|
-
# A warning will be raised soon to ask developer to update it.
|
354
|
-
#
|
355
|
-
# * *Args* :
|
356
|
-
# No parameters
|
357
|
-
#
|
358
|
-
# * *Returns* :
|
359
|
-
# - true/false
|
360
|
-
#
|
361
|
-
# * *Raises* :
|
362
|
-
# No exceptions
|
363
|
-
#
|
364
|
-
def nil?
|
365
|
-
# Obsolete Use empty? instead.
|
366
|
-
@data[:object].nil?
|
367
|
-
end
|
368
|
-
|
369
370
|
# return 0, 1 or N if the Lorj::Data object is nil.
|
370
371
|
# 0 if no objects stored
|
371
372
|
# 1 if an object exist even if type :object or :list
|
@@ -414,7 +415,7 @@ module Lorj
|
|
414
415
|
end
|
415
416
|
|
416
417
|
return if to_remove.length <= 0
|
417
|
-
to_remove.each { |
|
418
|
+
to_remove.each { |elem| @data[:list].delete(elem) }
|
418
419
|
end
|
419
420
|
|
420
421
|
# yield loop on a list
|
@@ -441,7 +442,7 @@ module Lorj
|
|
441
442
|
end
|
442
443
|
return if to_remove.length <= 0
|
443
444
|
|
444
|
-
to_remove.each { |
|
445
|
+
to_remove.each { |elem| @data[:list].delete(elem) }
|
445
446
|
end
|
446
447
|
|
447
448
|
# A Lorj::Data can be cached by Lorj::ObjectData.
|
@@ -502,7 +503,7 @@ module Lorj
|
|
502
503
|
return self if oObj.nil?
|
503
504
|
|
504
505
|
begin
|
505
|
-
oObj.each do |
|
506
|
+
oObj.each do |oElemObject|
|
506
507
|
next if oElemObject.nil?
|
507
508
|
begin
|
508
509
|
data_obj = Lorj::Data.new(:object)
|
@@ -511,13 +512,13 @@ module Lorj
|
|
511
512
|
end
|
512
513
|
@data[:list] << data_obj
|
513
514
|
rescue => e
|
514
|
-
runtime_fail "'%s' Mapping attributes issue.\n%s",
|
515
|
-
|
515
|
+
PrcLib.runtime_fail "'%s' Mapping attributes issue.\n%s",
|
516
|
+
sObjType, e.message
|
516
517
|
end
|
517
518
|
end
|
518
519
|
rescue => e
|
519
|
-
runtime_fail "each function is not supported by '%s'.\n%s",
|
520
|
-
|
520
|
+
PrcLib.runtime_fail "each function is not supported by '%s'.\n%s",
|
521
|
+
oObj.class, e.message
|
521
522
|
end
|
522
523
|
self
|
523
524
|
end
|
data/lib/core/lorj_keypath.rb
CHANGED
@@ -106,7 +106,7 @@ module Lorj
|
|
106
106
|
if %r{[^\\/]?/[^/]} =~ sKeyPath || /:[^:\/]/ =~ sKeyPath
|
107
107
|
# keypath to interpret
|
108
108
|
res = sKeyPath.split('/')
|
109
|
-
res.each_index do |
|
109
|
+
res.each_index do |iIndex|
|
110
110
|
next unless res[iIndex].is_a?(String)
|
111
111
|
res[iIndex] = res[iIndex][1..-1].to_sym if res[iIndex][0] == ':'
|
112
112
|
end
|
@@ -44,8 +44,9 @@ class CloudProcess
|
|
44
44
|
# Should return 1 or 0 flavor.
|
45
45
|
def query_flavor(sCloudObj, sQuery, hParams)
|
46
46
|
flavor_name = hParams[:flavor_name]
|
47
|
-
list = forj_query_flavor(sCloudObj, sQuery, hParams)
|
48
|
-
query_single(sCloudObj, list, sQuery, flavor_name)
|
47
|
+
# list = forj_query_flavor(sCloudObj, sQuery, hParams)
|
48
|
+
# query_single(sCloudObj, list, sQuery, flavor_name)
|
49
|
+
query_single(sCloudObj, sQuery, flavor_name)
|
49
50
|
end
|
50
51
|
|
51
52
|
# Should return 1 or 0 flavor.
|
@@ -76,8 +76,9 @@ class CloudProcess
|
|
76
76
|
key_name = hParams[:keypair_name]
|
77
77
|
ssl_error_obj = SSLErrorMgt.new
|
78
78
|
begin
|
79
|
-
list = controller_query(sCloudObj, sQuery)
|
80
|
-
query_single(sCloudObj, list, sQuery, key_name)
|
79
|
+
# list = controller_query(sCloudObj, sQuery)
|
80
|
+
# query_single(sCloudObj, list, sQuery, key_name)
|
81
|
+
query_single(sCloudObj, sQuery, key_name)
|
81
82
|
rescue => e
|
82
83
|
retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
|
83
84
|
end
|
@@ -139,7 +140,7 @@ class CloudProcess
|
|
139
140
|
priv_key_exist = true
|
140
141
|
priv_key_name = key_basename + private_key_ext
|
141
142
|
else
|
142
|
-
files.each do |
|
143
|
+
files.each do |temp_file|
|
143
144
|
PrcLib.warning('keypair_detect: Private key file name detection has '\
|
144
145
|
"detected '%s' as a directory. Usually, it should be a "\
|
145
146
|
'private key file. Please check.',
|
@@ -163,7 +164,7 @@ class CloudProcess
|
|
163
164
|
def _check_key_file(key_path, key_basename, extensions)
|
164
165
|
found_ext = nil
|
165
166
|
files = []
|
166
|
-
extensions.each do |
|
167
|
+
extensions.each do |ext|
|
167
168
|
temp_file = File.join(key_path, key_basename + ext)
|
168
169
|
if File.exist?(temp_file) && !File.directory?(temp_file)
|
169
170
|
found_ext = ext
|
@@ -37,7 +37,7 @@ class CloudProcess
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# object.Create(:subnetwork)
|
40
|
-
|
40
|
+
process_create(:subnetwork)
|
41
41
|
|
42
42
|
network
|
43
43
|
end
|
@@ -100,8 +100,9 @@ class CloudProcess
|
|
100
100
|
# nil or Provider Object
|
101
101
|
def find_network(sCloudObj, hParams)
|
102
102
|
query = { :name => hParams[:network_name] }
|
103
|
-
list = controller_query(sCloudObj, query)
|
104
|
-
query_single(sCloudObj, list, query, hParams[:network_name])
|
103
|
+
# list = controller_query(sCloudObj, query)
|
104
|
+
# query_single(sCloudObj, list, query, hParams[:network_name])
|
105
|
+
query_single(sCloudObj, query, hParams[:network_name])
|
105
106
|
rescue => e
|
106
107
|
PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
|
107
108
|
end
|