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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/example/students_1/students.rb +5 -6
  3. data/example/students_2/students.rb +4 -5
  4. data/example/students_3/students.rb +4 -5
  5. data/example/students_4/students.rb +4 -5
  6. data/example/students_5/students.rb +5 -5
  7. data/lib/core/core.rb +6 -1
  8. data/lib/core/core_controller.rb +1 -9
  9. data/lib/core/core_internal.rb +2 -1
  10. data/lib/core/core_model.rb +2 -10
  11. data/lib/core/core_object_data.rb +18 -0
  12. data/lib/core/core_object_params.rb +43 -4
  13. data/lib/core/core_process.rb +1 -9
  14. data/lib/core/core_process_setup.rb +32 -6
  15. data/lib/core/core_setup_ask.rb +41 -33
  16. data/lib/core/core_setup_encrypt.rb +29 -6
  17. data/lib/core/core_setup_init.rb +2 -2
  18. data/lib/core/definition.rb +33 -10
  19. data/lib/core/definition_internal.rb +10 -14
  20. data/lib/core/lorj_basedefinition.rb +16 -24
  21. data/lib/core/lorj_baseprocess.rb +113 -44
  22. data/lib/core/lorj_data.rb +2 -9
  23. data/lib/core/lorj_keypath.rb +5 -2
  24. data/lib/core_process/cloud/process/common.rb +4 -7
  25. data/lib/core_process/cloud/process/connection.rb +44 -45
  26. data/lib/core_process/cloud/process/external_network.rb +24 -28
  27. data/lib/core_process/cloud/process/flavor.rb +31 -34
  28. data/lib/core_process/cloud/process/images.rb +12 -15
  29. data/lib/core_process/cloud/process/internet_network.rb +13 -14
  30. data/lib/core_process/cloud/process/internet_server.rb +9 -10
  31. data/lib/core_process/cloud/process/keypairs.rb +34 -27
  32. data/lib/core_process/cloud/process/network.rb +21 -23
  33. data/lib/core_process/cloud/process/public_ip.rb +17 -18
  34. data/lib/core_process/cloud/process/router.rb +86 -92
  35. data/lib/core_process/cloud/process/rules.rb +30 -31
  36. data/lib/core_process/cloud/process/security_groups.rb +21 -22
  37. data/lib/core_process/cloud/process/server.rb +30 -31
  38. data/lib/core_process/cloud/process/server_log.rb +13 -14
  39. data/lib/core_process/cloud/process/subnetwork.rb +25 -40
  40. data/lib/logging.rb +4 -17
  41. data/lib/lorj/version.rb +1 -1
  42. data/lib/lorj.rb +2 -1
  43. data/lib/lorj_account.rb +137 -90
  44. data/lib/lorj_config.rb +13 -19
  45. data/lib/lorj_defaults.rb +46 -292
  46. data/lib/lorj_meta.rb +729 -0
  47. data/lib/prc.rb +119 -30
  48. data/lib/prc_base_config.rb +53 -47
  49. data/lib/prc_core_config.rb +837 -565
  50. data/lib/prc_section_config.rb +44 -16
  51. data/lib/providers/hpcloud/hpcloud.rb +1 -1
  52. data/lib/providers/openstack/openstack.rb +278 -21
  53. data/lib/providers/openstack/openstack_create.rb +205 -0
  54. data/lib/providers/openstack/openstack_delete.rb +28 -0
  55. data/lib/providers/openstack/openstack_get.rb +39 -0
  56. data/lib/providers/openstack/openstack_process.rb +26 -0
  57. data/lib/providers/openstack/openstack_query.rb +96 -0
  58. data/lib/providers/openstack/openstack_update.rb +35 -0
  59. data/lib/rh.rb +91 -6
  60. data/lorj-spec/defaults.yaml +18 -12
  61. data/lorj.gemspec +1 -0
  62. data/spec/01_hash_rh_spec.rb +41 -2
  63. data/spec/02_prc_base_config_spec.rb +1 -1
  64. data/spec/03_prc_section_config_spec.rb +1 -1
  65. data/spec/04_prc_core_config_spec.rb +148 -4
  66. data/spec/09_prc_spec.rb +104 -0
  67. data/spec/{00_lorj_log_spec.rb → 10_lorj_log_spec.rb} +23 -2
  68. data/spec/11_lorj_config_spec.rb +9 -27
  69. data/spec/12_lorj_account_spec.rb +36 -20
  70. data/spec/20_lorj_meta_spec.rb +271 -0
  71. data/spec/21_lorj_defaults_spec.rb +85 -0
  72. metadata +31 -4
