eco-helpers 0.6.2 → 0.6.3
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/lib/eco/api/common/session/environment.rb +2 -2
- data/lib/eco/api/common/session/mailer.rb +0 -1
- data/lib/eco/api/organization/policy_groups.rb +23 -1
- data/lib/eco/api/organization/tag_tree.rb +2 -2
- data/lib/eco/api/session/batch.rb +3 -2
- data/lib/eco/api/session/batch_job.rb +7 -7
- data/lib/eco/api/session/batch_status.rb +0 -4
- data/lib/eco/api/session/job_group.rb +58 -0
- data/lib/eco/api/session/{batch_jobs.rb → job_groups.rb} +0 -53
- data/lib/eco/api/session/task.rb +1 -1
- data/lib/eco/api/session.rb +2 -1
- data/lib/eco/api/session_config/apis.rb +14 -3
- data/lib/eco/api/session_config/people.rb +1 -2
- data/lib/eco/api/session_config/use_cases.rb +2 -2
- data/lib/eco/version.rb +1 -1
- data/lib/eco-helpers.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad5941e8792705047cf6dbd46515023c9bda2285
|
4
|
+
data.tar.gz: b1b3ef9fa046781f791170f2a4e872ef79862efe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b05481b93f00fe18b0d8721ec2c1e11e25e85bda934042458e948217bb8e52a5efe2ae53464525bd95baffcb003f749361653bb0273edd8ae4ea80ea6b4a1c64
|
7
|
+
data.tar.gz: e26cc0b7607a2c7197c1e528a914ca9ea2414688205d21421c582d81317a54c6cc76c454646d88b865f287ebe389bd44e85cf0929b09036e8859183bc5856add
|
@@ -15,11 +15,11 @@ module Eco
|
|
15
15
|
def initialize(init = {})
|
16
16
|
init = init.conf if init.is_a?(Environment)
|
17
17
|
msg = "Wrong Session::Environment initializer. Expected Hash or Environment object. Given: #{init}"
|
18
|
-
raise msg unless init.is_a?(SessionConfig)
|
18
|
+
raise msg unless init.is_a?(Eco::API::SessionConfig)
|
19
19
|
|
20
20
|
@config = init
|
21
21
|
@file_manager = Eco::API::Common::Session::FileManager.new(enviro: self)
|
22
|
-
@logger
|
22
|
+
@logger = Eco::API::Common::Session::Logger.new(enviro: self)
|
23
23
|
new_api
|
24
24
|
end
|
25
25
|
|
@@ -15,7 +15,14 @@ module Eco
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_id(name)
|
18
|
-
|
18
|
+
case name
|
19
|
+
when Array
|
20
|
+
name.map do |n|
|
21
|
+
policy_group(n)&.id
|
22
|
+
end.compact
|
23
|
+
else
|
24
|
+
policy_group(name)&.id
|
25
|
+
end
|
19
26
|
end
|
20
27
|
|
21
28
|
def to_name(id)
|
@@ -26,6 +33,21 @@ module Eco
|
|
26
33
|
@by_id.fetch(policy_group_id(id_name), nil)
|
27
34
|
end
|
28
35
|
|
36
|
+
def user_pg_ids(initial: [], final: [], non_custom: [], preserve_custom: true)
|
37
|
+
non_custom = to_id([non_custom].flatten.compact)
|
38
|
+
initial = to_id([initial].flatten.compact)
|
39
|
+
final = to_id([final].flatten.compact)
|
40
|
+
unless initial.is_a?(Array) && final.is_a?(Array) && non_custom.is_a?(Array)
|
41
|
+
raise "Expected Array for :initial, :final and :custom"
|
42
|
+
end
|
43
|
+
|
44
|
+
initial_custom = initial - non_custom
|
45
|
+
final = final + initial_custom if preserve_custom
|
46
|
+
new_pg_ids = final - initial
|
47
|
+
# keep same order as they where
|
48
|
+
(initial & final) + new_pg_ids
|
49
|
+
end
|
50
|
+
|
29
51
|
private
|
30
52
|
|
31
53
|
def policy_group_name(id_name)
|
@@ -53,8 +53,8 @@ module Eco
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def user_tags(initial: [], final: [], preserve_custom: true, add_custom: false)
|
56
|
-
initial
|
57
|
-
final
|
56
|
+
initial = [initial].flatten.compact
|
57
|
+
final = [final].flatten.compact
|
58
58
|
raise "Expected Array for initial: and final:" unless initial.is_a?(Array) && final.is_a?(Array)
|
59
59
|
final = filter_tags(final) unless add_custom
|
60
60
|
custom = initial - filter_tags(initial)
|
@@ -101,10 +101,11 @@ module Eco
|
|
101
101
|
params = {per_page: DEFAULT_BATCH_BLOCK}.merge(params)
|
102
102
|
per_page = params.fetch(:per_page)
|
103
103
|
|
104
|
-
iteration
|
104
|
+
iteration = 1; done = 0
|
105
|
+
iterations = (people.length / per_page).ceil
|
105
106
|
|
106
107
|
people.each_slice(per_page) do |slice|
|
107
|
-
msg = "starting batch '#{method}' iteration #{iteration},
|
108
|
+
msg = "starting batch '#{method}' iteration #{iteration}/#{iterations}, with #{slice.length} entries of #{people.length} -- #{done} done"
|
108
109
|
logger.info(msg)
|
109
110
|
|
110
111
|
people_api.batch do |batch|
|
@@ -9,8 +9,8 @@ module Eco
|
|
9
9
|
|
10
10
|
def initialize(name, type:, sets:, root:)
|
11
11
|
raise "A name is required to refer a job. Given: #{name}" if !name
|
12
|
-
raise "Type should be one of #{TYPES}. Given: #{type}"
|
13
|
-
raise "Sets should be some of #{SETS}. Given: #{sets}"
|
12
|
+
raise "Type should be one of #{TYPES}. Given: #{type}" if !BatchJob.valid_type?(type)
|
13
|
+
raise "Sets should be some of #{SETS}. Given: #{sets}" if !BatchJob.valid_sets?(sets)
|
14
14
|
super(root.enviro)
|
15
15
|
|
16
16
|
@name = name
|
@@ -39,10 +39,10 @@ module Eco
|
|
39
39
|
@queue.length > 0
|
40
40
|
end
|
41
41
|
|
42
|
-
def add(
|
43
|
-
unless !
|
44
|
-
@queue.push(
|
45
|
-
@callbacks[
|
42
|
+
def add(entry)
|
43
|
+
unless !entry
|
44
|
+
@queue.push(entry)
|
45
|
+
@callbacks[entry] = Proc.new if block_given?
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -70,7 +70,7 @@ module Eco
|
|
70
70
|
@status.root = self
|
71
71
|
end
|
72
72
|
|
73
|
-
logger.info("Simulate: this would have launched: '#{@type.to_s}'") if simulate
|
73
|
+
logger.info("Simulate: this would have launched: '#{@type.to_s}'") if simulate
|
74
74
|
return @status
|
75
75
|
end
|
76
76
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Eco
|
2
|
+
module API
|
3
|
+
class Session
|
4
|
+
class BatchJobs < API::Common::Session::BaseSession
|
5
|
+
attr_reader :name, :session
|
6
|
+
|
7
|
+
def initialize(name, session:)
|
8
|
+
raise("BatchJobs requires a session object") unless session.is_a?(API::Session)
|
9
|
+
super(session.enviro)
|
10
|
+
@session = session
|
11
|
+
@name = name
|
12
|
+
reset
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset
|
16
|
+
@jobs = {}
|
17
|
+
@callbacks = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def [](name)
|
21
|
+
@jobs[name]
|
22
|
+
end
|
23
|
+
|
24
|
+
def exists?(name)
|
25
|
+
@jobs.key?(name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def new(name, type:, sets:)
|
29
|
+
raise("Can't create job named '#{name}' because it already exists.") if exists?(name)
|
30
|
+
|
31
|
+
job = BatchJob.new(name, type: type, sets: sets, root: self)
|
32
|
+
@jobs[name] = job
|
33
|
+
@callbacks[job] = Proc.new if block_given?
|
34
|
+
|
35
|
+
job
|
36
|
+
end
|
37
|
+
|
38
|
+
def pending?
|
39
|
+
@jobs.keys.any? do |key|
|
40
|
+
@jobs[key].pending?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def launch(simulate: false)
|
45
|
+
group_status = {}
|
46
|
+
@jobs.each do |name, job|
|
47
|
+
group_status[job] = job_status = job.launch(simulate: simulate)
|
48
|
+
callback = @callbacks[job]
|
49
|
+
callback.call(job, job_status) if callback
|
50
|
+
end
|
51
|
+
|
52
|
+
return group_status
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -73,59 +73,6 @@ module Eco
|
|
73
73
|
end
|
74
74
|
|
75
75
|
end
|
76
|
-
|
77
|
-
class BatchJobs < API::Common::Session::BaseSession
|
78
|
-
attr_reader :name, :session
|
79
|
-
|
80
|
-
def initialize(name, session:)
|
81
|
-
raise("BatchJobs requires a session object") unless session.is_a?(API::Session)
|
82
|
-
super(session.enviro)
|
83
|
-
@session = session
|
84
|
-
@name = name
|
85
|
-
reset
|
86
|
-
end
|
87
|
-
|
88
|
-
def reset
|
89
|
-
@jobs = {}
|
90
|
-
@callbacks = {}
|
91
|
-
end
|
92
|
-
|
93
|
-
def [](name)
|
94
|
-
@jobs[name]
|
95
|
-
end
|
96
|
-
|
97
|
-
def exists?(name)
|
98
|
-
@jobs.key?(name)
|
99
|
-
end
|
100
|
-
|
101
|
-
def new(name, type:, sets:)
|
102
|
-
raise("Can't create job named '#{name}' because it already exists.") if exists?(name)
|
103
|
-
|
104
|
-
job = BatchJob.new(name, type: type, sets: sets, root: self)
|
105
|
-
@jobs[name] = job
|
106
|
-
@callbacks[job] = Proc.new if block_given?
|
107
|
-
|
108
|
-
job
|
109
|
-
end
|
110
|
-
|
111
|
-
def pending?
|
112
|
-
@jobs.keys.any? do |key|
|
113
|
-
@jobs[key].pending?
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def launch(simulate: false)
|
118
|
-
group_status = {}
|
119
|
-
@jobs.each do |name, job|
|
120
|
-
group_status[job] = job_status = job.launch(simulate: simulate)
|
121
|
-
callback = @callbacks[job]
|
122
|
-
callback.call(job, job_status) if callback
|
123
|
-
end
|
124
|
-
|
125
|
-
return group_status
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
76
|
end
|
130
77
|
end
|
131
78
|
end
|
data/lib/eco/api/session/task.rb
CHANGED
@@ -23,7 +23,7 @@ module Eco
|
|
23
23
|
people = batch.get_people
|
24
24
|
file = file_manager.save_json(people, filename, :timestamp)
|
25
25
|
logger.info("#{people.length} people loaded and saved locally to #{file}.")
|
26
|
-
API::Organization::People.new(people)
|
26
|
+
Eco::API::Organization::People.new(people)
|
27
27
|
end
|
28
28
|
|
29
29
|
def load_people(filename = enviro.config.people.cache, modifier: [:newest, :api])
|
data/lib/eco/api/session.rb
CHANGED
@@ -178,4 +178,5 @@ require_relative 'session/batch'
|
|
178
178
|
require_relative 'session/batch_status'
|
179
179
|
require_relative 'session/task'
|
180
180
|
require_relative 'session/batch_job'
|
181
|
-
require_relative 'session/
|
181
|
+
require_relative 'session/job_group'
|
182
|
+
require_relative 'session/job_groups'
|
@@ -10,7 +10,6 @@ module Eco
|
|
10
10
|
|
11
11
|
def apis
|
12
12
|
self["apis"] ||= {}
|
13
|
-
self["apis"]
|
14
13
|
end
|
15
14
|
|
16
15
|
def apis?
|
@@ -58,12 +57,20 @@ module Eco
|
|
58
57
|
self["active-api"]
|
59
58
|
end
|
60
59
|
|
61
|
-
def
|
60
|
+
def service_up?
|
61
|
+
api_klass = (active_api.version == :external)? Ecoportal::API::External : Ecoportal::API::Internal
|
62
|
+
@api_test ||= api_klass.new("foobar", host: active_api.host, logger: ::Logger.new(IO::NULL))
|
63
|
+
status = @api_test.client.get("/policy_groups").status
|
64
|
+
# 401 Unauthorized "Permission denied. API key may be invalid."
|
65
|
+
status == 401
|
66
|
+
end
|
67
|
+
|
68
|
+
def api(logger = ::Logger.new(IO::NULL), force_new: false)
|
62
69
|
key = active_api.key
|
63
70
|
host = active_api.host
|
64
71
|
mode = active_api.mode
|
65
72
|
version = active_api.version
|
66
|
-
return @api if @api && key == @key && host == @host && @mode == mode && version == @version
|
73
|
+
return @api if (!force_new) && @api && key == @key && host == @host && @mode == mode && version == @version
|
67
74
|
|
68
75
|
api_klass = (version == :external)? Ecoportal::API::External : Ecoportal::API::Internal
|
69
76
|
|
@@ -72,6 +79,10 @@ module Eco
|
|
72
79
|
@api
|
73
80
|
end
|
74
81
|
|
82
|
+
def new_api(logger = ::Logger.new(IO::NULL))
|
83
|
+
api(logger, force_new: true)
|
84
|
+
end
|
85
|
+
|
75
86
|
end
|
76
87
|
end
|
77
88
|
end
|
@@ -73,15 +73,14 @@ module Eco
|
|
73
73
|
# CUSTOM PERSON PARSERS
|
74
74
|
def add_parser(format: :csv)
|
75
75
|
new_parsers = Eco::API::Common::People::PersonParser.new
|
76
|
-
|
77
76
|
yield(new_parsers, config)
|
77
|
+
|
78
78
|
parsers[format] ||= Eco::API::Common::People::PersonParser.new
|
79
79
|
parsers[format] = parsers[format] ? parsers[format].merge(new_parsers) : new_parsers
|
80
80
|
end
|
81
81
|
|
82
82
|
def parsers
|
83
83
|
self["parsers"] ||= {}
|
84
|
-
self["parsers"]
|
85
84
|
end
|
86
85
|
|
87
86
|
def parser(format: :csv)
|
@@ -3,7 +3,7 @@ module Eco
|
|
3
3
|
class SessionConfig
|
4
4
|
class UseCases < Hash
|
5
5
|
attr_reader :config
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(root:)
|
8
8
|
super(nil)
|
9
9
|
@root = root
|
@@ -22,7 +22,7 @@ module Eco
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def use_group
|
25
|
-
self["use_group"]
|
25
|
+
self["use_group"] ||= Eco::API::UseCases::UseGroup.new
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
data/lib/eco/version.rb
CHANGED
data/lib/eco-helpers.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eco-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -223,8 +223,9 @@ files:
|
|
223
223
|
- lib/eco/api/session.rb
|
224
224
|
- lib/eco/api/session/batch.rb
|
225
225
|
- lib/eco/api/session/batch_job.rb
|
226
|
-
- lib/eco/api/session/batch_jobs.rb
|
227
226
|
- lib/eco/api/session/batch_status.rb
|
227
|
+
- lib/eco/api/session/job_group.rb
|
228
|
+
- lib/eco/api/session/job_groups.rb
|
228
229
|
- lib/eco/api/session/task.rb
|
229
230
|
- lib/eco/api/session_config.rb
|
230
231
|
- lib/eco/api/session_config/api.rb
|