gooddata 2.1.17 → 2.1.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +79 -14
- data/CHANGELOG.md +12 -0
- data/Dockerfile.jruby +11 -1
- data/SDK_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/test_projects_cleanup.rb +44 -2
- data/dev-gooddata-sso.pub.encrypted +40 -40
- data/docker-compose.lcm.yml +3 -0
- data/gooddata.gemspec +5 -1
- data/lcm.rake +10 -4
- data/lib/gooddata/lcm/actions/associate_clients.rb +8 -2
- data/lib/gooddata/lcm/actions/provision_clients.rb +31 -10
- data/lib/gooddata/models/domain.rb +3 -1
- data/lib/gooddata/models/metadata/analytical_dashboard.rb +49 -0
- data/lib/gooddata/models/metadata/analytical_visualization_object.rb +30 -0
- data/lib/gooddata/models/metadata/visualization_object.rb +50 -0
- data/lib/gooddata/rest/phmap.rb +1 -1
- data/rubydev_public.gpg.encrypted +51 -51
- data/rubydev_secret_keys.gpg.encrypted +109 -109
- metadata +13 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f00b6b202dc2bcd6af02eda57b326c0ccf222a57683dcf12bacf6b318a212ec7
|
4
|
+
data.tar.gz: a2f73ed25aa53295e06648efaf0961c5eed43fc3f9defae3b5e640a167c948a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac6f6fd25919099b44ecaa302d81dab084de7540b158e35e02bb05b970eb8bba466a77d0eba3403dca66160f8e4c9c2b02603af9a8249afe7a4ebad295f22774
|
7
|
+
data.tar.gz: c075fe2ed8d29d0612f6fc01687c1d0cedc690df830642ebdac369026f7fc3158a07fcfbadd8c079a3574e222713b0cbce60a7b6b189ac3f6b4ba950b877e7b0
|
data/.travis.yml
CHANGED
@@ -73,23 +73,52 @@ jobs:
|
|
73
73
|
|
74
74
|
- name: lcm integration (vcr) tests - e2e
|
75
75
|
stage: before-merge
|
76
|
-
script: bundle exec rspec spec/lcm/integration/lcm_end_to_end_spec.rb
|
76
|
+
script: bundle exec rspec spec/lcm/integration/spec/e2e/lcm_end_to_end_spec.rb
|
77
77
|
env:
|
78
78
|
- VCR_RECORD_MODE=none
|
79
79
|
rvm: 2.3
|
80
80
|
|
81
81
|
# AFTER MERGE
|
82
82
|
# staging 1
|
83
|
-
- &lcm-integration-tests
|
84
|
-
name: staging1 - lcm integration tests
|
83
|
+
- &lcm-integration-e2e-tests
|
84
|
+
name: staging1 - lcm integration-e2e tests
|
85
85
|
stage: after-merge
|
86
86
|
script: |
|
87
87
|
bundle exec rake -f lcm.rake docker:build
|
88
88
|
bundle exec rake -f lcm.rake docker:bundle
|
89
|
-
bundle exec rake -f lcm.rake test:docker:integration
|
89
|
+
bundle exec rake -f lcm.rake test:docker:integration-e2e
|
90
90
|
env:
|
91
91
|
- VCR_ON=false
|
92
92
|
- GD_ENV=staging
|
93
|
+
- GD_MAX_RETRY=2
|
94
|
+
rvm: jruby-9.1.14
|
95
|
+
jdk: openjdk8
|
96
|
+
|
97
|
+
- &lcm-integration-release-tests
|
98
|
+
name: staging1 - lcm integration-release tests
|
99
|
+
stage: after-merge
|
100
|
+
script: |
|
101
|
+
bundle exec rake -f lcm.rake docker:build
|
102
|
+
bundle exec rake -f lcm.rake docker:bundle
|
103
|
+
bundle exec rake -f lcm.rake test:docker:integration-release
|
104
|
+
env:
|
105
|
+
- VCR_ON=false
|
106
|
+
- GD_ENV=staging
|
107
|
+
- GD_MAX_RETRY=2
|
108
|
+
rvm: jruby-9.1.14
|
109
|
+
jdk: openjdk8
|
110
|
+
|
111
|
+
- &lcm-integration-others-tests
|
112
|
+
name: staging1 - lcm integration-others tests
|
113
|
+
stage: after-merge
|
114
|
+
script: |
|
115
|
+
bundle exec rake -f lcm.rake docker:build
|
116
|
+
bundle exec rake -f lcm.rake docker:bundle
|
117
|
+
bundle exec rake -f lcm.rake test:docker:integration-others
|
118
|
+
env:
|
119
|
+
- VCR_ON=false
|
120
|
+
- GD_ENV=staging
|
121
|
+
- GD_MAX_RETRY=2
|
93
122
|
rvm: jruby-9.1.14
|
94
123
|
jdk: openjdk8
|
95
124
|
|
@@ -155,11 +184,26 @@ jobs:
|
|
155
184
|
jdk: openjdk8
|
156
185
|
|
157
186
|
# staging 2
|
158
|
-
- <<: *lcm-integration-tests
|
159
|
-
name: staging2 - lcm integration tests
|
187
|
+
- <<: *lcm-integration-e2e-tests
|
188
|
+
name: staging2 - lcm integration-e2e tests
|
189
|
+
env:
|
190
|
+
- GD_ENV=testing
|
191
|
+
- VCR_ON=false
|
192
|
+
- GD_MAX_RETRY=2
|
193
|
+
|
194
|
+
- <<: *lcm-integration-release-tests
|
195
|
+
name: staging2 - lcm integration-release tests
|
196
|
+
env:
|
197
|
+
- GD_ENV=testing
|
198
|
+
- VCR_ON=false
|
199
|
+
- GD_MAX_RETRY=2
|
200
|
+
|
201
|
+
- <<: *lcm-integration-others-tests
|
202
|
+
name: staging2 - lcm integration-others tests
|
160
203
|
env:
|
161
204
|
- GD_ENV=testing
|
162
205
|
- VCR_ON=false
|
206
|
+
- GD_MAX_RETRY=2
|
163
207
|
|
164
208
|
- <<: *lcm-slow-tests
|
165
209
|
name: staging2 - lcm slow tests
|
@@ -192,11 +236,26 @@ jobs:
|
|
192
236
|
- VCR_ON=false
|
193
237
|
|
194
238
|
# staging 3
|
195
|
-
- <<: *lcm-integration-tests
|
196
|
-
name: staging3 - lcm integration tests
|
239
|
+
- <<: *lcm-integration-e2e-tests
|
240
|
+
name: staging3 - lcm integration-e2e tests
|
241
|
+
env:
|
242
|
+
- GD_ENV=development
|
243
|
+
- VCR_ON=false
|
244
|
+
- GD_MAX_RETRY=2
|
245
|
+
|
246
|
+
- <<: *lcm-integration-release-tests
|
247
|
+
name: staging3 - lcm integration-release tests
|
248
|
+
env:
|
249
|
+
- GD_ENV=development
|
250
|
+
- VCR_ON=false
|
251
|
+
- GD_MAX_RETRY=2
|
252
|
+
|
253
|
+
- <<: *lcm-integration-others-tests
|
254
|
+
name: staging3 - lcm integration-others tests
|
197
255
|
env:
|
198
256
|
- GD_ENV=development
|
199
257
|
- VCR_ON=false
|
258
|
+
- GD_MAX_RETRY=2
|
200
259
|
|
201
260
|
- <<: *lcm-slow-tests
|
202
261
|
name: staging3 - lcm slow tests
|
@@ -234,15 +293,21 @@ jobs:
|
|
234
293
|
stage: after-merge
|
235
294
|
name: staging1 - test environment clean-up
|
236
295
|
script: travis_wait 30 bundle exec ruby bin/test_projects_cleanup.rb -f
|
237
|
-
env:
|
296
|
+
env:
|
297
|
+
- GD_ENV=staging
|
298
|
+
- GD_MAX_RETRY=2
|
238
299
|
|
239
300
|
- <<: *cleanup
|
240
|
-
name:
|
241
|
-
env:
|
301
|
+
name: staging2 - test environment clean-up
|
302
|
+
env:
|
303
|
+
- GD_ENV=testing
|
304
|
+
- GD_MAX_RETRY=2
|
242
305
|
|
243
306
|
- <<: *cleanup
|
244
|
-
name:
|
245
|
-
env:
|
307
|
+
name: staging3 - test environment clean-up
|
308
|
+
env:
|
309
|
+
- GD_ENV=development
|
310
|
+
- GD_MAX_RETRY=2
|
246
311
|
|
247
312
|
# AFTER MERGE UNIT TESTS ON ALTERNATIVE PLATFORM
|
248
313
|
|
@@ -279,7 +344,7 @@ jobs:
|
|
279
344
|
script: bundle exec rake test:unit
|
280
345
|
os: osx
|
281
346
|
rvm: jruby-9.1.14
|
282
|
-
osx_image:
|
347
|
+
osx_image: xcode9.4
|
283
348
|
|
284
349
|
- stage: gem-release
|
285
350
|
name: deploy MRI gem
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
# GoodData Ruby SDK Changelog
|
2
|
+
## 2.1.19
|
3
|
+
- BUGFIX: MSF-20827 Fix gem-smoke-test failed when release ruby SDK
|
4
|
+
- BUGFIX: MSF-20826 Failure update license file when release ruby SDK
|
5
|
+
|
6
|
+
## 2.1.18
|
7
|
+
- BUGFIX: TMA-1700 Failed Provisioning Brick created clients without ETL
|
8
|
+
- FEATURE: BCO-1300 Add model for analytical dashboard and visualization object
|
9
|
+
- FEATURE: MSF-20118 Support PostgreSQL as input for LCM provisioning bricks
|
10
|
+
- BUGFIX: TMA-999 Improve API call statistics log: add grouping on PID for roles
|
11
|
+
- CONFIG: TMA-1714 Ruby SDK travis build is failing
|
12
|
+
- BUGFIX: TMA-707 Provisioning brick does not log client deletion
|
13
|
+
|
2
14
|
## 2.1.17
|
3
15
|
- BUGFIX:TMA-1704 - Enhance error message when not found clientId in source table
|
4
16
|
- BUGFIX: TMA-1694 [UsersBrick] Enhance messages add more log for missing users when running remove_from_organization
|
data/Dockerfile.jruby
CHANGED
@@ -2,7 +2,7 @@ FROM jruby:9.1-alpine
|
|
2
2
|
|
3
3
|
MAINTAINER Tomas Korcak <korczis@gmail.com>
|
4
4
|
|
5
|
-
RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold gnupg libstdc++
|
5
|
+
RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold gnupg libstdc++ postgresql postgresql-client openssl
|
6
6
|
|
7
7
|
# Switch to directory with sources
|
8
8
|
WORKDIR /src
|
@@ -20,3 +20,13 @@ ADD . .
|
|
20
20
|
RUN keytool -importcert -alias gooddata-2008 -file "./data/2008.crt" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
|
21
21
|
RUN keytool -importcert -alias gooddata-int -file "./data/new_ca.cer" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
|
22
22
|
RUN keytool -importcert -alias gooddata-prod -file "data/new_prodgdc_ca.crt" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
|
23
|
+
|
24
|
+
ENV LANG en_US.utf8
|
25
|
+
RUN adduser -D -g '' gooddata
|
26
|
+
RUN rm -rf $HOME/spec/postgresql
|
27
|
+
RUN mkdir $HOME/spec/postgresql
|
28
|
+
RUN chmod -R 0750 $HOME/spec/postgresql
|
29
|
+
RUN chown gooddata $HOME/spec/postgresql
|
30
|
+
RUN mkdir /run/postgresql; chmod 1777 -R /run;
|
31
|
+
RUN mkdir $HOME/pre-exec.d; mkdir $HOME/pre-init.d; chmod -R 1755 $HOME/pre-exec.d; chmod -R 1755 $HOME/pre-exec.d
|
32
|
+
USER gooddata
|
data/SDK_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.19
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.7.
|
1
|
+
3.7.26
|
@@ -22,6 +22,39 @@ require_relative '../spec/environment/environment'
|
|
22
22
|
GoodData::Environment.load
|
23
23
|
config = GoodData::Environment::ConnectionHelper::LCM_ENVIRONMENT
|
24
24
|
secrets = GoodData::Environment::ConnectionHelper::SECRETS
|
25
|
+
default_domain = GoodData::Environment::ConnectionHelper::DEFAULT_DOMAIN
|
26
|
+
|
27
|
+
def delete_segment_by_title(title, segments, days = 14, force = false)
|
28
|
+
return if segments.empty?
|
29
|
+
dead_line = Time.now - days * 60 * 60 * 24
|
30
|
+
|
31
|
+
filtered_segments = segments.select do |s|
|
32
|
+
if s.id.match(title) && s.id.length > 14 && s.id[s.id.length-14..-1]
|
33
|
+
segment_created = s.id[s.id.length-14..-1]
|
34
|
+
created = Time.parse(segment_created) if segment_created
|
35
|
+
|
36
|
+
s if created.year >= Time.new.year && created < dead_line
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
filtered_segments.each do |segment|
|
41
|
+
begin
|
42
|
+
if force
|
43
|
+
segment.clients.each do |segment_client|
|
44
|
+
GoodData.logger.info("Deleting segment: #{segment.id} - client: #{segment_client.client_id}")
|
45
|
+
segment_client.dissociate
|
46
|
+
end
|
47
|
+
|
48
|
+
puts "Deleting segment: #{segment.id}"
|
49
|
+
segment && segment.delete(force: true)
|
50
|
+
else
|
51
|
+
puts "Would delete segment: #{segment.id}"
|
52
|
+
end
|
53
|
+
rescue RuntimeError, StandardError => ex
|
54
|
+
puts "Failed to delete segment #{segment.id}, reason: #{ex}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
25
58
|
|
26
59
|
def delete_project_by_title(title, projects, days = 14, force = false)
|
27
60
|
dead_line = Time.now - days * 60 * 60 * 24
|
@@ -73,8 +106,16 @@ def delete_ads_by_title(title, client, days = 14, force = false)
|
|
73
106
|
puts "#{deleted} ADS instances with title \"#{title}\" #{'would be ' unless force}deleted."
|
74
107
|
end
|
75
108
|
|
76
|
-
def clean_up!(client, force, days)
|
109
|
+
def clean_up!(client, force, days, opts = {})
|
77
110
|
projects = client.projects
|
111
|
+
|
112
|
+
if opts[:domain_id]
|
113
|
+
domain = client.domain(opts[:domain_id])
|
114
|
+
|
115
|
+
# segments id format: {title}_{hostname}_{datetime}
|
116
|
+
delete_segment_by_title(/CAR_DEMO_PREMIUM/, domain.segments, days, force)
|
117
|
+
end
|
118
|
+
|
78
119
|
delete_project_by_title(/Insurance Demo Master/, projects, days, force)
|
79
120
|
delete_project_by_title(/Car Demo Master/, projects, days, force)
|
80
121
|
delete_project_by_title(/Insurance Demo Workspace/, projects, days, force)
|
@@ -117,7 +158,8 @@ prod_client = init_client(username, password, "https://#{config[:prod_server]}")
|
|
117
158
|
|
118
159
|
force = options[:force]
|
119
160
|
days = options[:days] || 3
|
161
|
+
|
120
162
|
clean_up!(dev_client, force, days)
|
121
|
-
clean_up!(prod_client, force, days)
|
163
|
+
clean_up!(prod_client, force, days, {domain_id: default_domain})
|
122
164
|
|
123
165
|
dev_client.disconnect
|
@@ -1,40 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
1
|
+
SRNgp8VSJ8HqV2LnLD3kYkMO39u9rn3ssPvJHQuNHnPUDcc/FkCh529uTiqq
|
2
|
+
ON9+j5fFTjsKHr437hwnUCAq5Nn3ANSAhOSXehi3wqxicQrUU2xgbQbI+hk7
|
3
|
+
mLWrLOsm9Cn19kz9yblDh4aHTQBydJ6JwdPVnd6igIDnfLMVVVpzWK08aFfc
|
4
|
+
Y5KAeyIlLn5RQPQJL85LhVTOEG871z8wCAigeGaP2vnLzBj/9GQdwdDTsQzL
|
5
|
+
k1Rz2K3tL9SoUIVZ56dr1U11MYXduRzYJMawk21t9B7yNeKyuZCXx9U8VxAr
|
6
|
+
dqecLJoBAQI2ppPikJS3ycna/lRYD0OsGv6B7AR8sAkAB0XjpJZ9nNJys/PK
|
7
|
+
bBnmmKq+hvDu9zsIba8ptz0L3F5bi+Cfa+5c/Hyj7Jm3xiq5IWyh5LmtTmOI
|
8
|
+
MQa/fUPlerGe+7VZYlIm17fjd99cgqRM8yII/bTMvAEQREu1UxEwC4JFe9Bz
|
9
|
+
eFHeg6EorQJyBBV+LCDk86WS5RJBhBoTVj/LOm3BIUVr7Xee7naJxuRpQjgl
|
10
|
+
iTft/IfVhiwEPPonasXRjD1XwPKXUz8rX1C5JWDreOQB4hCPcNm29y/dV7Z4
|
11
|
+
7hv4ki9YgIhhmc/sNqvSE7JO2w5dvyKo05mYQj1CQUdvqpbge68J8cV84wp5
|
12
|
+
Lj3jHRXyDf/2x0IdpJTACGUy4R8XQUYpLDAfbtmgTuHu8HndxVb3O+rpwk+K
|
13
|
+
ipXb0mj4YQvc2SbCJ58HryX9i9ZfzW1/PwNtHHw4q5+BhNVvRaqJ61aIS5LP
|
14
|
+
DzjqlJ4OtpZfNjgmwgk9pfDRmYS8MOld8lNfhIh9WjyuLAW+MiaMZy8o6hTS
|
15
|
+
5vI65QGpD7HbgKQ4tX8LXAPVB8/rF0ReRcb1wiWydeP1eh4Dz6vXvYaJ0Jju
|
16
|
+
Q0/yCzbXyGFqv4P6FcOkVAyWhtF2kH/H114DxLq759r3Hoh+IMZutWlWFWhA
|
17
|
+
qslFPWN4P9R0kPO2KeiRsLOvBplQIANExar26dRg8hFHx0y3aT3CB7sa9bYw
|
18
|
+
DE7t2gVdMEU765f+bZhZQ2M6N2GKQv/UtXUT8xJ9skxFf1aVLDNwFh+3xs1d
|
19
|
+
f2WosiqrQ/bsagdZVmuDob9qREdbRP+EF4toWFJyL4wAhTUht1jJFogIkHBl
|
20
|
+
GtuT9c/CDQ4je4gANU0vyNf0XmlwYnZ6oQfMl7XBmYeEtXBA5uQAWeFcy6vL
|
21
|
+
zqfzwksASCo9LdUqfctD3gjMsm2J+IdAh99OxRcfHvnbV6xL9m+4Ng0GJppJ
|
22
|
+
t+w42XqznLRXLTS9RcFD2GFm7mNZziDT2Mb9L4e6Bjy5SoqCftiCbDzGJyka
|
23
|
+
BHK/4+l1MsS+J4Qr4qGFF9+HVTP/EF8InQwQECaujyzsrfX8Wn4GuSX4ZdMt
|
24
|
+
F0kakkN8A+9LpmFlb8oi4bsmzFTo1tQPRJwann/5TO0jm+Vt6ETmepE0EZ1K
|
25
|
+
SIXfQT+a9laF/UJ3bGGxLXIRp3g/ICz0ofBDeSHOCjOVhXVfKnRs/2KpPPex
|
26
|
+
yPKLTUdIAtOsKTEtF9JF97C7D/JzxHbssTCj6518BHGxBepn0HZUpeGOlClj
|
27
|
+
HiKh8PGKtP0tix1NI/tmhSHCdoi6L/XEryU2pm87qKrlKJU/6z5w7rtpCxto
|
28
|
+
X5ztrFk91a3VPEzGRmh7Hw5oNzCi5jmSzZeVgIXxEkVfdUrGAi7ZmJtgEUz5
|
29
|
+
1BJYd2MSBlqHGHF1iIQoqtyklLuqOJR1GvS1/OxQXpXXcVTy47fzlNuKuYkg
|
30
|
+
7beiD5H0Sz/d6J4YNgaJnde+FscHuwOfjzH6uOGQMa6A1NEBW5J1TrAPiVh9
|
31
|
+
nm7pPtDg41dScUp3JqeMRA1Akm5wyGna8yocb3CwvSBEy7KrW/8mUR/TpLao
|
32
|
+
f9HuWE8UNPjqUl6nTzVpZ2TJFM4ffZbX3NsjS+wsZFtyRAD4z0bBKveUTm19
|
33
|
+
pMTBvNljgvGlS6mzYZybPh00l3kiRU9z4Xf7Y1KQH4oSxTpwmgmqiESD0Xv8
|
34
|
+
ZmJCU/4VAxbzHwogyeaQvX4pAeC2C1lqgwYdAh6lO7OwgAhkGg3p41V1j6BA
|
35
|
+
aOcqaHk+zKpP3pL3jzAZdLvL49y430UXDNN3M6nSafFzSMrPWPjGNyIXVx68
|
36
|
+
uDNKCSIcgwAGPtossk0qRKygoQUlKdKull+gOjP/bSIoENKE4rz8RdCsG5qA
|
37
|
+
5T7/iJflhrWGlXfI0MgIe7Lpl41jQ769rI6tSuHu9EsMFOW6/W55IsUR2+p7
|
38
|
+
RxClPslQd3tR/TSZvOM5onHK8sM/Lk+rG9BTi0h0ghwVYEiTXPSKPw70z3WY
|
39
|
+
1YlVQS9RSr0AVn9O/Esju2XFtkcE4spXgqiQx0Wx3Y9+21UryNu1amI8rzIH
|
40
|
+
N/WeNcE=
|
data/docker-compose.lcm.yml
CHANGED
data/gooddata.gemspec
CHANGED
@@ -61,7 +61,11 @@ Gem::Specification.new do |s|
|
|
61
61
|
end
|
62
62
|
|
63
63
|
s.add_dependency 'aws-sdk-s3', '~> 1.16'
|
64
|
-
|
64
|
+
if RUBY_VERSION >= '2.5'
|
65
|
+
s.add_dependency 'docile', '~> 1.1'
|
66
|
+
else
|
67
|
+
s.add_dependency 'docile', '> 1.1', '< 1.4.0'
|
68
|
+
end
|
65
69
|
s.add_dependency 'gli', '~> 2.15'
|
66
70
|
s.add_dependency 'gooddata_datawarehouse', '~> 0.0.10' if RUBY_PLATFORM == 'java'
|
67
71
|
s.add_dependency 'highline', '= 2.0.0.pre.develop.14'
|
data/lcm.rake
CHANGED
@@ -3,7 +3,7 @@ require 'fileutils'
|
|
3
3
|
require 'pathname'
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
|
6
|
-
test_cases = %i[integration slow userprov load]
|
6
|
+
test_cases = %i[integration-e2e integration-release integration-others slow userprov load]
|
7
7
|
|
8
8
|
# Schema for new Bricks.
|
9
9
|
brick_info_schema = {
|
@@ -79,7 +79,7 @@ namespace :test do
|
|
79
79
|
test_cases.each do |test_case|
|
80
80
|
desc "Run #{test_case} tests"
|
81
81
|
RSpec::Core::RakeTask.new(test_case) do |task|
|
82
|
-
task.pattern = "spec/lcm/#{test_case}/**/*_spec.rb"
|
82
|
+
task.pattern = test_case['integration'] ? "spec/lcm/integration/spec/#{test_case.to_s.split('-')[-1]}/*_spec.rb" : "spec/lcm/#{test_case}/**/*_spec.rb"
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -101,8 +101,14 @@ namespace :test do
|
|
101
101
|
test_cases.each do |t|
|
102
102
|
desc "Run #{t} tests in Docker"
|
103
103
|
task t do
|
104
|
-
|
105
|
-
|
104
|
+
if t.to_s == 'integration'
|
105
|
+
system("docker-compose -f docker-compose.lcm.yml run --rm appstore /bin/bash -c ./spec/integration_with_postgresql.sh") ||
|
106
|
+
fail('Test execution failed!')
|
107
|
+
else
|
108
|
+
system("docker-compose -f docker-compose.lcm.yml run --rm appstore bundle exec rake -f lcm.rake test:#{t}") ||
|
109
|
+
fail('Test execution failed!')
|
110
|
+
end
|
111
|
+
|
106
112
|
end
|
107
113
|
end
|
108
114
|
end
|
@@ -43,7 +43,7 @@ module GoodData
|
|
43
43
|
RESULT_HEADER = [
|
44
44
|
:id,
|
45
45
|
:status,
|
46
|
-
:
|
46
|
+
:project,
|
47
47
|
:client,
|
48
48
|
:type
|
49
49
|
]
|
@@ -102,7 +102,13 @@ module GoodData
|
|
102
102
|
options = { delete_projects: delete_projects }
|
103
103
|
options.merge!(delete_extra_option(params, delete_extra)) if delete_extra
|
104
104
|
|
105
|
-
domain.update_clients(params.clients, options)
|
105
|
+
results = domain.update_clients(params.clients, options)
|
106
|
+
# Update status to CREATED if the client has no project
|
107
|
+
results&.each do |r|
|
108
|
+
r[:status] = 'CREATED' if r[:originalProject].nil?
|
109
|
+
r[:project] = r[:originalProject]
|
110
|
+
end
|
111
|
+
results
|
106
112
|
end
|
107
113
|
|
108
114
|
private
|
@@ -48,7 +48,8 @@ module GoodData
|
|
48
48
|
domain_name = params.organization || params.domain
|
49
49
|
fail "Either organisation or domain has to be specified in params" unless domain_name
|
50
50
|
domain = client.domain(domain_name) || fail("Invalid domain name specified - #{domain_name}")
|
51
|
-
|
51
|
+
error_message = nil
|
52
|
+
invalid_client_ids = []
|
52
53
|
begin
|
53
54
|
results = params.segments.map do |segment|
|
54
55
|
segment_object = domain.segments(segment.segment_id, data_product)
|
@@ -57,33 +58,53 @@ module GoodData
|
|
57
58
|
end
|
58
59
|
|
59
60
|
unless tmp.empty?
|
60
|
-
|
61
|
+
synchronize_project = {
|
61
62
|
segment_id: segment.segment_id,
|
62
63
|
from: segment.development_pid,
|
63
64
|
to: tmp.map do |entry|
|
64
65
|
unless entry[:project_uri]
|
65
|
-
|
66
|
+
error_message = "There was error during provisioning clients: #{entry[:error]}" unless error_message
|
67
|
+
invalid_client_ids << entry[:id]
|
68
|
+
next
|
66
69
|
end
|
67
70
|
{
|
68
71
|
pid: entry[:project_uri].split('/').last,
|
69
72
|
client_id: entry[:id]
|
70
73
|
}
|
71
|
-
end
|
74
|
+
end.compact
|
72
75
|
}
|
76
|
+
|
77
|
+
synchronize_projects << synchronize_project unless synchronize_project[:to].empty?
|
78
|
+
end
|
79
|
+
|
80
|
+
if error_message
|
81
|
+
params.gdc_logger.debug "#{error_message}. Purge all invalid clients now ..."
|
82
|
+
deleted_client_ids = []
|
83
|
+
|
84
|
+
segment_object.clients.map do |segment_client|
|
85
|
+
project = segment_client.project
|
86
|
+
if (project.nil? || project.deleted?)
|
87
|
+
client_id = segment_client.client_id
|
88
|
+
if invalid_client_ids.include?(client_id)
|
89
|
+
segment_client.delete
|
90
|
+
deleted_client_ids << client_id
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
params.gdc_logger.debug "Deleted clients: #{deleted_client_ids.join(', ')}"
|
96
|
+
raise error_message unless error_message['TooManyProjectsCreatedException'] || error_message['Max number registered projects']
|
97
|
+
break tmp
|
73
98
|
end
|
74
99
|
|
75
100
|
tmp
|
76
101
|
end
|
77
102
|
rescue => e
|
78
|
-
params.gdc_logger.error "Problem occurs when provisioning clients.
|
79
|
-
res = LCM2.run_action PurgeClients, params
|
80
|
-
params.gdc_logger.debug "Purge clients result: #{res}"
|
81
|
-
deleted_client_ids = res[:results].select { |r| r[:status] == 'purged' }.map { |r| r[:client_id] }
|
82
|
-
params.gdc_logger.error "Deleted clients: #{deleted_client_ids.join(', ')}"
|
103
|
+
params.gdc_logger.error "Problem occurs when provisioning clients."
|
83
104
|
raise e
|
84
105
|
end
|
85
106
|
|
86
|
-
results.flatten!
|
107
|
+
results.flatten! if results
|
87
108
|
|
88
109
|
# Return results
|
89
110
|
{
|
@@ -456,10 +456,12 @@ Available values for setting language are: #{available_languages}."
|
|
456
456
|
alias_method :add_clients_settings, :update_clients_settings
|
457
457
|
|
458
458
|
def update_clients(data, options = {})
|
459
|
+
results = []
|
459
460
|
data.group_by(&:data_product_id).each do |data_product_id, client_update_data|
|
460
461
|
data_product = data_products(data_product_id)
|
461
|
-
data_product.update_clients(client_update_data, options)
|
462
|
+
results.concat data_product.update_clients(client_update_data, options)
|
462
463
|
end
|
464
|
+
results
|
463
465
|
end
|
464
466
|
|
465
467
|
# Update user in domain
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010-2021 GoodData Corporation. All rights reserved.
|
5
|
+
# This source code is licensed under the BSD-style license found in the
|
6
|
+
# LICENSE file in the root directory of this source tree.
|
7
|
+
|
8
|
+
require_relative 'analytical_visualization_object'
|
9
|
+
|
10
|
+
module GoodData
|
11
|
+
class AnalyticalDashboard < GoodData::AnalyticalVisualizationObject
|
12
|
+
EMPTY_OBJECT = {
|
13
|
+
'analyticalDashboard' => {
|
14
|
+
'content' => {
|
15
|
+
'filterContext' => '',
|
16
|
+
'layout' => {},
|
17
|
+
'widgets' => []
|
18
|
+
},
|
19
|
+
'meta' => {
|
20
|
+
'deprecated' => '0',
|
21
|
+
'summary' => '',
|
22
|
+
'title' => ''
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
ASSIGNABLE_MEMBERS = %i[filterContext layout widgets deprecated summary title]
|
28
|
+
|
29
|
+
class << self
|
30
|
+
# Method intended to get all AnalyticalDashboard objects in a specified project
|
31
|
+
#
|
32
|
+
# @param options [Hash] the options hash
|
33
|
+
# @option options [Boolean] :full with true value will pull in full objects. Default is false value
|
34
|
+
# @return [Array<GoodData::AnalyticalDashboard>] Return AnalyticalDashboard list
|
35
|
+
def all(options = { :client => GoodData.connection, :project => GoodData.project })
|
36
|
+
query('analyticalDashboard', AnalyticalDashboard, options)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Create Analytical Dashboard in the specify project
|
40
|
+
#
|
41
|
+
# @param analytical_dashboard [Hash] the data of object will be created
|
42
|
+
# @param options [Hash] The project that the object will be created in
|
43
|
+
# @return GoodData::AnalyticalDashboard object
|
44
|
+
def create(analytical_dashboard = {}, options = { :client => GoodData.client, :project => GoodData.project })
|
45
|
+
GoodData::AnalyticalVisualizationObject.create(analytical_dashboard, AnalyticalDashboard, EMPTY_OBJECT, ASSIGNABLE_MEMBERS, options)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010-2021 GoodData Corporation. All rights reserved.
|
5
|
+
# This source code is licensed under the BSD-style license found in the
|
6
|
+
# LICENSE file in the root directory of this source tree.
|
7
|
+
|
8
|
+
module GoodData
|
9
|
+
class AnalyticalVisualizationObject < GoodData::MdObject
|
10
|
+
class << self
|
11
|
+
# Create a specify object in the specify project
|
12
|
+
#
|
13
|
+
# @param object_data [Hash] the data of object will be created
|
14
|
+
# @param klass [Class] A class used for instantiating the returned data
|
15
|
+
# @param empty_data_object [Hash] the empty data of object will be created
|
16
|
+
# @param assignable_properties [Hash] the properties allow updating
|
17
|
+
# @param options [Hash] The project that the object will be created in
|
18
|
+
# @return klass object
|
19
|
+
def create(object_data, klass, empty_data_object = {}, assignable_properties = [], options = { :client => GoodData.client, :project => GoodData.project })
|
20
|
+
client, project = GoodData.get_client_and_project(GoodData::Helpers.symbolize_keys(options))
|
21
|
+
|
22
|
+
res = client.create(klass, GoodData::Helpers.deep_dup(GoodData::Helpers.stringify_keys(empty_data_object)), :project => project)
|
23
|
+
object_data.each do |k, v|
|
24
|
+
res.send("#{k}=", v) if assignable_properties.include? k
|
25
|
+
end
|
26
|
+
res
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010-2021 GoodData Corporation. All rights reserved.
|
5
|
+
# This source code is licensed under the BSD-style license found in the
|
6
|
+
# LICENSE file in the root directory of this source tree.
|
7
|
+
|
8
|
+
require_relative 'analytical_visualization_object'
|
9
|
+
|
10
|
+
module GoodData
|
11
|
+
class VisualizationObject < GoodData::AnalyticalVisualizationObject
|
12
|
+
EMPTY_OBJECT = {
|
13
|
+
'visualizationObject' => {
|
14
|
+
'content' => {
|
15
|
+
'buckets' => [],
|
16
|
+
'properties' => '',
|
17
|
+
'visualizationClass' => {}
|
18
|
+
},
|
19
|
+
'links' => {},
|
20
|
+
'meta' => {
|
21
|
+
'deprecated' => '0',
|
22
|
+
'summary' => '',
|
23
|
+
'title' => ''
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
ASSIGNABLE_MEMBERS = %i[buckets properties visualizationClass deprecated summary title]
|
29
|
+
|
30
|
+
class << self
|
31
|
+
# Method intended to get all VisualizationObject objects in a specified project
|
32
|
+
#
|
33
|
+
# @param options [Hash] the options hash
|
34
|
+
# @option options [Boolean] :full with true value to pull full objects
|
35
|
+
# @return [Array<GoodData::VisualizationObject>] Return VisualizationObject list
|
36
|
+
def all(options = { :client => GoodData.connection, :project => GoodData.project })
|
37
|
+
query('visualizationObject', VisualizationObject, options)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Create Visualization Object in the specify project
|
41
|
+
#
|
42
|
+
# @param visualization_object [Hash] the data of object will be created
|
43
|
+
# @param options [Hash] The project that the object will be created in
|
44
|
+
# @return GoodData::VisualizationObject object
|
45
|
+
def create(visualization_object = {}, options = { :client => GoodData.client, :project => GoodData.project })
|
46
|
+
GoodData::AnalyticalVisualizationObject.create(visualization_object, VisualizationObject, EMPTY_OBJECT, ASSIGNABLE_MEMBERS, options)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/gooddata/rest/phmap.rb
CHANGED
@@ -81,7 +81,7 @@ module GoodData
|
|
81
81
|
%r{/gdc/internal/lcm/domains/[^\/]+/dataproducts/[^\/]+/segments/[^\/]+/syncProcesses}],
|
82
82
|
|
83
83
|
['/gdc/internal/projects/{id}/objects/setPermissions', %r{/gdc/internal/projects/[^\/]+/objects/setPermissions}],
|
84
|
-
|
84
|
+
['/gdc/internal/projects/{id}/roles', %r{/gdc/internal/projects/[^\/]+/roles}],
|
85
85
|
['/gdc/md/{id}/variables/item/{id}', %r{/gdc/md/[^\/]+/variables/item/[\d]+}],
|
86
86
|
['/gdc/md/{id}/validate/task/{id}', %r{/gdc/md/[^\/]+/validate/task/[^\/]+}],
|
87
87
|
['/gdc/md/{id}/using2/{id}/{id}', %r{/gdc/md/[^\/]+/using2/[\d]+/[\d]+}],
|
@@ -1,51 +1,51 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
+
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
1
|
+
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
|
@@ -1,109 +1,109 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
1
|
+
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
|
109
|
+
j9/cqg==
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gooddata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kolesnikov
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2021-
|
17
|
+
date: 2021-05-21 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: license_finder
|
@@ -320,16 +320,22 @@ dependencies:
|
|
320
320
|
name: docile
|
321
321
|
requirement: !ruby/object:Gem::Requirement
|
322
322
|
requirements:
|
323
|
-
- - "
|
323
|
+
- - ">"
|
324
324
|
- !ruby/object:Gem::Version
|
325
325
|
version: '1.1'
|
326
|
+
- - "<"
|
327
|
+
- !ruby/object:Gem::Version
|
328
|
+
version: 1.4.0
|
326
329
|
type: :runtime
|
327
330
|
prerelease: false
|
328
331
|
version_requirements: !ruby/object:Gem::Requirement
|
329
332
|
requirements:
|
330
|
-
- - "
|
333
|
+
- - ">"
|
331
334
|
- !ruby/object:Gem::Version
|
332
335
|
version: '1.1'
|
336
|
+
- - "<"
|
337
|
+
- !ruby/object:Gem::Version
|
338
|
+
version: 1.4.0
|
333
339
|
- !ruby/object:Gem::Dependency
|
334
340
|
name: gli
|
335
341
|
requirement: !ruby/object:Gem::Requirement
|
@@ -920,6 +926,8 @@ files:
|
|
920
926
|
- lib/gooddata/models/links.rb
|
921
927
|
- lib/gooddata/models/membership.rb
|
922
928
|
- lib/gooddata/models/metadata.rb
|
929
|
+
- lib/gooddata/models/metadata/analytical_dashboard.rb
|
930
|
+
- lib/gooddata/models/metadata/analytical_visualization_object.rb
|
923
931
|
- lib/gooddata/models/metadata/attribute.rb
|
924
932
|
- lib/gooddata/models/metadata/dashboard.rb
|
925
933
|
- lib/gooddata/models/metadata/dashboard/dashboard_item.rb
|
@@ -944,6 +952,7 @@ files:
|
|
944
952
|
- lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb
|
945
953
|
- lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb
|
946
954
|
- lib/gooddata/models/metadata/variable.rb
|
955
|
+
- lib/gooddata/models/metadata/visualization_object.rb
|
947
956
|
- lib/gooddata/models/model.rb
|
948
957
|
- lib/gooddata/models/models.rb
|
949
958
|
- lib/gooddata/models/module_constants.rb
|