data/lib/logging.rb CHANGED
@@ -152,14 +152,8 @@ module PrcLib
152
152
  end
153
153
 
154
154
  # Log to STDOUT and Log file and FATAL class message
155
- # fatal retrieve the caller list of functions and save it to the log file if
156
- # the exception class is given.
157
- # The exception class should provide message and backtrace.
158
- def fatal(message, e = nil)
155
+ def fatal(message)
159
156
  @out_logger.fatal(message + ANSI.clear_eol)
160
- return @file_logger.fatal(format("%s\n%s\n%s",
161
- message, e.message,
162
- e.backtrace.join("\n"))) if e
163
157
  @file_logger.fatal(message)
164
158
  end
165
159
 
@@ -184,18 +178,11 @@ module PrcLib
184
178
  private
185
179
 
186
180
  def file_logger_initialize
187
- log_file = PrcLib.log_file
188
- if log_file.nil?
189
- default_log_file = format('%s.log', PrcLib.app_name)
190
- log_file = File.join(PrcLib.data_path, default_log_file)
191
- end
192
-
193
- @file_logger = Logger.new(log_file, 'weekly')
181
+ @file_logger = Logger.new(PrcLib.log_file, 'weekly')
194
182
  @file_logger.level = Logger::DEBUG
195
183
  @file_logger.formatter = proc do |severity, datetime, progname, msg|
196
184
  "#{progname} : #{datetime}: #{severity}: #{msg} \n"
197
185
  end
198
- PrcLib.log_file = log_file
199
186
  end
200
187
  end
201
188
 
@@ -260,12 +247,12 @@ module PrcLib
260
247
  # the exception class is given.
261
248
  # The exception class should provide message and backtrace.
262
249
  def fatal(rc, message, *p)
263
- e = nil
264
250
  if p.length > 0 && p[-1].is_a?(Exception)
265
251
  e = p[-1]
266
252
  p.pop
253
+ message = format("%s\n%s\n%s", message, e.message, e.backtrace.join("\n"))
267
254
  end
268
- log_object.fatal(format(message, *p), e)
255
+ log_object.fatal(format(message, *p))
269
256
  puts format('Issues found. Please fix it and retry. Process aborted. '\
270
257
  "See details in log file '%s'.", PrcLib.log_file)
271
258
  exit rc
data/lib/lorj/version.rb CHANGED
@@ -16,5 +16,5 @@
16
16
 
17
17
  # Lorj version
18
18
  module Lorj
19
- VERSION = '1.0.3'
19
+ VERSION = '1.0.4'
20
20
  end
data/lib/lorj.rb CHANGED
@@ -29,6 +29,7 @@ require 'logging.rb' # class PrcLib::Logging
29
29
  require 'prc_base_config.rb' # PRC::BaseConfig class
30
30
  require 'prc_section_config.rb' # PRC::SectionConfig class
31
31
  require 'prc_core_config.rb' # PRC::CoreConfig class
32
+ require 'lorj_meta.rb' # PRC::Meta class - Application defaults
32
33
  require 'lorj_defaults.rb' # PRC::Defaults class - Application defaults
33
34
  require 'lorj_config.rb' # Lorj::Config class -
34
35
  require 'lorj_account.rb' # Lorj::Account class - account config
@@ -72,7 +73,7 @@ module Lorj
72
73
  if iLevel <= PrcLib.core_level
73
74
  message = format('-%s- %s', iLevel, sMsg)
74
75
 
75
- PrcLib.debug(format(message, *p))
76
+ PrcLib.debug(message, *p)
76
77
  end
77
78
  end
78
79
 
data/lib/lorj_account.rb CHANGED
@@ -17,6 +17,7 @@
17
17
 
18
18
  require 'rubygems'
19
19
 
20
+ # Lorj implements Lorj::Accounts
20
21
  module Lorj
21
22
  # Simple List of accounts class.
22
23
  class Accounts
