lorj 1.0.1 → 1.0.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/.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
|