lorj 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
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* :