@@ -35,6 +36,7 @@ module Lorj
35
36
  end
36
37
  end
37
38
 
39
+ # Lorj implements Lorj::AccountConfig
38
40
  module Lorj
39
41
  # AccountConfig class layer
40
42
  class AccountConfig < PRC::SectionConfig
@@ -48,11 +50,12 @@ module Lorj
48
50
  end
49
51
 
50
52
  def data_options(options = { :section => :default })
51
- _data_options(options)
53
+ p_data_options(options)
52
54
  end
53
55
  end
54
56
  end
55
57
 
58
+ # Lorj implements Lorj::Account
56
59
  module Lorj
57
60
  # Lorj::Account manage a list of key/value grouped by section.
58
61
  # The intent of Lorj::Account is to attach some keys/values to
@@ -109,16 +112,25 @@ module Lorj
109
112
 
110
113
  # This object manage data located in oConfig[:hpc_accounts/AccountName]
111
114
 
112
- # The class new accept to provide a local config file different than
113
- # standard one configured by PrcLib.app_path/.config.yaml
115
+ # Lorj::Account implements Config layers.
116
+ # - default : Represents the application defaults.yaml config.
117
+ # - controller : Represents the controller config redefinition.
118
+ # See BaseDefinition::define_data
119
+ # - local : Represents the config.yaml located in ~/.forj
120
+ # - account : Represents an Account data located in ~/.forj/accounts
121
+ # - runtime : Represents the runtime in memory data settings.
114
122
  def initialize(config_name = nil)
115
123
  config_layers = []
116
124
 
117
125
  # Application layer
118
126
  config_layers << define_default_layer
119
127
 
128
+ # runtime Config layer
129
+ config_layers << define_controller_data_layer
130
+
120
131
  # Local Config layer
121
- config_layers << define_local_layer
132
+ local = define_local_layer
133
+ config_layers << local
122
134
 
123
135
  # Account config layer
124
136
  config_layers << define_account_layer
@@ -130,7 +142,7 @@ module Lorj
130
142
  PrcLib.fatal(1, 'Internal PrcLib.data_path was not set.')
131
143
  end
132
144
 
133
- initialize_local(config_layers[1][:config], config_name)
145
+ initialize_local(local[:config], config_name)
134
146
 
135
147
  initialize_account
136
148
 
@@ -143,15 +155,15 @@ module Lorj
143
155
  # otherwise, search in all layers.
144
156
  #
145
157
  # * *Args* :
146
- # - +key+ : key name. It do not support it to be a key tree (Arrays of
147
- # keys).
148
- # - +default+ : default value, if not found.
149
- # - +options+ : Options for get:
150
- # - +:section+ : Get will use this section name instead of searching it.
151
- # - +:name+ : layer to exclusively get data.
152
- # - +:indexes+ : layer index to exclusively get data.
153
- # If neither :name or :index is set, get will search
154
- # data on all predefined layers, first found.
158
+ # - +key+ : key name. It do not support it to be a key tree (Arrays of
159
+ # keys).
160
+ # - +default+ : default value, if not found.
161
+ # - +options+ : Options for get:
162
+ # - +:section+ : Get will use this section name instead of searching it.
163
+ # - +:names+ : array of layers name to exclusively get data.
164
+ # - +:indexes+ : array of layers index to exclusively get data.
165
+ # If neither :name or :index is set, get will search
166
+ # data on all predefined layers, first found.
155
167
  # * *Returns* :
156
168
  # - key value.
157
169
  # * *Raises* :
@@ -161,21 +173,23 @@ module Lorj
161
173
  options = {} unless options.is_a?(Hash)
162
174
 
163
175
  section = options[:section]
164
- section = Lorj.defaults.get_meta_section(key) if section.nil?
176
+ section = Lorj.data.first_section(key) if section.nil?
165
177
 
166
178
  options = { :keys => [key], :section => section }
167
179
 
168
- indexes = _identify_indexes(options, exclusive?(key, section))
180
+ indexes = _identify_array_indexes(options, exclusive?(key, section))
169
181
  names = []
170
182
  indexes.each { |index| names << @config_layers[index][:name] }
171
183
 
172
184
  options[:data_options] = _set_data_options_per_names(names)
173
185
 
