lorj 1.0.3 → 1.0.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/example/students_1/students.rb +5 -6
- data/example/students_2/students.rb +4 -5
- data/example/students_3/students.rb +4 -5
- data/example/students_4/students.rb +4 -5
- data/example/students_5/students.rb +5 -5
- data/lib/core/core.rb +6 -1
- data/lib/core/core_controller.rb +1 -9
- data/lib/core/core_internal.rb +2 -1
- data/lib/core/core_model.rb +2 -10
- data/lib/core/core_object_data.rb +18 -0
- data/lib/core/core_object_params.rb +43 -4
- data/lib/core/core_process.rb +1 -9
- data/lib/core/core_process_setup.rb +32 -6
- data/lib/core/core_setup_ask.rb +41 -33
- data/lib/core/core_setup_encrypt.rb +29 -6
- data/lib/core/core_setup_init.rb +2 -2
- data/lib/core/definition.rb +33 -10
- data/lib/core/definition_internal.rb +10 -14
- data/lib/core/lorj_basedefinition.rb +16 -24
- data/lib/core/lorj_baseprocess.rb +113 -44
- data/lib/core/lorj_data.rb +2 -9
- data/lib/core/lorj_keypath.rb +5 -2
- data/lib/core_process/cloud/process/common.rb +4 -7
- data/lib/core_process/cloud/process/connection.rb +44 -45
- data/lib/core_process/cloud/process/external_network.rb +24 -28
- data/lib/core_process/cloud/process/flavor.rb +31 -34
- data/lib/core_process/cloud/process/images.rb +12 -15
- data/lib/core_process/cloud/process/internet_network.rb +13 -14
- data/lib/core_process/cloud/process/internet_server.rb +9 -10
- data/lib/core_process/cloud/process/keypairs.rb +34 -27
- data/lib/core_process/cloud/process/network.rb +21 -23
- data/lib/core_process/cloud/process/public_ip.rb +17 -18
- data/lib/core_process/cloud/process/router.rb +86 -92
- data/lib/core_process/cloud/process/rules.rb +30 -31
- data/lib/core_process/cloud/process/security_groups.rb +21 -22
- data/lib/core_process/cloud/process/server.rb +30 -31
- data/lib/core_process/cloud/process/server_log.rb +13 -14
- data/lib/core_process/cloud/process/subnetwork.rb +25 -40
- data/lib/logging.rb +4 -17
- data/lib/lorj/version.rb +1 -1
- data/lib/lorj.rb +2 -1
- data/lib/lorj_account.rb +137 -90
- data/lib/lorj_config.rb +13 -19
- data/lib/lorj_defaults.rb +46 -292
- data/lib/lorj_meta.rb +729 -0
- data/lib/prc.rb +119 -30
- data/lib/prc_base_config.rb +53 -47
- data/lib/prc_core_config.rb +837 -565
- data/lib/prc_section_config.rb +44 -16
- data/lib/providers/hpcloud/hpcloud.rb +1 -1
- data/lib/providers/openstack/openstack.rb +278 -21
- data/lib/providers/openstack/openstack_create.rb +205 -0
- data/lib/providers/openstack/openstack_delete.rb +28 -0
- data/lib/providers/openstack/openstack_get.rb +39 -0
- data/lib/providers/openstack/openstack_process.rb +26 -0
- data/lib/providers/openstack/openstack_query.rb +96 -0
- data/lib/providers/openstack/openstack_update.rb +35 -0
- data/lib/rh.rb +91 -6
- data/lorj-spec/defaults.yaml +18 -12
- data/lorj.gemspec +1 -0
- data/spec/01_hash_rh_spec.rb +41 -2
- data/spec/02_prc_base_config_spec.rb +1 -1
- data/spec/03_prc_section_config_spec.rb +1 -1
- data/spec/04_prc_core_config_spec.rb +148 -4
- data/spec/09_prc_spec.rb +104 -0
- data/spec/{00_lorj_log_spec.rb → 10_lorj_log_spec.rb} +23 -2
- data/spec/11_lorj_config_spec.rb +9 -27
- data/spec/12_lorj_account_spec.rb +36 -20
- data/spec/20_lorj_meta_spec.rb +271 -0
- data/spec/21_lorj_defaults_spec.rb +85 -0
- metadata +31 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63d7eabf0a0bfe1c20a49ea78ad77a37b6b5e521
|
4
|
+
data.tar.gz: 5170b2123e123a05028cd52cad7af4d1288acc09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88a9a2866f706cf5183caf65cce95bbeffec6073fc47b2457c233a28bc73d4fe175aade0ae4410e42eb050ac52f5ea1da782c2e1a1404f0a673c575acb2e959e
|
7
|
+
data.tar.gz: 96ec48620a59cc39ea1307fcea13e04eeb2a703d1466338cf18b74ecfac225caabe85e0ef2c1a61b4359fa1f0621bf46b2589c260ec3d2f54da277391806ea7c
|
@@ -15,14 +15,13 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
if ENV['BYEBUG']
|
19
|
-
require 'byebug'
|
20
|
-
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
-
$LOAD_PATH << lib_path
|
22
|
-
end
|
23
|
-
|
24
18
|
app_path = File.dirname(__FILE__)
|
25
19
|
|
20
|
+
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
+
$LOAD_PATH << lib_path
|
22
|
+
|
23
|
+
require 'byebug' if ENV['BYEBUG']
|
24
|
+
|
26
25
|
require 'lorj'
|
27
26
|
|
28
27
|
# If you want to see what is happening in the framework, uncomment debug
|
@@ -17,11 +17,10 @@
|
|
17
17
|
|
18
18
|
app_path = File.dirname(__FILE__)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
20
|
+
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
+
$LOAD_PATH << lib_path
|
22
|
+
|
23
|
+
require 'byebug' if ENV['BYEBUG']
|
25
24
|
|
26
25
|
require 'lorj'
|
27
26
|
|
@@ -17,11 +17,10 @@
|
|
17
17
|
|
18
18
|
app_path = File.dirname(__FILE__)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
20
|
+
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
+
$LOAD_PATH << lib_path
|
22
|
+
|
23
|
+
require 'byebug' if ENV['BYEBUG']
|
25
24
|
|
26
25
|
require 'lorj'
|
27
26
|
|
@@ -17,11 +17,10 @@
|
|
17
17
|
|
18
18
|
app_path = File.dirname(__FILE__)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
20
|
+
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
+
$LOAD_PATH << lib_path
|
22
|
+
|
23
|
+
require 'byebug' if ENV['BYEBUG']
|
25
24
|
|
26
25
|
require 'lorj'
|
27
26
|
|
@@ -17,11 +17,11 @@
|
|
17
17
|
|
18
18
|
app_path = File.dirname(__FILE__)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
lib_path = File.expand_path(File.join(app_path, '..', '..', 'lib'))
|
21
|
+
$LOAD_PATH << lib_path
|
22
|
+
|
23
|
+
require 'byebug' if ENV['BYEBUG']
|
24
|
+
|
25
25
|
require 'lorj'
|
26
26
|
require 'ansi'
|
27
27
|
|
data/lib/core/core.rb
CHANGED
@@ -319,6 +319,8 @@ module Lorj
|
|
319
319
|
|
320
320
|
init_core_config(the_config)
|
321
321
|
|
322
|
+
PrcLib.model.config = @config
|
323
|
+
|
322
324
|
model = initialize_model
|
323
325
|
|
324
326
|
# Load Application processes
|
@@ -344,7 +346,10 @@ module Lorj
|
|
344
346
|
|
345
347
|
process_list = [:cloud_process]
|
346
348
|
|
347
|
-
controller_mod = config_account.get(:
|
349
|
+
controller_mod = config_account.get(:provider)
|
350
|
+
|
351
|
+
controller_mod = config_account.get(:provider_name) if controller_mod.nil?
|
352
|
+
|
348
353
|
PrcLib.runtime_fail 'Provider_name not set. Unable to create'\
|
349
354
|
' instance CloudCore.' if controller_mod.nil?
|
350
355
|
|
data/lib/core/core_controller.rb
CHANGED
@@ -12,15 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# Those classes describes :
|
18
|
-
# - processes (BaseProcess) : How to create/delete/edit/query object.
|
19
|
-
# - controler (BaseControler) : If a provider is defined, define how will do
|
20
|
-
# object creation/etc...
|
21
|
-
# - definition(BaseDefinition): Functions to declare objects, query/data mapping
|
22
|
-
# and setup
|
23
|
-
# this task to make it to work.
|
15
|
+
# - controler functions: controller functions called by Lorj::BaseProcess.
|
24
16
|
module Lorj
|
25
17
|
# Adding controller core functions.
|
26
18
|
class BaseDefinition
|
data/lib/core/core_internal.rb
CHANGED
data/lib/core/core_model.rb
CHANGED
@@ -18,20 +18,12 @@
|
|
18
18
|
|
19
19
|
# TODO: Move most declaration functions to Model class for simplification.
|
20
20
|
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# Those classes describes :
|
24
|
-
# - processes (BaseProcess) : How to create/delete/edit/query object.
|
25
|
-
# - controler (BaseControler) : If a provider is defined, define how will do
|
26
|
-
# object creation/etc...
|
27
|
-
# - definition(BaseDefinition): Functions to declare objects, query/data mapping
|
28
|
-
# and setup
|
29
|
-
# this task to make it to work.
|
21
|
+
# - Lorj::Model : Model class reference.
|
30
22
|
module Lorj
|
31
23
|
# Model Object
|
32
24
|
class Model
|
33
25
|
attr_accessor :meta_obj, :meta_data, :meta_predefined_values
|
34
|
-
attr_accessor :query_auto_map
|
26
|
+
attr_accessor :query_auto_map, :config
|
35
27
|
|
36
28
|
# Model initialisation
|
37
29
|
def initialize
|
@@ -78,6 +78,24 @@ module Lorj
|
|
78
78
|
@params = {}
|
79
79
|
@params[:hdata] = {} unless internal
|
80
80
|
@internal = internal
|
81
|
+
@refresh = nil
|
82
|
+
end
|
83
|
+
|
84
|
+
# Refresh setting
|
85
|
+
#
|
86
|
+
# This function is used to provide capability to an Object to be refreshed
|
87
|
+
# from Lorj Cache.
|
88
|
+
#
|
89
|
+
def refresh_set(base_def_instance, object_type, sEventType, as_controller)
|
90
|
+
@refresh = { :bd_obj => base_def_instance, :object_type => object_type,
|
91
|
+
:event_type => sEventType, :controller => as_controller
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
95
|
+
def refresh
|
96
|
+
return self if @refresh.nil?
|
97
|
+
# Do the refresh itself.
|
98
|
+
@refresh[:bd_obj].update_params(self, @refresh)
|
81
99
|
end
|
82
100
|
|
83
101
|
# Get function
|
@@ -15,9 +15,29 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
+
# Lorj implements Lorj::BaseDefinition core internal functions
|
18
19
|
module Lorj
|
19
20
|
# Class Definition internal function.
|
20
21
|
class BaseDefinition
|
22
|
+
# function to update an existing ObjectData used as parameters to
|
23
|
+
# process or controller
|
24
|
+
#
|
25
|
+
# *parameters*:
|
26
|
+
# - data_to_refresh: ObjectData to refresh
|
27
|
+
# - refresh_par : Hash providing the parameter context used to refresh it
|
28
|
+
#
|
29
|
+
# *return*:
|
30
|
+
# - data refreshed.
|
31
|
+
#
|
32
|
+
def update_params(data_to_refresh, refresh_par) # :nodoc:
|
33
|
+
object_type = refresh_par[:object_type]
|
34
|
+
event_type = refresh_par[:event_type]
|
35
|
+
as_controller = refresh_par[:controller]
|
36
|
+
|
37
|
+
_get_object_params(object_type, event_type, __callee__, as_controller,
|
38
|
+
data_to_refresh)
|
39
|
+
end
|
40
|
+
|
21
41
|
private
|
22
42
|
|
23
43
|
# internal runtime function for process call
|
@@ -67,6 +87,8 @@ module Lorj
|
|
67
87
|
# - +new_params+ : Parameters ObjectData
|
68
88
|
# - +param_obj+ : parameter object
|
69
89
|
# - +param_options+ : parameter options
|
90
|
+
# - :type : hdata requires parameters to be :data.
|
91
|
+
# - :decrypt: true if the data needs to be decrypted automatically.
|
70
92
|
# - +value+ : value to add in hdata Hash.
|
71
93
|
#
|
72
94
|
# *return*:
|
@@ -89,6 +111,10 @@ module Lorj
|
|
89
111
|
value = value_mapping[value]
|
90
112
|
end
|
91
113
|
|
114
|
+
if param_options[:decrypt].is_a?(TrueClass)
|
115
|
+
value = _get_encrypted_value(value, _get_encrypt_key)
|
116
|
+
end
|
117
|
+
|
92
118
|
return unless param_options[:mapping]
|
93
119
|
|
94
120
|
# NOTE: if mapping is set, the definition subtree
|
@@ -111,7 +137,7 @@ module Lorj
|
|
111
137
|
#
|
112
138
|
#
|
113
139
|
# *return*:
|
114
|
-
# - value : return the parameter value.
|
140
|
+
# - value : return the parameter value or nil if is :CloudObject type.
|
115
141
|
#
|
116
142
|
# *raise*:
|
117
143
|
#
|
@@ -126,7 +152,7 @@ module Lorj
|
|
126
152
|
@object_data.type?(param_name) != :DataObject
|
127
153
|
PrcLib.runtime_fail "Object '%s/%s' is not defined. '%s' "\
|
128
154
|
'requirement failed.',
|
129
|
-
self.class, param_name,
|
155
|
+
self.class, param_name, __callee__
|
130
156
|
end
|
131
157
|
if @object_data.exist?(param_name)
|
132
158
|
new_params.add(@object_data[param_name, :ObjectData])
|
@@ -179,6 +205,10 @@ module Lorj
|
|
179
205
|
_get_object_params(object_type, sEventType, fname, true)
|
180
206
|
end
|
181
207
|
|
208
|
+
# TODO: Fix the Complexity
|
209
|
+
# rubocop: disable Metrics/CyclomaticComplexity
|
210
|
+
# rubocop: disable Metrics/PerceivedComplexity
|
211
|
+
|
182
212
|
# internal runtime function for process call
|
183
213
|
# Build a process/controller parameters object (ObjectData)
|
184
214
|
#
|
@@ -197,7 +227,8 @@ module Lorj
|
|
197
227
|
# *raise*:
|
198
228
|
# - runtime error if required data is not set. (empty or nil)
|
199
229
|
#
|
200
|
-
def _get_object_params(object_type, sEventType, fname, as_controller
|
230
|
+
def _get_object_params(object_type, sEventType, fname, as_controller,
|
231
|
+
new_params = nil)
|
201
232
|
# Building handler parameters
|
202
233
|
# hdata is built for controller. ie, ObjectData is NOT internal.
|
203
234
|
|
@@ -206,7 +237,9 @@ module Lorj
|
|
206
237
|
PrcLib.runtime_fail "%s:'%s' Object data needs not set. Forgot "\
|
207
238
|
'obj_needs?', fname, object_type if obj_params.nil?
|
208
239
|
|
209
|
-
new_params
|
240
|
+
if new_params.nil?
|
241
|
+
new_params = _obj_param_init(object_type, sEventType, as_controller)
|
242
|
+
end
|
210
243
|
|
211
244
|
obj_params.each do |param_path, param_options|
|
212
245
|
if param_options.key?(:for)
|
@@ -221,9 +254,15 @@ module Lorj
|
|
221
254
|
_build_hdata(object_type, new_params, param_obj, param_options, value)
|
222
255
|
end
|
223
256
|
end
|
257
|
+
unless fname == :update_params
|
258
|
+
new_params.refresh_set(self, object_type, sEventType, as_controller)
|
259
|
+
end
|
224
260
|
new_params
|
225
261
|
end
|
226
262
|
|
263
|
+
# rubocop: enable Metrics/CyclomaticComplexity
|
264
|
+
# rubocop: enable Metrics/PerceivedComplexity
|
265
|
+
|
227
266
|
# Internal runtime function for process call
|
228
267
|
#
|
229
268
|
# initialize Object parameters object (ObjectData)
|
data/lib/core/core_process.rb
CHANGED
@@ -12,15 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# Those classes describes :
|
18
|
-
# - processes (BaseProcess) : How to create/delete/edit/query object.
|
19
|
-
# - controler (BaseControler) : If a provider is defined, define how will do
|
20
|
-
# object creation/etc...
|
21
|
-
# - definition(BaseDefinition): Functions to declare objects, query/data mapping
|
22
|
-
# and setup
|
23
|
-
# this task to make it to work.
|
15
|
+
# - process functions: Process functions called by Core or BaseProcess.
|
24
16
|
module Lorj
|
25
17
|
# Adding process core functions.
|
26
18
|
class BaseDefinition
|
@@ -124,7 +124,7 @@ module Lorj
|
|
124
124
|
|
125
125
|
setup_steps = _setup_load
|
126
126
|
|
127
|
-
|
127
|
+
return nil unless _process_setup_init(sAccountName)
|
128
128
|
|
129
129
|
Lorj.debug(2, "Setup is identifying account data to ask for '%s'",
|
130
130
|
sObjectType)
|
@@ -137,10 +137,36 @@ module Lorj
|
|
137
137
|
Lorj.debug(2, "Setup will ask for :\n %s", setup_steps.to_yaml)
|
138
138
|
|
139
139
|
_setup_ask(setup_steps)
|
140
|
-
|
140
|
+
|
141
|
+
PrcLib.info("Configuring account : '#{sAccountName}',"\
|
141
142
|
" provider '#{config[:provider_name]}'")
|
142
143
|
end
|
143
144
|
|
145
|
+
private
|
146
|
+
|
147
|
+
# Internal function to initialize the account.
|
148
|
+
#
|
149
|
+
# return true if initialized, false otherwise.
|
150
|
+
def _process_setup_init(sAccountName)
|
151
|
+
return false unless sAccountName
|
152
|
+
|
153
|
+
if @config.ac_load(sAccountName)
|
154
|
+
if @config[:provider] != @config[:provider_name]
|
155
|
+
s_ask = format("Account '%s' was configured with a different "\
|
156
|
+
"provider '%s'.\nAre you sure to re-initialize this "\
|
157
|
+
"account with '%s' provider instead? "\
|
158
|
+
'All data will be lost',
|
159
|
+
sAccountName, @config[:provider],
|
160
|
+
@config[:provider_name])
|
161
|
+
PrcLib.fatal(0, 'Exited by user request.') unless agree(s_ask)
|
162
|
+
@config.ac_new(sAccountName, config[:provider_name])
|
163
|
+
end
|
164
|
+
else
|
165
|
+
@config.ac_new(sAccountName, config[:provider_name])
|
166
|
+
end
|
167
|
+
true
|
168
|
+
end
|
169
|
+
|
144
170
|
# Internal function to insert the data after several data to ask.
|
145
171
|
#
|
146
172
|
# * *Args* :
|
@@ -191,7 +217,7 @@ module Lorj
|
|
191
217
|
# * *Raises* :
|
192
218
|
#
|
193
219
|
def _setup_data_after(data_to_check)
|
194
|
-
meta =
|
220
|
+
meta = _get_meta_data(data_to_check)
|
195
221
|
return [] unless meta.rh_exist?(:after)
|
196
222
|
|
197
223
|
datas_after = meta[:after]
|
@@ -240,7 +266,7 @@ module Lorj
|
|
240
266
|
return false
|
241
267
|
end
|
242
268
|
|
243
|
-
meta =
|
269
|
+
meta = _get_meta_data(attr_name)
|
244
270
|
return false unless meta.is_a?(Hash)
|
245
271
|
|
246
272
|
ask_step = 0
|
@@ -273,7 +299,7 @@ module Lorj
|
|
273
299
|
# parameters:
|
274
300
|
# - +order_array+ : array of levels of attributes ordered.
|
275
301
|
# - +attr_name+ : attribute name
|
276
|
-
# - +depends_on+ :
|
302
|
+
# - +depends_on+ : Dependency Array.
|
277
303
|
#
|
278
304
|
# return:
|
279
305
|
# - level_index to use.
|
@@ -284,7 +310,7 @@ module Lorj
|
|
284
310
|
attr_name) unless depends_on.nil?
|
285
311
|
0
|
286
312
|
else
|
287
|
-
_setup_find_dep_level(order_array,
|
313
|
+
_setup_find_dep_level(order_array, depends_on)
|
288
314
|
end
|
289
315
|
end
|
290
316
|
|
data/lib/core/core_setup_ask.rb
CHANGED
@@ -34,12 +34,13 @@ module Lorj
|
|
34
34
|
# new value
|
35
35
|
#
|
36
36
|
# * *Args* :
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
37
|
+
# - +desc+ : Data description
|
38
|
+
# - +data+ : Data to ask.
|
39
|
+
# - +options+: list and validation options
|
40
|
+
# - +:post_step_function+ : Call a post process function.
|
40
41
|
#
|
41
42
|
# * *Returns*:
|
42
|
-
# -
|
43
|
+
# - nothing
|
43
44
|
#
|
44
45
|
# * *Raises* :
|
45
46
|
#
|
@@ -52,22 +53,34 @@ module Lorj
|
|
52
53
|
desc, options)
|
53
54
|
end
|
54
55
|
|
55
|
-
@config.set(data, value)
|
56
|
-
|
56
|
+
# @config.set(data, value) ??? Why do we need that???
|
57
57
|
section = _get_account_section(data)
|
58
|
-
|
59
|
-
|
58
|
+
# We set the value only if there is a value entered by the user.
|
59
|
+
unless section.nil? || value.nil?
|
60
|
+
@config.set(data, value, :name => 'account', :section => section)
|
61
|
+
end
|
60
62
|
|
61
|
-
|
63
|
+
result = _setup_ask_post_process(options[:post_step_function])
|
64
|
+
break unless result.is_a?(FalseClass)
|
65
|
+
end
|
66
|
+
end
|
62
67
|
|
63
|
-
|
64
|
-
|
68
|
+
# Execute the post process on data entered by the user
|
69
|
+
#
|
70
|
+
# * *returns*
|
71
|
+
# - false if the process ask the user to re-enter a value.
|
72
|
+
# - true otherwise.
|
73
|
+
def _setup_ask_post_process(proc)
|
74
|
+
return true if proc.nil?
|
65
75
|
|
66
|
-
|
67
|
-
' value. Ignored', proc) unless result.boolean?
|
76
|
+
result = @process.method(proc).call
|
68
77
|
|
69
|
-
|
78
|
+
unless result.boolean?
|
79
|
+
PrcLib.debug("Warning: '%s' did not return any boolean"\
|
80
|
+
' value. Ignored', proc)
|
81
|
+
result = true
|
70
82
|
end
|
83
|
+
result
|
71
84
|
end
|
72
85
|
|
73
86
|
# Internal setup function to ask to the end user from a list.
|
@@ -173,12 +186,14 @@ module Lorj
|
|
173
186
|
# Internal setup function to ask to the end user.
|
174
187
|
#
|
175
188
|
# * *Args* :
|
176
|
-
#
|
177
|
-
#
|
178
|
-
#
|
189
|
+
# - +desc+ : Data description
|
190
|
+
# - +data+ : Data to ask.
|
191
|
+
# - +options+: list and validation options
|
192
|
+
# - :ask_function: Replace the _ask default call by a process function
|
193
|
+
# This function should return a string or nil, if no value.
|
179
194
|
#
|
180
195
|
# * *Returns*:
|
181
|
-
# - value : value entered by the end user.
|
196
|
+
# - value : value entered by the end user or nil if no value.
|
182
197
|
#
|
183
198
|
# * *Raises* :
|
184
199
|
#
|
@@ -196,24 +211,11 @@ module Lorj
|
|
196
211
|
proc_ask = options[:ask_function]
|
197
212
|
|
198
213
|
if proc_ask.nil?
|
199
|
-
|
200
|
-
# is_encrypted, is_required)
|
201
|
-
value = _ask(desc, default, valid_regex,
|
202
|
-
is_encrypted, is_required)
|
214
|
+
value = _ask(desc, default, valid_regex, is_encrypted, is_required)
|
203
215
|
else
|
204
|
-
# proc_method = @process.method(proc_ask)
|
205
216
|
value = @process.method(proc_ask)
|
206
217
|
end
|
207
|
-
|
208
|
-
# loop do
|
209
|
-
# value = proc_method.call(desc, default, valid_regex,
|
210
|
-
# is_encrypted, is_required)
|
211
|
-
# break if validate_proc.nil?
|
212
|
-
|
213
|
-
# validate_method = @process.method(validate_proc)
|
214
|
-
# break if validate_method.call(value)
|
215
|
-
# end
|
216
|
-
value
|
218
|
+
_nil_if_no_value(value)
|
217
219
|
end
|
218
220
|
|
219
221
|
# internal runtime function for process call
|
@@ -247,5 +249,11 @@ module Lorj
|
|
247
249
|
end
|
248
250
|
value.to_s
|
249
251
|
end
|
252
|
+
|
253
|
+
# Internal function to return nil if value is empty.
|
254
|
+
def _nil_if_no_value(value)
|
255
|
+
return nil if value.nil? || value == ''
|
256
|
+
value
|
257
|
+
end
|
250
258
|
end
|
251
259
|
end
|
@@ -83,12 +83,7 @@ module Lorj
|
|
83
83
|
return '' if enc_value.nil?
|
84
84
|
value_hidden = ''
|
85
85
|
begin
|
86
|
-
value_hidden = '*' *
|
87
|
-
:value => Base64.strict_decode64(enc_value),
|
88
|
-
:key => entr[:key],
|
89
|
-
:iv => Base64.strict_decode64(entr[:iv]),
|
90
|
-
:salt => entr[:salt]
|
91
|
-
).length
|
86
|
+
value_hidden = '*' * _get_encrypted_value(enc_value, entr).length
|
92
87
|
rescue
|
93
88
|
PrcLib.error('Unable to decrypt your %s. You will need to re-enter it.',
|
94
89
|
sDesc)
|
@@ -99,6 +94,34 @@ module Lorj
|
|
99
94
|
value_hidden
|
100
95
|
end
|
101
96
|
|
97
|
+
# internal runtime function for process call #_build_hdata and
|
98
|
+
# #_get_encrypted_value_hidden
|
99
|
+
# Get encrypted value
|
100
|
+
#
|
101
|
+
# *parameters*:
|
102
|
+
# - +default+ : encrypted default value
|
103
|
+
# - +entropy+ : Entropy Hash
|
104
|
+
#
|
105
|
+
# *return*:
|
106
|
+
# - value : decrypted value.
|
107
|
+
#
|
108
|
+
# *raise*:
|
109
|
+
#
|
110
|
+
def _get_encrypted_value(enc_value, entr)
|
111
|
+
return '' if enc_value.nil?
|
112
|
+
begin
|
113
|
+
Encryptor.decrypt(
|
114
|
+
:value => Base64.strict_decode64(enc_value),
|
115
|
+
:key => entr[:key],
|
116
|
+
:iv => Base64.strict_decode64(entr[:iv]),
|
117
|
+
:salt => entr[:salt]
|
118
|
+
)
|
119
|
+
rescue
|
120
|
+
PrcLib.error('Unable to decrypt your %s. You will need to re-enter it.',
|
121
|
+
sDesc)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
102
125
|
# internal runtime function for process call
|
103
126
|
# Ask encrypted function executed by _ask
|
104
127
|
#
|
data/lib/core/core_setup_init.rb
CHANGED
@@ -37,7 +37,7 @@ module Lorj
|
|
37
37
|
# * *Raises* :
|
38
38
|
#
|
39
39
|
def _setup_load
|
40
|
-
ask_steps = Lorj.
|
40
|
+
ask_steps = Lorj.data.setup_data(:ask_step)
|
41
41
|
setup_steps = []
|
42
42
|
ask_steps.each do |value|
|
43
43
|
setup_steps << {
|
@@ -214,7 +214,7 @@ module Lorj
|
|
214
214
|
order_array.each_index do |iIndex|
|
215
215
|
Lorj.debug(2, 'Ask order %s:', iIndex)
|
216
216
|
order_array[iIndex].each do |data|
|
217
|
-
options =
|
217
|
+
options = _get_meta_data(data)
|
218
218
|
options = {} if options.nil?
|
219
219
|
|
220
220
|
data_desc = _setup_display_data(data, options)
|