gooddata 2.1.10-java → 2.1.15-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gdc-ii-config.yaml +1 -1
- data/CHANGELOG.md +29 -0
- data/Dockerfile +5 -3
- data/README.md +17 -0
- data/SDK_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/run_brick.rb +3 -0
- data/bin/test_projects_cleanup.rb +6 -2
- data/dev-gooddata-sso.pub.encrypted +40 -40
- data/gdc_fossa_lcm.yaml +2 -0
- data/gdc_fossa_ruby_sdk.yaml +5 -0
- data/gooddata.gemspec +3 -3
- data/k8s/charts/lcm-bricks/Chart.yaml +1 -1
- data/k8s/charts/lcm-bricks/templates/prometheus/alertingRules.yaml +32 -12
- data/lib/gooddata.rb +2 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +2 -2
- data/lib/gooddata/lcm/actions/base_action.rb +0 -2
- data/lib/gooddata/lcm/actions/collect_tagged_objects.rb +2 -1
- data/lib/gooddata/lcm/actions/migrate_gdc_date_dimension.rb +116 -0
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +10 -1
- data/lib/gooddata/lcm/lcm2.rb +1 -2
- data/lib/gooddata/lcm/types/base_type.rb +0 -2
- data/lib/gooddata/models/blueprint/project_blueprint.rb +0 -2
- data/lib/gooddata/models/data_source.rb +662 -0
- data/lib/gooddata/models/domain.rb +1 -2
- data/lib/gooddata/models/from_wire.rb +1 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +1 -1
- data/lib/gooddata/models/process.rb +11 -3
- data/lib/gooddata/models/project.rb +121 -13
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +0 -1
- data/lib/gooddata/models/user_group.rb +0 -1
- data/rubydev_public.gpg.encrypted +51 -51
- data/rubydev_secret_keys.gpg.encrypted +109 -109
- metadata +14 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 848280ab04bb4a87b5e8508909a0319b2cbed95ccb607ed6266b7c9b2d2f9e82
|
4
|
+
data.tar.gz: ed4892bebcf6ede7e0b489f0cf75a87aa058c6e3cf2ec9dabaebf485988ca007
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3febd6052216506be6e57e69d951ece00d21ee23ed8ad6a514e3c799ae1fc32aca1ecab9d1713cce2fbca1ceb66667d4eb22f1c6abb64da2c73d26249582111c
|
7
|
+
data.tar.gz: a3fcfb42023761b3790ab89b57d50d15f30e827a10d3fa3ca3e7818a1b15461b45297602ca8b8b63c54111c4dec13dbf3182db1b00fac6e25e512ea14c6efc95
|
data/.gdc-ii-config.yaml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,33 @@
|
|
1
1
|
# GoodData Ruby SDK Changelog
|
2
|
+
## 2.1.15
|
3
|
+
- FEATURE: BCO-1119 Introduce data sources API
|
4
|
+
- Upgrade active_support to be able used with Rails 6.1
|
5
|
+
|
6
|
+
## 2.1.14
|
7
|
+
- BUGFIX: MSF-18892 Change default option of recurrency field to valid value
|
8
|
+
- FEATURE:TMA-1687 - Release/Rollout sync theme object
|
9
|
+
- CONFIG: MSF-18574 Add support notice to the readme
|
10
|
+
- BUGFIX: MSF-18223 - Update param placeholder pattern
|
11
|
+
|
12
|
+
## 2.1.13
|
13
|
+
- FEATURE: TMA-1676 Support LCM release across domain
|
14
|
+
- FEATURE: TMA-1672 Support sync process with generic datasource
|
15
|
+
- FEATURE: MSF-17743 upgrade custom v2 for rollout brick
|
16
|
+
- BUGFIX: MSF-17975 Introduce gdcshare to lcm bricks
|
17
|
+
- BUGFIX: TMA-1673 Update params processing to accept dot and space
|
18
|
+
|
19
|
+
## 2.1.12
|
20
|
+
- FEATURE: MSF-17621 Apply patched version for activesupport to fix vulnerable issue
|
21
|
+
- CONFIG: SETI-4379 Add gdc-fossa configuration for gooddata-ruby
|
22
|
+
- CONFIG: MSF-17345 Set umask 0002 for lcm brick
|
23
|
+
- BUGFIX: TMA-1015 check case sensitivity for group name
|
24
|
+
- BUGFIX: MSF-17219 Fixed incorrect client used in domain.users
|
25
|
+
- BUGFIX: TMA-1022 Add more logs for case roll out without LDM change in master
|
26
|
+
- FEATURE: TMA-1640 Add alert for CPU limit hit
|
27
|
+
|
28
|
+
## 2.1.11
|
29
|
+
- FEATURE: TMA-1647 Set VCR version to 5.0.0 due to incompatible license of the latest version
|
30
|
+
|
2
31
|
## 2.1.10
|
3
32
|
- BUGFIX: TMA-1653 fix performance issue in functions project.users and domain.users
|
4
33
|
- BUGFIX: TMA-1643 Don't convert null value to empty string
|
data/Dockerfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
FROM harbor.intgdc.com/tools/gdc-java-8-jre:
|
1
|
+
FROM harbor.intgdc.com/tools/gdc-java-8-jre:89999e9
|
2
2
|
|
3
3
|
ARG RVM_VERSION=stable
|
4
4
|
ARG JRUBY_VERSION=9.2.5.0
|
@@ -6,7 +6,7 @@ ARG JRUBY_VERSION=9.2.5.0
|
|
6
6
|
LABEL image_name="GDC LCM Bricks"
|
7
7
|
LABEL maintainer="LCM <lcm@gooddata.com>"
|
8
8
|
LABEL git_repository_url="https://github.com/gooddata/gooddata-ruby/"
|
9
|
-
LABEL parent_image="harbor.intgdc.com/tools/gdc-java-8-jre:
|
9
|
+
LABEL parent_image="harbor.intgdc.com/tools/gdc-java-8-jre:89999e9"
|
10
10
|
|
11
11
|
# which is required by RVM
|
12
12
|
RUN yum install -y curl which patch make git maven \
|
@@ -14,7 +14,7 @@ RUN yum install -y curl which patch make git maven \
|
|
14
14
|
&& rm -rf /var/cache/yum
|
15
15
|
|
16
16
|
# Install + verify RVM with gpg (https://rvm.io/rvm/security)
|
17
|
-
RUN gpg2 --quiet --no-tty --logger-fd 1 --keyserver hkp://
|
17
|
+
RUN gpg2 --quiet --no-tty --logger-fd 1 --keyserver hkp://ipv4.pool.sks-keyservers.net \
|
18
18
|
--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
|
19
19
|
7D2BAF1CF37B13E2069D6956105BD0E739499BDB \
|
20
20
|
&& echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | \
|
@@ -37,7 +37,9 @@ RUN rvm install jruby-${JRUBY_VERSION} && gem update --system \
|
|
37
37
|
WORKDIR /src
|
38
38
|
|
39
39
|
RUN groupadd -g 48 apache \
|
40
|
+
&& groupadd -g 65065 gdcshare \
|
40
41
|
&& useradd -u 48 -m --no-log-init -r -g apache -G rvm apache \
|
42
|
+
&& usermod -a -G gdcshare apache \
|
41
43
|
&& chown apache: /src
|
42
44
|
|
43
45
|
USER apache
|
data/README.md
CHANGED
@@ -9,6 +9,8 @@ The best documentation for the GoodData API can be found using these resources:
|
|
9
9
|
* http://developer.gooddata.com/api
|
10
10
|
* https://secure.gooddata.com/gdc
|
11
11
|
* http://rubydoc.info/gems/gooddata/frames
|
12
|
+
|
13
|
+
Feel free to check out the [GoodData community website](http://community.gooddata.com/) if you have any questions about the GoodData Analytics platform, our API, or this library.
|
12
14
|
|
13
15
|
## Status
|
14
16
|
|
@@ -19,6 +21,21 @@ The best documentation for the GoodData API can be found using these resources:
|
|
19
21
|
[![Build Status](https://travis-ci.org/gooddata/gooddata-ruby.png)](https://travis-ci.org/gooddata/gooddata-ruby)
|
20
22
|
[![Coverage Status](https://coveralls.io/repos/gooddata/gooddata-ruby/badge.png)](https://coveralls.io/r/gooddata/gooddata-ruby)
|
21
23
|
|
24
|
+
## Supported versions
|
25
|
+
|
26
|
+
In order to make the user experience with integrating GoodData Ruby SDK as smooth and secure as possible and to ensure that the SDK is using the latest features of the platform, we only provide support to the two most recent major versions of Ruby SDK.
|
27
|
+
|
28
|
+
The most recent majors will be supported in the following modes:
|
29
|
+
|
30
|
+
- The latest major version will receive all new functionality and all bug fixes.
|
31
|
+
- The previous major version will only receive fixes to critical issues and security fixes. These fixes will be applied on top of last released version of the previous major.
|
32
|
+
- GoodData customer support will provide support for the latest major and previous major version only.
|
33
|
+
|
34
|
+
- The customers are encouraged to always use the latest version of the Ruby SDK.
|
35
|
+
- In case of using older versions, the user might face API incompatibility, performance or security issues.
|
36
|
+
|
37
|
+
Please follow the installation instructions in the repository to update to the newest version.
|
38
|
+
|
22
39
|
## Install
|
23
40
|
|
24
41
|
If you are using bundler, add
|
data/SDK_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.15
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.7.
|
1
|
+
3.7.24
|
data/bin/run_brick.rb
CHANGED
@@ -8,6 +8,9 @@ DEFAULT_BRICK = 'hello_world_brick'
|
|
8
8
|
BRICK_PARAM_PREFIX = 'BRICK_PARAM_'
|
9
9
|
HIDDEN_BRICK_PARAMS_PREFIX = 'HIDDEN_BRICK_PARAM_'
|
10
10
|
|
11
|
+
# MSF-17345 Set umask so files are group-writable
|
12
|
+
File.umask(0002)
|
13
|
+
|
11
14
|
brick_type = !ARGV.empty? ? ARGV[0] : DEFAULT_BRICK
|
12
15
|
|
13
16
|
def get_brick_params(prefix)
|
@@ -90,7 +90,11 @@ def clean_up!(client, force, days)
|
|
90
90
|
delete_project_by_title(/LCM spec Client With Conflicting LDM Changes/, projects, days, force)
|
91
91
|
delete_project_by_title(/LCM spec master project/, projects, days, force)
|
92
92
|
delete_project_by_title(/users brick load test/, projects, days, force)
|
93
|
-
delete_project_by_title(
|
93
|
+
delete_project_by_title(/transfer_processes and #transfer_schedules test/, projects, days, force)
|
94
|
+
delete_project_by_title(/DailyUse Project for gooddata-ruby integration tests/, projects, days, force)
|
95
|
+
delete_project_by_title(/^New project$/, projects, days, force)
|
96
|
+
delete_project_by_title(/RubyGem Dev Week test/, projects, days, force)
|
97
|
+
delete_project_by_title(/My project from blueprint/, projects, days, force)
|
94
98
|
delete_ads_by_title(/Development ADS/, client, days, force)
|
95
99
|
delete_ads_by_title(/Production ADS/, client, days, force)
|
96
100
|
delete_ads_by_title(/TEST ADS/, client, days, force)
|
@@ -112,7 +116,7 @@ dev_client = init_client(username, password, "https://#{config[:dev_server]}")
|
|
112
116
|
prod_client = init_client(username, password, "https://#{config[:prod_server]}")
|
113
117
|
|
114
118
|
force = options[:force]
|
115
|
-
days = options[:days] ||
|
119
|
+
days = options[:days] || 3
|
116
120
|
clean_up!(dev_client, force, days)
|
117
121
|
clean_up!(prod_client, force, days)
|
118
122
|
|
@@ -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
|
+
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
|
40
|
+
nQTzKqg=
|
data/gdc_fossa_lcm.yaml
ADDED
data/gooddata.gemspec
CHANGED
@@ -49,15 +49,15 @@ Gem::Specification.new do |s|
|
|
49
49
|
s.add_development_dependency 'pronto', '~> 0.10' if RUBY_PLATFORM != 'java'
|
50
50
|
s.add_development_dependency 'pronto-rubocop', '~> 0.9' if RUBY_PLATFORM != 'java'
|
51
51
|
s.add_development_dependency 'pronto-reek', '~> 0.9' if RUBY_PLATFORM != 'java'
|
52
|
-
s.add_development_dependency 'vcr'
|
52
|
+
s.add_development_dependency 'vcr', '5.0.0'
|
53
53
|
s.add_development_dependency 'hashdiff', '~> 0.4'
|
54
54
|
|
55
55
|
s.add_development_dependency 'sqlite3' if RUBY_PLATFORM != 'java'
|
56
56
|
|
57
57
|
if RUBY_VERSION >= '2.5'
|
58
|
-
s.add_dependency 'activesupport', '
|
58
|
+
s.add_dependency 'activesupport', '>= 6.0.3.1', '< 6.2'
|
59
59
|
else
|
60
|
-
s.add_dependency 'activesupport', '
|
60
|
+
s.add_dependency 'activesupport', '>= 5.2.4.3', '< 6.0'
|
61
61
|
end
|
62
62
|
|
63
63
|
s.add_dependency 'aws-sdk-s3', '~> 1.16'
|
@@ -20,7 +20,7 @@ data:
|
|
20
20
|
expr: container_pod:lcm_pod_container_status_restarts:increase10m >= 1
|
21
21
|
labels:
|
22
22
|
severity: warning
|
23
|
-
team: lcm
|
23
|
+
team: lcm
|
24
24
|
cluster_id: {{ .Values.clusterId }}
|
25
25
|
annotations:
|
26
26
|
description: "There is more than 0 restarts of {{`{{ $labels.pod }}`}} pod in the last 10 minutes"
|
@@ -28,8 +28,8 @@ data:
|
|
28
28
|
- alert: "[LCM] Pod has too many restarts on cluster={{ .Values.clusterId }}"
|
29
29
|
expr: container_pod:lcm_pod_container_status_restarts:increase10m >= 2
|
30
30
|
labels:
|
31
|
-
severity:
|
32
|
-
team: lcm
|
31
|
+
severity: warning
|
32
|
+
team: lcm
|
33
33
|
cluster_id: {{ .Values.clusterId }}
|
34
34
|
annotations:
|
35
35
|
description: "There is more than 1 restart of {{`{{ $labels.pod }}`}} pod in the last 10 minutes"
|
@@ -40,7 +40,7 @@ data:
|
|
40
40
|
expr: container_pod:lcm_pod_container_status_oomkilled:increase10m >= 1
|
41
41
|
labels:
|
42
42
|
severity: warning
|
43
|
-
team: lcm
|
43
|
+
team: lcm
|
44
44
|
cluster_id: {{ .Values.clusterId }}
|
45
45
|
annotations:
|
46
46
|
description: "{{`{{ $labels.pod }}`}} was OOMKilled in the last 30 minutes. Investigate and/or increase memoryRequest or memoryLimit."
|
@@ -48,8 +48,8 @@ data:
|
|
48
48
|
- alert: "[LCM] OOMKill occured on cluster={{ .Values.clusterId }}"
|
49
49
|
expr: container_pod:lcm_pod_container_status_oomkilled:increase10m >= 2
|
50
50
|
labels:
|
51
|
-
severity:
|
52
|
-
team: lcm
|
51
|
+
severity: warning
|
52
|
+
team: lcm
|
53
53
|
cluster_id: {{ .Values.clusterId }}
|
54
54
|
annotations:
|
55
55
|
description: "{{`{{ $labels.pod }}`}} was OOMKilled in the last 10 minutes. Investigate and/or increase memoryRequest or memoryLimit."
|
@@ -58,8 +58,8 @@ data:
|
|
58
58
|
expr: rate(container_cpu_cfs_throttled_seconds_total{namespace='{{ .Release.Namespace }}'}[1m]) > 1
|
59
59
|
for: 5m
|
60
60
|
labels:
|
61
|
-
severity:
|
62
|
-
team: lcm
|
61
|
+
severity: warning
|
62
|
+
team: lcm
|
63
63
|
cluster_id: {{ .Values.clusterId }}
|
64
64
|
annotations:
|
65
65
|
description: "{{`{{ $labels.pod_name }}`}} container is beeing throttled and probably hit CPU limit. Investigate root cause and increase limit and/or number of replicas if necessary."
|
@@ -68,8 +68,8 @@ data:
|
|
68
68
|
expr: rate(jvm_gc_pause_seconds_sum{kubernetes_namespace='{{ .Release.Namespace }}'}[1m]) > 1
|
69
69
|
for: 5m
|
70
70
|
labels:
|
71
|
-
severity:
|
72
|
-
team: lcm
|
71
|
+
severity: warning
|
72
|
+
team: lcm
|
73
73
|
cluster_id: {{ .Values.clusterId }}
|
74
74
|
annotations:
|
75
75
|
description: "{{`{{ $labels.kubernetes_pod_name }}`}} container is spending too much time in pause garbage collector. Investigate root cause and increase heap size and/or number of replicas if necessary."
|
@@ -77,9 +77,29 @@ data:
|
|
77
77
|
- alert: "[LCM] there is more than 100 jobs on cluster={{ .Values.clusterId }}"
|
78
78
|
expr: count(kube_job_info{namespace="lcm"}) > 100
|
79
79
|
labels:
|
80
|
-
severity:
|
81
|
-
team: lcm
|
80
|
+
severity: warning
|
81
|
+
team: lcm
|
82
82
|
cluster_id: {{ .Values.clusterId }}
|
83
83
|
annotations:
|
84
84
|
description: "There is more than 100 jobs in LCM namespace. They are likely not deleted."
|
85
85
|
summary: "There is more than 100 jobs in LCM namespace."
|
86
|
+
- alert: "[LCM] Resource quotas hit CPU limit on cluster={{ .Values.clusterId }}"
|
87
|
+
expr: kube_resourcequota{namespace='{{ .Release.Namespace }}',resource="limits.cpu",type="hard"} - ignoring(type) kube_resourcequota{namespace='{{ .Release.Namespace }}',resource="limits.cpu",type="used"} == 0
|
88
|
+
labels:
|
89
|
+
severity: warning
|
90
|
+
team: lcm
|
91
|
+
cluster_id: {{ .Values.clusterId }}
|
92
|
+
annotations:
|
93
|
+
description: "We are hitting CPU limit in LCM namespace."
|
94
|
+
summary: "We are hitting CPU limit in LCM namespace."
|
95
|
+
- alert: "[LCM] POD is in undesirable state on cluster={{ .Values.clusterId }}"
|
96
|
+
expr: kube_pod_status_phase{namespace='{{ .Release.Namespace }}', phase!~"Running|Succeeded|Failed"} > 0
|
97
|
+
for: 5m
|
98
|
+
labels:
|
99
|
+
cluster_id: {{ .Values.clusterId }}
|
100
|
+
severity: critical
|
101
|
+
team: lcm
|
102
|
+
annotations:
|
103
|
+
description: "POD {{`{{ $labels.pod }}`}} is not in desirable state"
|
104
|
+
summary: "POD is not in desirable state"
|
105
|
+
runbook: "https://confluence.intgdc.com/display/plat/Generic+runbooks#Genericrunbooks-Podisinundesirablestate"
|
data/lib/gooddata.rb
CHANGED
@@ -242,7 +242,7 @@ module GoodData
|
|
242
242
|
|
243
243
|
def resolve_reference_params(data_params, params)
|
244
244
|
reference_values = []
|
245
|
-
regexps = Regexp.union(/\\\\/, /\\\$/, /\$\{(\
|
245
|
+
regexps = Regexp.union(/\\\\/, /\\\$/, /\$\{([^\n\{\}]+)\}/)
|
246
246
|
resolve_reference = lambda do |v|
|
247
247
|
if v.is_a? Hash
|
248
248
|
Hash[
|
@@ -262,7 +262,7 @@ module GoodData
|
|
262
262
|
data_params.is_a?(Hash) ? '\\' : '\\\\' # rubocop: disable Metrics/BlockNesting
|
263
263
|
elsif match =~ /\\\$/
|
264
264
|
'$'
|
265
|
-
elsif match =~ /\$\{(\
|
265
|
+
elsif match =~ /\$\{([^\n\{\}]+)\}/
|
266
266
|
val = params["#{$1}"]
|
267
267
|
if val
|
268
268
|
reference_values << val
|
@@ -8,8 +8,6 @@ require 'gooddata/extensions/integer'
|
|
8
8
|
require 'gooddata/extensions/string'
|
9
9
|
require 'gooddata/extensions/nil'
|
10
10
|
|
11
|
-
require 'active_support/core_ext/hash/compact'
|
12
|
-
|
13
11
|
require_relative '../dsl/dsl'
|
14
12
|
require_relative '../helpers/helpers'
|
15
13
|
require_relative '../types/types'
|
@@ -50,7 +50,8 @@ module GoodData
|
|
50
50
|
if transfer_all
|
51
51
|
vizs = MdObject.query('visualizationObject', MdObject, client: development_client, project: from_project)
|
52
52
|
viz_widgets = MdObject.query('visualizationWidget', MdObject, client: development_client, project: from_project)
|
53
|
-
|
53
|
+
theme = MdObject.query('theme', MdObject, client: development_client, project: from_project)
|
54
|
+
objects = (from_project.reports.to_a + from_project.metrics.to_a + from_project.variables.to_a + vizs.to_a + viz_widgets.to_a + theme.to_a).map(&:uri)
|
54
55
|
elsif production_tags.any?
|
55
56
|
objects = from_project.find_by_tag(production_tags)
|
56
57
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# (C) 2019-2020 GoodData Corporation
|
3
|
+
require_relative 'base_action'
|
4
|
+
|
5
|
+
# Migrate date dimension urn:gooddata:date or urn:custom:date to urn:custom_v2:date
|
6
|
+
module GoodData
|
7
|
+
module LCM2
|
8
|
+
class MigrateGdcDateDimension < BaseAction
|
9
|
+
DESCRIPTION = 'Migrate Gdc Date Dimension'
|
10
|
+
DATE_DIMENSION_CUSTOM_V2 = 'urn:custom_v2:date'
|
11
|
+
DATE_DIMENSION_OLD = %w[urn:gooddata:date urn:custom:date]
|
12
|
+
|
13
|
+
PARAMS = define_params(self) do
|
14
|
+
description 'Client Used for Connecting to GD'
|
15
|
+
param :gdc_gd_client, instance_of(Type::GdClientType), required: true
|
16
|
+
|
17
|
+
description 'Specifies how to synchronize LDM and resolve possible conflicts'
|
18
|
+
param :synchronize_ldm, instance_of(Type::SynchronizeLDM), required: false, default: 'diff_against_master_with_fallback'
|
19
|
+
|
20
|
+
description 'Synchronization Info'
|
21
|
+
param :synchronize, array_of(instance_of(Type::SynchronizationInfoType)), required: true, generated: true
|
22
|
+
end
|
23
|
+
|
24
|
+
RESULT_HEADER = %i[from to status]
|
25
|
+
|
26
|
+
class << self
|
27
|
+
def call(params)
|
28
|
+
results = []
|
29
|
+
params.synchronize.map do |segment_info|
|
30
|
+
result = migrate_date_dimension(params, segment_info)
|
31
|
+
results.concat(result)
|
32
|
+
end
|
33
|
+
|
34
|
+
{
|
35
|
+
results: results
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def migrate_date_dimension(params, segment_info)
|
40
|
+
results = []
|
41
|
+
client = params.gdc_gd_client
|
42
|
+
latest_blueprint = segment_info[:from_blueprint]
|
43
|
+
# don't migrate when latest master doesn't contain custom v2 date.
|
44
|
+
return results unless contain_v2?(latest_blueprint)
|
45
|
+
|
46
|
+
previous_blueprint = segment_info[:previous_master]&.blueprint
|
47
|
+
# check latest master and previous master
|
48
|
+
master_upgrade_datasets = get_upgrade_dates(latest_blueprint, previous_blueprint) if params[:synchronize_ldm].downcase == 'diff_against_master' && previous_blueprint
|
49
|
+
unless master_upgrade_datasets&.empty?
|
50
|
+
segment_info[:to].pmap do |entry|
|
51
|
+
pid = entry[:pid]
|
52
|
+
to_project = client.projects(pid) || fail("Invalid 'to' project specified - '#{pid}'")
|
53
|
+
to_blueprint = to_project.blueprint
|
54
|
+
upgrade_datasets = get_upgrade_dates(latest_blueprint, to_blueprint)
|
55
|
+
next if upgrade_datasets.empty?
|
56
|
+
|
57
|
+
message = get_upgrade_message(upgrade_datasets)
|
58
|
+
|
59
|
+
results << {
|
60
|
+
from: segment_info[:from],
|
61
|
+
to: pid,
|
62
|
+
status: to_project.upgrade_custom_v2(message)
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
results
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_upgrade_dates(src_blueprint, dest_blueprint)
|
71
|
+
dest_dates = get_date_dimensions(dest_blueprint) if dest_blueprint
|
72
|
+
src_dates = get_date_dimensions(src_blueprint) if src_blueprint
|
73
|
+
|
74
|
+
return false if dest_dates.empty? || src_dates.empty?
|
75
|
+
|
76
|
+
upgrade_datasets = []
|
77
|
+
dest_dates.each do |dest|
|
78
|
+
src_dim = get_date_dimension(src_blueprint, dest[:id])
|
79
|
+
next unless src_dim
|
80
|
+
|
81
|
+
upgrade_datasets << src_dim[:identifier] if upgrade?(src_dim, dest) && src_dim[:identifier]
|
82
|
+
end
|
83
|
+
|
84
|
+
upgrade_datasets
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_upgrade_message(upgrade_datasets)
|
88
|
+
{
|
89
|
+
upgrade: {
|
90
|
+
dateDatasets: {
|
91
|
+
upgrade: "exact",
|
92
|
+
datasets: upgrade_datasets
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
98
|
+
def upgrade?(src_dim, dest_dim)
|
99
|
+
src_dim[:urn] == DATE_DIMENSION_CUSTOM_V2 && DATE_DIMENSION_OLD.any? { |e| dest_dim[:urn] == e }
|
100
|
+
end
|
101
|
+
|
102
|
+
def contain_v2?(blueprint)
|
103
|
+
get_date_dimensions(blueprint).any? { |e| e[:urn] == DATE_DIMENSION_CUSTOM_V2 }
|
104
|
+
end
|
105
|
+
|
106
|
+
def get_date_dimension(blueprint, id)
|
107
|
+
GoodData::Model::ProjectBlueprint.find_date_dimension(blueprint, id)
|
108
|
+
end
|
109
|
+
|
110
|
+
def get_date_dimensions(blueprint)
|
111
|
+
GoodData::Model::ProjectBlueprint.date_dimensions(blueprint)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|