174
- return _get(options) if _exist?(options)
186
+ return p_get(options) if p_exist?(options)
175
187
 
176
188
  default
177
189
  end
178
190
 
191
+ # Simple get call with default options
192
+ # Alternative is to use Account::get
179
193
  def [](key, default = nil)
180
194
  get(key, default)
181
195
  end
@@ -186,14 +200,14 @@ module Lorj
186
200
  # otherwise, search in all layers.
187
201
  #
188
202
  # * *Args* :
189
- # - +key+ : key name. It do not support it to be a key tree (Arrays of
190
- # keys).
191
- # - +options+ : possible options:
192
- # - +:section+ : Force to use a specific section name.
193
- # - +:name+ : layer to exclusively get data.
194
- # - +:indexes+ : layer index to exclusively get data.
195
- # If neither :name or :index is set, get will search
196
- # data on all predefined layers, first found, first listed.
203
+ # - +key+ : key name. It do not support it to be a key tree (Arrays of
204
+ # keys).
205
+ # - +options+ : possible options:
206
+ # - +:section+ : Force to use a specific section name.
207
+ # - +:names+ : array of layers name to exclusively get data.
208
+ # - +:indexes+ : array of layers index to exclusively get data.
209
+ # If neither :name or :index is set, get will search data on all
210
+ # predefined layers, first found, first listed.
197
211
  # * *Returns* :
198
212
  # - key value.
199
213
  # * *Raises* :
@@ -217,20 +231,20 @@ module Lorj
217
231
  :data_options => _set_data_options_per_names(names)
218
232
  }
219
233
 
220
- _where?(where_options)
234
+ p_where?(where_options)
221
235
  end
222
236
 
223
237
  # check key/value existence in config layers
224
238
  #
225
239
  # * *Args* :
226
- # - +key+ : key name. It do not support it to be a key tree (Arrays of
227
- # keys).
228
- # - +options+ : possible options:
229
- # - +:section+ : Force to use a specific section name.
230
- # - +:name+ : layer to exclusively get data.
231
- # - +:indexes+ : layer index to exclusively get data.
232
- # If neither :name or :index is set, get will search
233
- # data on all predefined layers, first found.
240
+ # - +key+ : key name. It do not support it to be a key tree (Arrays of
241
+ # keys).
242
+ # - +options+ : possible options:
243
+ # - +:section+ : Force to use a specific section name.
244
+ # - +:names+ : array of layers name to exclusively get data.
245
+ # - +:indexes+ : array of layers index to exclusively get data.
246
+ # If neither :name or :index is set, get will search data on all
247
+ # predefined layers, first found.
234
248
  #
235
249
  # * *Returns* :
236
250
  # - 'runtime' : if found in runtime.
@@ -246,27 +260,27 @@ module Lorj
246
260
  options = {} unless options.is_a?(Hash)
247
261
 
248
262
  section = options[:section]
249
- section = Lorj.defaults.get_meta_section(key) if section.nil?
263
+ section = Lorj.data.first_section(key) if section.nil?
250
264
  options = { :keys => [key], :section => section }
251
265
 
252
- indexes = _identify_indexes(options, exclusive?(key, section))
266
+ indexes = _identify_array_indexes(options, exclusive?(key, section))
253
267
 
254
268
  names = []
255
269
  indexes.each { |index| names << @config_layers[index][:name] }
256
270
 
257
271
  options[:data_options] = _set_data_options_per_names(names)
258
272
 
259
- _exist?(options)
273
+ p_exist?(options)
260
274
  end
261
275
 
262
276
  # Return true if readonly. set won't be able to update this value.
263
- # Only _set (private function) is able.
277
+ # Only p_set (private function) is able.
264
278
  #
265
279
  # * *Args* :
266
280
  # - +key+ : key name. It can support it to be a key tree (Arrays of
267
- # keys).
281
+ # keys).
268
282
  # - +section+ : optionnal. If missing the section name is determined by
269
- # the data name associated
283
+ # the data name associated
270
284
  # * *Returns* :
271
285
  # - true/false : readonly value
272
286
  # OR
@@ -280,20 +294,20 @@ module Lorj
280
294
 
281
295
  return nil if section.nil?
282
296
 
