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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00e8b6ecab4ffb8da4f9904c24a4d6fe9e5d4a5144da33a41539a82412494756
4
- data.tar.gz: f4f0aec0b4d7d38f5a63ee742e5e4eb37104aa91f7bfcbc7e95060eaa98e83b5
3
+ metadata.gz: 848280ab04bb4a87b5e8508909a0319b2cbed95ccb607ed6266b7c9b2d2f9e82
4
+ data.tar.gz: ed4892bebcf6ede7e0b489f0cf75a87aa058c6e3cf2ec9dabaebf485988ca007
5
5
  SHA512:
6
- metadata.gz: 11a8f24cb89b5e2832d58ce34b5e209a90f820c8b50a0b68355d8938dff2bab9bece0c251e5688ddfaa7ef4838ebc74e7ebc975966a67065fde3c0da72851bbe
7
- data.tar.gz: 2173449f161e26e975f7a46aadc35e4d4b546facaaf67b9ff3a6e43286ecabe287f9cc6962b03e2d49066835a1e5d6b08e15d40c55a79f793d7c7e327658c576
6
+ metadata.gz: 3febd6052216506be6e57e69d951ece00d21ee23ed8ad6a514e3c799ae1fc32aca1ecab9d1713cce2fbca1ceb66667d4eb22f1c6abb64da2c73d26249582111c
7
+ data.tar.gz: a3fcfb42023761b3790ab89b57d50d15f30e827a10d3fa3ca3e7818a1b15461b45297602ca8b8b63c54111c4dec13dbf3182db1b00fac6e25e512ea14c6efc95
data/.gdc-ii-config.yaml CHANGED
@@ -22,4 +22,4 @@ configFilesForUpdate:
22
22
  - '.gdc-ii-config-chart.yaml'
23
23
 
24
24
  customConstants:
25
- pipeline.deploy.testEnvironments: ['stg3', 'stg2', 'stg']
25
+ pipeline.deploy.testEnvironments: ['stg9', 'stg3', 'stg2', 'stg']
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:0dec94a
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:0dec94a"
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://keys.gnupg.net \
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.10
1
+ 2.1.15
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.7.17
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(/#transfer_processes and #transfer_schedules test/, projects, days, force)
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] || 14
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
- 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
- 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
- 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
- kcY/eDWIsb+KAQxJeR3GpMFQ/Wm5Wo9OaaR8QIJ5rHR+YHdCPy3Xfu0vndYN
5
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BEnWK4zoi4ERS/4JGi08sL4c4vydsIHYcsD0M7cM2qURfHSFESGbNGQnaIiE
27
- +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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- N7k9HVGhYz5VSGvI/dO2j0QFrxwEPt1VVRPT0hlzKsrxSPI2jMtVFhLF2AH/
40
- PHRjAjc=
1
+ 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
40
+ nQTzKqg=
@@ -0,0 +1,2 @@
1
+ ---
2
+ fossa_project: "gooddata-ruby-lcm"
@@ -0,0 +1,5 @@
1
+ ---
2
+ generate_attribution_file: true
3
+ fossa_project: "gooddata-ruby-sdk"
4
+ ignored_paths:
5
+ - 'ci/.*'
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', '> 4.2.9', '< 6.1'
58
+ s.add_dependency 'activesupport', '>= 6.0.3.1', '< 6.2'
59
59
  else
60
- s.add_dependency 'activesupport', '> 4.2.9', '< 6.0'
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'
@@ -1,4 +1,4 @@
1
1
  apiVersion: v1
2
2
  name: lcm-bricks
3
3
  description: LCM Bricks
4
- version: 2.0.1
4
+ version: 2.0.6
@@ -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 # switch to msf in production
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: critical
32
- team: lcm # switch to msf in production
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 # switch to msf in production
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: critical
52
- team: lcm # switch to msf in production
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: critical
62
- team: lcm # switch to msf in production
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: critical
72
- team: lcm # switch to msf in production
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: critical
81
- team: lcm # switch to msf in production
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
@@ -37,3 +37,5 @@ require 'backports/2.1.0/array/to_h'
37
37
 
38
38
  # Helpers
39
39
  require 'gooddata/helpers/global_helpers'
40
+
41
+ require 'active_support/core_ext/hash/compact' unless RUBY_VERSION >= '2.5'
@@ -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(/\\\\/, /\\\$/, /\$\{(\w+)\}/)
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 =~ /\$\{(\w+)\}/
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
- objects = (from_project.reports.to_a + from_project.metrics.to_a + from_project.variables.to_a + vizs.to_a + viz_widgets.to_a).map(&:uri)
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