Class: Eco::API::Session::Config
- Defined in:
- lib/eco/api/session/config.rb,
lib/eco/api/session/config/api.rb,
lib/eco/api/session/config/apis.rb,
lib/eco/api/session/config/sftp.rb,
lib/eco/api/session/config/files.rb,
lib/eco/api/session/config/logger.rb,
lib/eco/api/session/config/mailer.rb,
lib/eco/api/session/config/people.rb,
lib/eco/api/session/config/tagtree.rb,
lib/eco/api/session/config/workflow.rb,
lib/eco/api/session/config/s3_storage.rb,
lib/eco/api/session/config/base_config.rb,
lib/eco/api/session/config/post_launch.rb,
lib/eco/api/session/config/apis/one_off.rb,
lib/eco/api/session/config/apis/service_up.rb,
lib/eco/api/session/config/apis/enviro_spaces.rb,
lib/eco/api/session/config/apis/space_helpers.rb
Defined Under Namespace
Classes: Api, ApiDefChain, Apis, BaseConfig, Files, Logger, Mailer, People, PostLaunch, S3Storage, SFTP, TagTree, Workflow
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Config instance pure methods collapse
Additional resources collapse
-
#mailer ⇒ Eco::API::Session::Config::Mailer
Helper to send emails.
-
#s3storage ⇒ Eco::API::Session::Config::S3Storage
Helper to upload files and folders to
S3. -
#sftp ⇒ Eco::API::Session::Config::SFTP
Helper to manage
SFTPfiles and folders. -
#tagtree_config ⇒ Eco::API::Session::Config::TagTree
Helper scope reporting structures.
Logger collapse
- #log_connection=(value) ⇒ Object
- #log_console_level=(value) ⇒ Object
- #log_file=(file) ⇒ Object
- #log_file_level=(value) ⇒ Object
- #logger ⇒ Eco::API::Session::Config::Logger
- #timestamp_console=(value) ⇒ Object
Session and API collapse
-
#active_api(name, space: nil) ⇒ Eco::API::Session::Config
Set the active api by
name. - #active_enviro ⇒ Object
- #active_enviro_space ⇒ Object
-
#add_api(name, **kargs) ⇒ Eco::API::Session::Config
This configuration.
-
#api(logger = ::Logger.new(IO::NULL), version: nil) ⇒ Eco::API::Session::Config::Api
The currently active api.
- #apis ⇒ Eco::API::Session::Config::Apis
-
#apis? ⇒ Boolean
trueif there is any api configuration defined,falseotherwise. -
#dry_run! ⇒ Object
deprecated
Deprecated.
old helper to fix the dry-run mode
-
#dry_run? ⇒ Boolean
deprecated
Deprecated.
old helper to check if we are in dry-run mode
-
#run_mode=(mode) ⇒ Object
Sets the
modeof the active api. - #run_mode_local? ⇒ Boolean
- #run_mode_remote? ⇒ Boolean
-
#session ⇒ Eco::API::Session
The
sessionlinked to thisconfig.
Files collapse
- #file_manager ⇒ Object
- #file_timestamp_pattern=(pattern) ⇒ Object
- #files ⇒ Eco::API::Session::Config::Files
- #require(file = nil, match: nil) ⇒ Object
- #working_directory(mode: nil) ⇒ Object
-
#working_directory=(path) ⇒ Object
Defines in the base folder from where files are expected to be found when relative paths are used.
Organization related shortcuts collapse
-
#live_tree(id: nil, **kargs, &block) ⇒ Eco::API::Organization::TagTree
It obtains the first of the live tagtree in the org.
-
#live_trees(**kargs, &block) ⇒ Array<Eco::API::Organization::TagTree>
Retrieves all the location structures of the organisation.
- #location_codes ⇒ Object (also: #locations_map_file)
- #location_codes=(file) ⇒ Object
- #locations_mapper(valid_internal_values: :no_validation, **kargs) ⇒ Eco::Data::Mapper, NilClass
- #login_providers ⇒ Eco::API::Organization::LoginProviders
-
#node_classifications(active: true) ⇒ Eco::API::Organization::NodeClassifications
The location node classifications of the organization.
- #org ⇒ Object
- #policy_groups ⇒ Eco::API::Organization::PolicyGroups
-
#schemas ⇒ Object
PEco::API::Organization::PersonSchemas.
-
#tagtree(include_archived: false, recache: false, raise_on_missing: true) ⇒ Eco::API::Organization::TagTree
It uses the
tagtree.jsonfile and in its absence, ifgraphqlenabled, the largestlife_tagtree. - #tagtree=(file) ⇒ Object
- #tagtree_id=(value) ⇒ Object (also: #structure_id=)
People shortcuts collapse
-
#default_login_method=(name) ⇒ Object
Set the default login method that users should acquire.
-
#default_schema=(name) ⇒ Object
Set the default schema this
apiorg configuration should work on. -
#default_usergroup=(value) ⇒ Object
Define the default usergroup that should be given to people with no usergroups.
-
#discarded_people_file=(value) ⇒ Object
Specify the file that holds the
csvwith people to be excluded fromAPIupdates. - #people ⇒ Eco::API::Session::Config::People
-
#people_cache=(file) ⇒ Object
Set the base folder/name.ext name of the fieles where people will be cached.
-
#person_fields_mapper=(file) ⇒ Object
Specify the
.jsonfile name with the mappings [DataInputColumnName,internal-name]. -
#person_parser(format: :csv, &block) ⇒ Eco::API::Common::People::PersonParser
Parser/serializer for the defined
format. -
#requests_backup_folder=(folder) ⇒ Object
Set the base folder name where requests launched to the server will be saved for future reference.
Session workflow and batch job launces collapse
- #batch_policies(&block) ⇒ Eco::API::Session::Batch::Policies
-
#delay_between_job_groups(seconds = nil) ⇒ nil, Interger
Seconds between job groups.
-
#delay_between_jobs(seconds = nil) ⇒ nil, Interger
Seconds between jobs.
- #error_handlers ⇒ Eco::API::Error::Handlers
- #policies ⇒ Eco::API::Policies
- #post_launch ⇒ Eco::API::Session::Config::PostLaunch
- #usecases ⇒ Eco::API::UseCases
- #workflow ⇒ Eco::API::Session::Config::Workflow
Instance Method Summary collapse
-
#initialize(name = :default) ⇒ Config
constructor
A new instance of Config.
Methods inherited from Hash
Constructor Details
#initialize(name = :default) ⇒ Config
Returns a new instance of Config.
7 8 9 10 11 |
# File 'lib/eco/api/session/config.rb', line 7 def initialize(name = :default) super(nil) @name = name self['org'] = {} end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/eco/api/session/config.rb', line 5 def name @name end |
Instance Method Details
#active_api(name, space: nil) ⇒ Eco::API::Session::Config
Set the active api by name
140 141 142 143 |
# File 'lib/eco/api/session/config.rb', line 140 def active_api(name, space: nil) apis.set_active_name(name, space: space) self end |
#active_enviro ⇒ Object
146 147 148 |
# File 'lib/eco/api/session/config.rb', line 146 def active_enviro apis.active_root_name end |
#active_enviro_space ⇒ Object
151 152 153 |
# File 'lib/eco/api/session/config.rb', line 151 def active_enviro_space apis.active_space end |
#add_api(name, **kargs) ⇒ Eco::API::Session::Config
Returns this configuration.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/eco/api/session/config.rb', line 112 def add_api(name, **kargs) apis.add(name, **kargs) if block_given? params = kargs.merge({space: :sub_other}) yield(ApiDefChain.new(self, name, params)) end ApiDefChain.new(self, name, {space: :other}).tap do next unless kargs[:host].to_s.downcase == 'live.ecoportal.com' next unless kargs[:space].nil? || kargs[:space].to_sym == :default %w[ beta.dev.ecoportal.com staging.dev.ecoportal.com pre.dev.ecoportal.com ].each do |env| spa = env.split('.', 2).first.to_sym next if apis.defined?(name, space: spa) apis.add(name, **kargs, host: env, space: spa) end end end |
#api(logger = ::Logger.new(IO::NULL), version: nil) ⇒ Eco::API::Session::Config::Api
Returns the currently active api.
157 158 159 |
# File 'lib/eco/api/session/config.rb', line 157 def api(logger = ::Logger.new(IO::NULL), version: nil) apis.api(logger, version: version) end |
#apis ⇒ Eco::API::Session::Config::Apis
94 95 96 |
# File 'lib/eco/api/session/config.rb', line 94 def apis self['apis'] ||= Eco::API::Session::Config::Apis.new(config: self) end |
#apis? ⇒ Boolean
Returns true if there is any api configuration defined, false otherwise.
99 100 101 |
# File 'lib/eco/api/session/config.rb', line 99 def apis? apis.apis? end |
#batch_policies(&block) ⇒ Eco::API::Session::Batch::Policies
468 469 470 471 472 473 474 475 476 477 |
# File 'lib/eco/api/session/config.rb', line 468 def batch_policies(&block) @batch_policies = self['batch_policies'] ||= Eco::API::Session::Batch::Policies.new('batch_policy') if block_given? @batch_policies.evaluate(@batch_policies, &block) self else @batch_policies end end |
#clone(name) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/eco/api/session/config.rb', line 15 def clone(name) keys.each_with_object(self.class.new(name)) do |key, cnf| cnf[key] = self[key].clone(config: cnf) rescue ArgumentError cnf[key] = self[key].clone end end |
#default_login_method=(name) ⇒ Object
Set the default login method that users should acquire.
425 426 427 |
# File 'lib/eco/api/session/config.rb', line 425 def default_login_method=(name) people.default_login_method = name end |
#default_schema=(name) ⇒ Object
Set the default schema this api org configuration should work on.
420 421 422 |
# File 'lib/eco/api/session/config.rb', line 420 def default_schema=(name) people.default_schema = name end |
#default_usergroup=(value) ⇒ Object
Define the default usergroup that should be given to people with no usergroups.
395 396 397 |
# File 'lib/eco/api/session/config.rb', line 395 def default_usergroup=(value) people.default_usergroup = value end |
#delay_between_job_groups(seconds = nil) ⇒ nil, Interger
Returns seconds between job groups.
506 507 508 509 |
# File 'lib/eco/api/session/config.rb', line 506 def delay_between_job_groups(seconds = nil) self['delay_between_job_groups'] = seconds if seconds self['delay_between_job_groups'] end |
#delay_between_jobs(seconds = nil) ⇒ nil, Interger
Returns seconds between jobs.
500 501 502 503 |
# File 'lib/eco/api/session/config.rb', line 500 def delay_between_jobs(seconds = nil) self['delay_between_jobs'] = seconds if seconds self['delay_between_jobs'] end |
#discarded_people_file=(value) ⇒ Object
Specify the file that holds the csv with people to be excluded from API updates.
400 401 402 |
# File 'lib/eco/api/session/config.rb', line 400 def discarded_people_file=(value) people.discarded_file = value end |
#dry_run! ⇒ Object
old helper to fix the dry-run mode
this is now done via options[:dry_run], parsed as an option
178 179 180 |
# File 'lib/eco/api/session/config.rb', line 178 def dry_run! self['dry-run'] = true end |
#dry_run? ⇒ Boolean
old helper to check if we are in dry-run mode
this is now done via options[:dry_run], which is parsed as an option
184 185 186 |
# File 'lib/eco/api/session/config.rb', line 184 def dry_run? self['dry-run'] end |
#error_handlers ⇒ Eco::API::Error::Handlers
480 481 482 483 484 485 486 487 488 |
# File 'lib/eco/api/session/config.rb', line 480 def error_handlers @error_handlers = self['error_handlers'] ||= Eco::API::Error::Handlers.new if block_given? yield(@error_handlers) self else @error_handlers end end |
#file_manager ⇒ Object
223 224 225 |
# File 'lib/eco/api/session/config.rb', line 223 def file_manager Eco::API::Common::Session::FileManager.new(self) end |
#file_timestamp_pattern=(pattern) ⇒ Object
219 220 221 |
# File 'lib/eco/api/session/config.rb', line 219 def (pattern) files. = pattern end |
#files ⇒ Eco::API::Session::Config::Files
192 193 194 |
# File 'lib/eco/api/session/config.rb', line 192 def files self['files'] ||= Eco::API::Session::Config::Files.new(config: self) end |
#live_tree(id: nil, **kargs, &block) ⇒ Eco::API::Organization::TagTree
it requires graphql connection configuration parameters
It obtains the first of the live tagtree in the org
353 354 355 |
# File 'lib/eco/api/session/config.rb', line 353 def live_tree(id: nil, **kargs, &block) tagtree_config.live_tree(id: id, **kargs, &block) end |
#live_trees(**kargs, &block) ⇒ Array<Eco::API::Organization::TagTree>
Retrieves all the location structures of the organisation
360 361 362 |
# File 'lib/eco/api/session/config.rb', line 360 def live_trees(**kargs, &block) tagtree_config.live_trees(**kargs, &block) end |
#location_codes ⇒ Object Also known as: locations_map_file
252 253 254 |
# File 'lib/eco/api/session/config.rb', line 252 def location_codes org['location_codes'] end |
#location_codes=(file) ⇒ Object
248 249 250 |
# File 'lib/eco/api/session/config.rb', line 248 def location_codes=(file) org['location_codes'] = file end |
#locations_mapper(valid_internal_values: :no_validation, **kargs) ⇒ Eco::Data::Mapper, NilClass
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 |
# File 'lib/eco/api/session/config.rb', line 267 def locations_mapper( valid_internal_values: :no_validation, **kargs ) kargs = { internal: :first, insensitive: true, maps_file: nil }.merge(kargs) kargs[:maps_file] ||= locations_map_file kargs[:maps_file] = file_manager.newest(kargs[:maps_file]) return unless kargs[:maps_file] @locations_mapper ||= {} return @locations_mapper[kargs] if @locations_mapper.key?(kargs) @locations_mapper[kargs] = Eco::Data::Mapper.new( file_manager.load_json(kargs[:maps_file]), internal: kargs[:internal], insensitive: kargs[:insensitive] ).tap do |mapper| next unless valid_internal_values.is_a?(Array) valid_internal_values = valid_internal_values.compact valid_internal_values = valid_internal_values.map(&:upcase) if kargs[:insensitive] unexpected = mapper.list(:internal).each_with_object([]) do |value, out| out << value unless valid_internal_values.include?(value.upcase) end next unless unexpected.any? unexpected = unexpected.uniq.sort.map do |internal| "#{internal} (mapped from '#{mapper.to_external(internal)}')" end session.log(:warn) { msg = "The location mappings file has mappings to " msg << "non active or unknown location node IDs:" msg << "\n * " msg << unexpected.join("\n * ") msg } end end |
#log_connection=(value) ⇒ Object
80 81 82 |
# File 'lib/eco/api/session/config.rb', line 80 def log_connection=(value) logger.log_connection = value end |
#log_console_level=(value) ⇒ Object
64 65 66 |
# File 'lib/eco/api/session/config.rb', line 64 def log_console_level=(value) logger.console_level= value end |
#log_file=(file) ⇒ Object
72 73 74 |
# File 'lib/eco/api/session/config.rb', line 72 def log_file=(file) logger.file = file end |
#log_file_level=(value) ⇒ Object
68 69 70 |
# File 'lib/eco/api/session/config.rb', line 68 def log_file_level=(value) logger.file_level = value end |
#logger ⇒ Eco::API::Session::Config::Logger
this is the configuration of the logger. Not the logger itself.
60 61 62 |
# File 'lib/eco/api/session/config.rb', line 60 def logger self['logger'] ||= Eco::API::Session::Config::Logger.new(config: self) end |
#login_providers ⇒ Eco::API::Organization::LoginProviders
379 380 381 382 383 |
# File 'lib/eco/api/session/config.rb', line 379 def login_providers return @login_providers if instance_variable_defined?(:@login_providers) provs = api&.login_providers.to_a @login_providers = Eco::API::Organization::LoginProviders.new(provs) end |
#mailer ⇒ Eco::API::Session::Config::Mailer
Helper to send emails.
44 45 46 |
# File 'lib/eco/api/session/config.rb', line 44 def mailer self['mailer'] ||= Eco::API::Session::Config::Mailer.new(config: self) end |
#node_classifications(active: true) ⇒ Eco::API::Organization::NodeClassifications
The location node classifications of the organization
327 328 329 |
# File 'lib/eco/api/session/config.rb', line 327 def node_classifications(active: true) tagtree_config.node_classifications(active: active) end |
#org ⇒ Object
244 245 246 |
# File 'lib/eco/api/session/config.rb', line 244 def org self['org'] end |
#people ⇒ Eco::API::Session::Config::People
390 391 392 |
# File 'lib/eco/api/session/config.rb', line 390 def people self['people'] ||= Eco::API::Session::Config::People.new(config: self) end |
#people_cache=(file) ⇒ Object
Set the base folder/name.ext name of the fieles where people will be cached.
405 406 407 |
# File 'lib/eco/api/session/config.rb', line 405 def people_cache=(file) people.cache = file end |
#person_fields_mapper=(file) ⇒ Object
Specify the .json file name with the mappings [DataInputColumnName, internal-name].
415 416 417 |
# File 'lib/eco/api/session/config.rb', line 415 def person_fields_mapper=(file) people.fields_mapper = file end |
#person_parser(format: :csv, &block) ⇒ Eco::API::Common::People::PersonParser
Returns parser/serializer for the defined format.
432 433 434 |
# File 'lib/eco/api/session/config.rb', line 432 def person_parser(format: :csv, &block) people.parser(format: format, &block) end |
#policies ⇒ Eco::API::Policies
456 457 458 459 460 461 462 463 464 465 |
# File 'lib/eco/api/session/config.rb', line 456 def policies @policies = self['policies'] ||= Eco::API::Policies.new if block_given? yield(@policies) self else @policies end end |
#policy_groups ⇒ Eco::API::Organization::PolicyGroups
365 366 367 368 369 |
# File 'lib/eco/api/session/config.rb', line 365 def policy_groups return @policy_groups if instance_variable_defined?(:@policy_groups) pgs = api&.policy_groups.to_a @policy_groups = Eco::API::Organization::PolicyGroups.new(pgs) end |
#post_launch ⇒ Eco::API::Session::Config::PostLaunch
451 452 453 |
# File 'lib/eco/api/session/config.rb', line 451 def post_launch self['post_launch'] ||= Eco::API::Session::Config::PostLaunch.new(config: self) end |
#reopen {|_self| ... } ⇒ Object
23 24 25 |
# File 'lib/eco/api/session/config.rb', line 23 def reopen yield(self) end |
#requests_backup_folder=(folder) ⇒ Object
Set the base folder name where requests launched to the server will be saved for future reference.
410 411 412 |
# File 'lib/eco/api/session/config.rb', line 410 def requests_backup_folder=(folder) people.requests_folder = folder end |
#require(file = nil, match: nil) ⇒ Object
227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/eco/api/session/config.rb', line 227 def require(file = nil, match: nil) if match file_manager.dir.dir_files(pattern: match).each do |filename| require_relative File.(filename) end else target = File.(file_manager.dir.file(file)) require_relative target end rescue LoadError => err raise unless apis.active_api.one_off? pp err.to_s end |
#run_mode=(mode) ⇒ Object
Sets the mode of the active api
164 165 166 |
# File 'lib/eco/api/session/config.rb', line 164 def run_mode=(mode) apis.active_api.mode = mode end |
#run_mode_local? ⇒ Boolean
168 169 170 |
# File 'lib/eco/api/session/config.rb', line 168 def run_mode_local? apis.active_api.local? end |
#run_mode_remote? ⇒ Boolean
172 173 174 |
# File 'lib/eco/api/session/config.rb', line 172 def run_mode_remote? apis.active_api.remote? end |
#s3storage ⇒ Eco::API::Session::Config::S3Storage
Helper to upload files and folders to S3.
38 39 40 |
# File 'lib/eco/api/session/config.rb', line 38 def s3storage self['s3_storage'] ||= Eco::API::Session::Config::S3Storage.new(config: self) end |
#schemas ⇒ Object
Returns pEco::API::Organization::PersonSchemas.
372 373 374 375 376 |
# File 'lib/eco/api/session/config.rb', line 372 def schemas return @schemas if instance_variable_defined?(:@schemas) schs = api&.person_schemas.to_a @schemas = Eco::API::Organization::PersonSchemas.new(schs) end |
#session ⇒ Eco::API::Session
this is where session is created.
Returns the session linked to this config.
89 90 91 |
# File 'lib/eco/api/session/config.rb', line 89 def session @session ||= Eco::API::Session.new(self) end |
#sftp ⇒ Eco::API::Session::Config::SFTP
Helper to manage SFTP files and folders.
32 33 34 |
# File 'lib/eco/api/session/config.rb', line 32 def sftp self['sftp'] ||= Eco::API::Session::Config::SFTP.new(config: self) end |
#tagtree(include_archived: false, recache: false, raise_on_missing: true) ⇒ Eco::API::Organization::TagTree
it does NOT include archived nodes by default.
- This is for legacy (most usecases don't)
It uses the tagtree.json file and in its absence, if graphql enabled, the largest life_tagtree
337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'lib/eco/api/session/config.rb', line 337 def tagtree( include_archived: false, recache: false, raise_on_missing: true ) kargs = { recache: recache, include_archived: include_archived, raise_on_missing: raise_on_missing } @tagtree ||= tagtree_config.scope_tree(**kargs) end |
#tagtree=(file) ⇒ Object
316 317 318 |
# File 'lib/eco/api/session/config.rb', line 316 def tagtree=(file) tagtree_config.file = file end |
#tagtree_config ⇒ Eco::API::Session::Config::TagTree
Helper scope reporting structures.
50 51 52 |
# File 'lib/eco/api/session/config.rb', line 50 def tagtree_config org['tagtree_config'] ||= Eco::API::Session::Config::TagTree.new(config: self) end |
#tagtree_id=(value) ⇒ Object Also known as: structure_id=
320 321 322 |
# File 'lib/eco/api/session/config.rb', line 320 def tagtree_id=(value) tagtree_config.structure_id = value end |
#timestamp_console=(value) ⇒ Object
76 77 78 |
# File 'lib/eco/api/session/config.rb', line 76 def (value) logger. = value end |
#usecases ⇒ Eco::API::UseCases
440 441 442 443 444 445 446 447 448 |
# File 'lib/eco/api/session/config.rb', line 440 def usecases @usecases = self['usecases'] ||= Eco::API::UseCases.new if block_given? yield(@usecases) self else @usecases end end |
#workflow ⇒ Eco::API::Session::Config::Workflow
491 492 493 494 495 496 497 |
# File 'lib/eco/api/session/config.rb', line 491 def workflow @workflow = self['workflow'] ||= Eco::API::Session::Config::Workflow.new(config: self) @workflow.tap do |wf| yield(wf) if block_given? end end |
#working_directory(mode: nil) ⇒ Object
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/eco/api/session/config.rb', line 201 def working_directory(mode: nil) return files.working_directory if apis.active_api&.one_off? unless mode wd = files.working_directory return wd unless wd.to_s.strip.empty? end mode ||= :active_api if mode == :active_api apis.active_root_name elsif mode == :raw_api_name apis.active_name else files.working_directory end end |
#working_directory=(path) ⇒ Object
Defines in the base folder from where files are expected to be found when relative paths are used
197 198 199 |
# File 'lib/eco/api/session/config.rb', line 197 def working_directory=(path) files.working_directory = path end |