283
- result = Lorj.defaults.get_meta(section, key, :readonly)
297
+ result = Lorj.data.section_data(section, key, :readonly)
284
298
  return result if result.boolean?
285
299
  false
286
300
  end
287
301
 
288
302
  # Return true if exclusive
289
303
  # set won't be able to update this value.
290
- # Only _set (private function) is able.
304
+ # Only p_set (private function) is able.
291
305
  #
292
306
  # * *Args* :
293
307
  # - +key+ : key name. It can support it to be a key tree (Arrays of
294
- # keys).
308
+ # keys).
295
309
  # - +section+ : optionnal. If missing the section name is determined by
296
- # the data name associated
310
+ # the data name associated
297
311
  # * *Returns* :
298
312
  # - true/false : readonly value
299
313
  # OR
@@ -303,37 +317,35 @@ module Lorj
303
317
  return nil unless key
304
318
 
305
319
  key = key.to_sym if key.class == String
306
- section = Lorj.defaults.get_meta_section(key) if section.nil?
320
+ section = Lorj.data.first_section(key) if section.nil?
307
321
 
308
322
  return nil if section.nil?
309
- result = Lorj.defaults.get_meta(section, key,
310
- :account_exclusive)
323
+ result = Lorj.data[:sections, section, key, :account_exclusive]
311
324
  return result if result.boolean?
312
325
  result
313
326
  end
314
327
 
315
328
  # This function update a section/key=value if the account structure is
316
- # defined.
317
- # If no section is defined, set it in runtime config.
329
+ # defined. (see Lorj::Defaults)
330
+ # If no section is defined, it will assume to be :default.
318
331
  #
319
332
  # * *Args* :
320
- # - +key+ : key name. It do not support it to be a key tree (Arrays of
321
- # keys).
322
- # - +value+ : value to set
323
- # - +options+ : possible options:
324
- # - +:section+ : Force to use a specific section name.
325
- # - +:name+ : layer to exclusively get data.
326
- # - +:indexes+ : layer index to exclusively get data.
327
- # If neither :name or :index is set, set will use the
328
- # 'runtime' layer.
333
+ # - +key+ : key name. It do not support it to be a key tree (Arrays of
334
+ # keys).
335
+ # - +value+ : value to set
336
+ # - +options+ : possible options:
337
+ # - +:section+ : Force to use a specific section name.
338
+ # - +:name+ : layer to exclusively set data.
339
+ # - +:index+ : layer index to exclusively set data.
340
+ # If neither :name or :index is set, set will use the 'runtime' layer.
329
341
  #
330
342
  # * *Returns* :
331
- # - the value set
332
- # OR
333
- # - nil if:
334
- # - lorj data model set this key as readonly.
335
- # - value is nil. The value is set to nil, then.
336
- # - key is nil. No update is done.
343
+ # - the value set
344
+ # OR
345
+ # - nil if:
346
+ # - lorj data model set this key as readonly.
347
+ # - value is nil. The value is set to nil, then.
348
+ # - key is nil. No update is done.
337
349
  #
338
350
  # * *Raises* :
339
351
  # Nothing
@@ -344,22 +356,48 @@ module Lorj
344
356
  key = parameters[0][0]
345
357
  layer_name, section = parameters[1]
346
358
 
347
- section = Lorj.defaults.get_meta_section(key) if section.nil?
359
+ section = Lorj.data.first_section(key) if section.nil?
348
360
  section = :default if section.nil?
349
361
 
350
362
  return nil if readonly?(key, section)
351
363
 
352
364
  options = { :keys => [key], :section => section, :value => value }
353
365
 
354
- options[:indexes] = index_to_update(layer_name, key, section)
366
+ options[:index] = index_to_update(layer_name, key, section)
355
367
 
356
- _set(options)
368
+ p_set(options)
357
369
  end
358
370
 
371
+ # Set a key to te runtime config layer.
372
+ # Alternative is to use Account::set
359
373
  def []=(key, value)
360
374
  set(key, value)
361
375
  end
362
376
 
377
+ # This function delete a section/key.
378
+ # If no section is defined, it will assume to be :default.
379
+ # Without any options, the runtime layer is used to delete the key.
380
+ #
381
+ # * *Args* :
382
+ # - +key+ : key name. It do not support it to be a key tree (Arrays of
383
+ # keys).
384
+ # - +value+ : value to set
385
+ # - +options+ : possible options:
386
+ # - +:section+ : Force to use a specific section name.
387
+ # - +:name+ : layer to exclusively get data.
388
+ # - +:index+ : layer index to exclusively get data.
389
+ # If neither :name or :index is set, set will use the 'runtime' layer.
390
+ #
391
+ # * *Returns* :
392
+ # - the value set
393
+ # OR
394
+ # - nil if:
395
+ # - lorj data model set this key as readonly.
396
+ # - value is nil. The value is set to nil, then.
397
+ # - key is nil. No update is done.
398
+ #
399
+ # * *Raises* :
400
+ # Nothing
363
401
  def del(key, options = {})
364
402
  parameters = validate_key_and_options(key, options)
365
403
  return nil if parameters.nil?
@@ -374,19 +412,20 @@ module Lorj
374
412
 
375
413
  options = { :keys => [key], :section => section }
376
414
 
377
- options[:indexes] = index_to_update(layer_name, key, section)
415
+ options[:index] = index_to_update(layer_name, key, section)
378
416
 
379
- _del(options)
417
+ p_del(options)
380
418
  end
381
419
  end
382
420
 
383
421
  # Defines Account exclusive functions
384
422
  class Account
385
- def ac_new(sAccountName, provider_name = nil)
423
+ def ac_new(sAccountName, provider_name)
386
424
  return nil if sAccountName.nil?
387
425
  @account_name = sAccountName
426
+ index = layer_index('account')
388
427
 
389
- account = @config_layers[1][:config]
428
+ account = @config_layers[index][:config]
390
429
  account.erase
391
430
  account.ac_new sAccountName, provider_name
392
431
  end
@@ -399,8 +438,9 @@ module Lorj
399
438
 
400
439
  account_file = File.join(@account_path, @account_name)
401
440
  return false unless File.exist?(account_file)
441
+ index = layer_index('account')
402
442
 
403
- _do_load(@config_layers[1][:config], account_file)
443
+ _do_load(@config_layers[index][:config], account_file)
404
444
  end
405
445
 
406
446
  # Account save function.
@@ -425,25 +465,30 @@ module Lorj
425
465
 
426
466
  account_file = File.join(@account_path, @account_name)
427
467
 
428
- account = @config_layers[1][:config]
429
- local = @config_layers[2][:config]
468
+ local_index = layer_index('local')
469
+ account_index = layer_index('account')
470
+
471
+ account = @config_layers[account_index][:config]
472
+ local = @config_layers[local_index][:config]
430
473
 
431
474
  account.data_options(:section => :account)
432
- if account[:provider].nil?
433
- PrcLib.error "Provider name is not set. Unable to save the account '"\
434
- "%s' to '%s'", @account_name, account_file
475
+
476
+ [:provider].each do |key|
477
+ next if account.exist?(key) && !account[key].nil?
478
+
479
+ PrcLib.error "':%s' is not set. Unable to save the account '"\
480
+ "%s' to '%s'", key.to_s, @account_name, account_file
435
481
  return false
436
482
  end
437
483
 
438
- account.filename = account_file
439
- result = account.save
484
+ result = local.save
440
485
 
441
486
  return result unless result
442
487
 
443
- return true if local.exist?(:account_name)
444
-
445
- local[:account_name] = @account_name
446
- local.save
488
+ account.data_options(:section => :account)
489
+ account[:name] = @account_name
490
+ account.filename = account_file
491
+ account.save
447
492
 
448
493
  true
449
494
  end
@@ -451,8 +496,9 @@ module Lorj
451
496
 
452
497
  # Defines internal functions
453
498
  class Account
454
- # TODO: Strange function!!! To revisit
499
+ # TODO: Strange function!!! To revisit. Used by forj cli in forj-settings.rb
455
500
 
501
+ #
456
502
  def meta_type?(key)
457
503
  return nil unless key
458
504
 
@@ -494,7 +540,7 @@ module Lorj
494
540
 
495
541
  def exclusive_indexes(account_exclusive)
496
542
  return [0, 1] if account_exclusive
497
- [0, 1, 2, 3]
543
+ [0, 1, 2, 3, 4]
498
544
  end
499
545
 
500
546
  def _identify_indexes(options, account_exclusive)
@@ -516,8 +562,9 @@ module Lorj
516
562
  data_options
517
563
  end
518
564
 
519
- # This internal function defines default section name per config index.
520
565
  # TODO: Change local and default way to get default values, not in /:default
566
+
567
+ # This internal function defines default section name per config index.
521
568
  def _data_options_per_layer(layer_name)
522
569
  # runtime and local and default uses :default section
523
570
  case layer_name
@@ -552,14 +599,14 @@ module Lorj
552
599
  end
553
600
 
554
601
  def index_to_update(layer_name, key, section)
555
- indexes = [0] # choose runtime by default.
556
- indexes = layer_indexes([layer_name]) unless layer_name.nil?
602
+ index = 0 # choose runtime by default.
603
+ index = layer_index(layer_name) unless layer_name.nil?
557
604
 
558
605
  if layer_name.nil?
559
606
  # Return runtime layer, if layer requested is not updatable.
560
- return [0] if indexes[0] <= (exclusive?(key, section) ? 1 : 3)
607
+ return 0 if index <= (exclusive?(key, section) ? 1 : 3)
561
608
  end
562
- indexes
609
+ index
563
610
  end
564
611
 
565
612
  def define_account_layer
data/lib/lorj_config.rb CHANGED
@@ -17,6 +17,7 @@
17
17
  require 'rubygems'
18
18
  require 'yaml'
19
19
 
20
+ # Definition of Lorj::Config
20
21
  module Lorj
21
22
  # Lorj::Config is a generic class for configuration management.
22
23
  # It is used by lorj to get/set data
@@ -101,7 +102,7 @@ module Lorj
101
102
  #
102
103
  # * *Args* :
103
104
  # - +config_name+ : Config file name to use. By default, file path is
104
- # built as PrcLib.data_path+'config.yaml'
105
+ # built as #{PrcLib.data_path}/config.yaml
105
106
  # * *Returns* :
106
107
  # -
107
108
  # * *Raises* :
@@ -112,8 +113,12 @@ module Lorj
112
113
  # Application layer
113
114
  config_layers << define_default_layer
114
115
 
116
+ # runtime Config layer
117
+ config_layers << define_controller_data_layer
118
+
115
119
  # Local Config layer
116
- config_layers << define_local_layer
120
+ local = define_local_layer
121
+ config_layers << local
117
122
 
118
123
  # runtime Config layer
119
124
  config_layers << define_runtime_layer
@@ -122,7 +127,7 @@ module Lorj
122
127
  PrcLib.fatal(1, 'Internal PrcLib.data_path was not set.')
123
128
  end
124
129
 
125
- initialize_local(config_layers[1][:config], config_name)
130
+ initialize_local(local[:config], config_name)
126
131
 
127
132
  initialize_layers(config_layers)
128
133
  end
@@ -139,6 +144,10 @@ module Lorj
139
144
  :load => true, :save => true)
140
145
  end
141
146
 
147
+ def define_controller_data_layer
148
+ PRC::CoreConfig.define_layer :name => 'controller'
149
+ end
150
+
142
151
  def define_runtime_layer
143
152
  PRC::CoreConfig.define_layer
144
153
  end
@@ -230,7 +239,7 @@ module Lorj
230
239
  # * *Raises* :
231
240
  # nothing
232
241
  def [](key, default = nil) # Re-define PRC::CoreConfig []= function
233
- return _get(:keys => [key]) if exist?(key)
242
+ return p_get(:keys => [key]) if exist?(key)
234
243
  default
235
244
  end
236
245
 
@@ -290,21 +299,6 @@ module Lorj
290
299
  @config_layers[index][:config][key]
291
300
  end
292
301
 
293
- # Get Application data
294
- # Used to get any kind of section available in the Application default.yaml.
295
- #
296
- # * *Args* :
297
- # - +section+ : section name to get the key.
298
- # - +keys_tree+ : list of key name tree
299
- # * *Returns* :
300
- # value found
301
- # * *Raises* :
302
- # nothing
303
- def app_default(*keys)
304
- return Lorj.defaults.data.rh_get(*keys) if keys.length > 0
305
- nil
306
- end
307
-
308
302
  # Save the config.yaml file.
309
303
  #
310
304
  # * *Args* :