gooddata 2.1.14-java → 2.2.0-java
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 +5 -5
- data/.gdc-ii-config.yaml +1 -1
- data/.github/workflows/build.yml +66 -0
- data/.github/workflows/pre-merge.yml +72 -0
- data/.sonar.settings +4 -0
- data/.travis.yml +78 -12
- data/CHANGELOG.md +62 -0
- data/Dockerfile +25 -14
- data/LICENSE +4418 -17
- data/LICENSE.rb +1 -1
- data/README.md +3 -3
- data/Rakefile +8 -1
- data/SDK_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/test_projects_cleanup.rb +45 -3
- data/ci/mssql/pom.xml +62 -0
- data/ci/mysql/pom.xml +57 -0
- data/ci/postgresql/pom.xml +57 -0
- data/ci/redshift/pom.xml +1 -1
- data/dev-gooddata-sso.pub.encrypted +40 -40
- data/gdc_fossa_ruby_sdk.yaml +1 -0
- data/gooddata.gemspec +10 -6
- data/k8s/charts/lcm-bricks/Chart.yaml +1 -1
- data/k8s/charts/lcm-bricks/templates/prometheus/alertingRules.yaml +11 -1
- data/lcm.rake +2 -2
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +35 -9
- data/lib/gooddata/cloud_resources/blobstorage/blobstorage_client.rb +98 -0
- data/lib/gooddata/cloud_resources/{cloud_resouce_factory.rb → cloud_resource_factory.rb} +8 -0
- data/lib/gooddata/cloud_resources/cloud_resources.rb +1 -1
- data/lib/gooddata/cloud_resources/mssql/drivers/.gitkeepme +0 -0
- data/lib/gooddata/cloud_resources/mssql/mssql_client.rb +122 -0
- data/lib/gooddata/cloud_resources/mysql/drivers/.gitkeepme +0 -0
- data/lib/gooddata/cloud_resources/mysql/mysql_client.rb +111 -0
- data/lib/gooddata/cloud_resources/postgresql/drivers/.gitkeepme +0 -0
- data/lib/gooddata/cloud_resources/postgresql/postgresql_client.rb +106 -0
- data/lib/gooddata/cloud_resources/snowflake/snowflake_client.rb +18 -1
- data/lib/gooddata/commands/scaffold.rb +9 -10
- data/lib/gooddata/core/nil_logger.rb +3 -1
- data/lib/gooddata/helpers/data_helper.rb +9 -5
- data/lib/gooddata/helpers/global_helpers.rb +6 -5
- data/lib/gooddata/lcm/actions/associate_clients.rb +8 -2
- data/lib/gooddata/lcm/actions/base_action.rb +0 -2
- data/lib/gooddata/lcm/actions/collect_meta.rb +3 -1
- data/lib/gooddata/lcm/actions/migrate_gdc_date_dimension.rb +3 -2
- data/lib/gooddata/lcm/actions/provision_clients.rb +31 -10
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +56 -7
- data/lib/gooddata/lcm/actions/synchronize_dataset_mappings.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +19 -8
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +16 -9
- data/lib/gooddata/lcm/actions/synchronize_users.rb +7 -6
- data/lib/gooddata/lcm/actions/update_metric_formats.rb +185 -0
- data/lib/gooddata/lcm/data/delete_from_lcm_release.sql.erb +5 -0
- data/lib/gooddata/lcm/helpers/release_table_helper.rb +42 -8
- data/lib/gooddata/lcm/lcm2.rb +5 -2
- data/lib/gooddata/lcm/types/base_type.rb +0 -2
- data/lib/gooddata/mixins/md_object_query.rb +9 -6
- data/lib/gooddata/models/blueprint/project_blueprint.rb +0 -2
- data/lib/gooddata/models/client.rb +14 -12
- data/lib/gooddata/models/data_source.rb +668 -0
- data/lib/gooddata/models/dataset_mapping.rb +36 -0
- data/lib/gooddata/models/domain.rb +3 -2
- 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/label.rb +26 -27
- data/lib/gooddata/models/metadata/visualization_object.rb +50 -0
- data/lib/gooddata/models/project.rb +66 -19
- data/lib/gooddata/models/schedule.rb +13 -1
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +58 -54
- data/lib/gooddata/models/user_group.rb +0 -1
- data/lib/gooddata/rest/connection.rb +6 -4
- data/lib/gooddata/rest/phmap.rb +2 -1
- data/lib/gooddata.rb +2 -0
- data/rubydev_public.gpg.encrypted +51 -51
- data/rubydev_secret_keys.gpg.encrypted +109 -109
- metadata +51 -27
- data/DEPENDENCIES.md +0 -880
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +0 -37
- data/lib/gooddata/helpers/data_source_helpers.rb +0 -47
data/LICENSE.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2021 GoodData Corporation. All rights reserved.
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
data/README.md
CHANGED
|
@@ -18,8 +18,7 @@ Feel free to check out the [GoodData community website](http://community.gooddat
|
|
|
18
18
|
[](http://rubygems.org/gems/gooddata)
|
|
19
19
|
[](https://gemnasium.com/gooddata/gooddata-ruby)
|
|
20
20
|
[](https://codeclimate.com/github/gooddata/gooddata-ruby)
|
|
21
|
-
[](https://coveralls.io/r/gooddata/gooddata-ruby)
|
|
21
|
+
[](https://github.com/gooddata/gooddata-ruby/actions/workflows/build.yml/)
|
|
23
22
|
|
|
24
23
|
## Supported versions
|
|
25
24
|
|
|
@@ -95,4 +94,5 @@ For full contributor info see [contributors page](https://github.com/gooddata/go
|
|
|
95
94
|
|
|
96
95
|
## Copyright
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
(c) 2010-2021 GoodData Corporation
|
|
98
|
+
This repository is governed by the terms and conditions in the LICENSE. This repository contains a number of open source packages detailed in NOTICES, including the GoodData Ruby SDK, which is licensed under the BSD-3-Clause license and contains additional open source components detailed in the file called LICENSE_FOR_RUBY_SDK_COMPONENT.
|
data/Rakefile
CHANGED
|
@@ -33,7 +33,14 @@ namespace :gem do
|
|
|
33
33
|
desc "Release gem version #{GoodData::VERSION} to rubygems"
|
|
34
34
|
task :release do
|
|
35
35
|
gem = "gooddata-#{GoodData::VERSION}.gem"
|
|
36
|
-
|
|
36
|
+
origin_license_file = 'LICENSE'
|
|
37
|
+
new_license_file = 'LICENSE_FOR_RUBY_SDK_COMPONENT.txt'
|
|
38
|
+
notices_file = 'NOTICES.txt'
|
|
39
|
+
File.delete(origin_license_file) if File.exist?(origin_license_file)
|
|
40
|
+
File.delete(notices_file) if File.exist?(notices_file)
|
|
41
|
+
puts "Deleted files: #{origin_license_file} and #{notices_file}"
|
|
42
|
+
File.rename(new_license_file, origin_license_file) if File.exists?(new_license_file)
|
|
43
|
+
puts "Renamed file #{new_license_file} to #{origin_license_file}"
|
|
37
44
|
puts "Building #{gem} ..."
|
|
38
45
|
res = `gem build ./gooddata.gemspec`
|
|
39
46
|
file = res.match('File: (.*)')[1]
|
data/SDK_VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.2.0
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.7.
|
|
1
|
+
3.7.43
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'optparse'
|
|
2
2
|
|
|
3
|
-
example = 'Usage example: GD_ENV=testing GD_SPEC_PASSWORD=
|
|
3
|
+
example = 'Usage example: GD_ENV=testing GD_SPEC_PASSWORD= bundle exec ruby bin/test_projects_cleanup.rb'
|
|
4
4
|
|
|
5
5
|
options = {}
|
|
6
6
|
OptionParser.new do |opts|
|
|
@@ -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
|
data/ci/mssql/pom.xml
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
5
|
+
<modelVersion>4.0.0</modelVersion>
|
|
6
|
+
|
|
7
|
+
<groupId>com.gooddata.lcm</groupId>
|
|
8
|
+
<artifactId>lcm-mssql-driver</artifactId>
|
|
9
|
+
<version>1.0-SNAPSHOT</version>
|
|
10
|
+
|
|
11
|
+
<dependencies>
|
|
12
|
+
<dependency>
|
|
13
|
+
<groupId>com.microsoft.sqlserver</groupId>
|
|
14
|
+
<artifactId>mssql-jdbc</artifactId>
|
|
15
|
+
<version>9.3.1.jre8-preview</version>
|
|
16
|
+
</dependency>
|
|
17
|
+
<dependency>
|
|
18
|
+
<groupId>com.microsoft.azure</groupId>
|
|
19
|
+
<artifactId>msal4j</artifactId>
|
|
20
|
+
<version>1.10.1</version>
|
|
21
|
+
</dependency>
|
|
22
|
+
<dependency>
|
|
23
|
+
<groupId>org.slf4j</groupId>
|
|
24
|
+
<artifactId>slf4j-api</artifactId>
|
|
25
|
+
<version>1.7.2</version>
|
|
26
|
+
</dependency>
|
|
27
|
+
</dependencies>
|
|
28
|
+
|
|
29
|
+
<profiles>
|
|
30
|
+
<profile>
|
|
31
|
+
<id>binary-packaging</id>
|
|
32
|
+
<build>
|
|
33
|
+
<plugins>
|
|
34
|
+
<plugin>
|
|
35
|
+
<artifactId>maven-dependency-plugin</artifactId>
|
|
36
|
+
<executions>
|
|
37
|
+
<execution>
|
|
38
|
+
<phase>package</phase>
|
|
39
|
+
<goals>
|
|
40
|
+
<goal>copy-dependencies</goal>
|
|
41
|
+
</goals>
|
|
42
|
+
<configuration>
|
|
43
|
+
<outputDirectory>${project.build.directory}</outputDirectory>
|
|
44
|
+
<!-- compile scope gives runtime and compile dependencies (skips test deps) -->
|
|
45
|
+
<includeScope>runtime</includeScope>
|
|
46
|
+
</configuration>
|
|
47
|
+
</execution>
|
|
48
|
+
</executions>
|
|
49
|
+
</plugin>
|
|
50
|
+
</plugins>
|
|
51
|
+
</build>
|
|
52
|
+
</profile>
|
|
53
|
+
</profiles>
|
|
54
|
+
|
|
55
|
+
<repositories>
|
|
56
|
+
<repository>
|
|
57
|
+
<id>my-repo1</id>
|
|
58
|
+
<name>my custom repo</name>
|
|
59
|
+
<url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
|
|
60
|
+
</repository>
|
|
61
|
+
</repositories>
|
|
62
|
+
</project>
|
data/ci/mysql/pom.xml
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
5
|
+
<modelVersion>4.0.0</modelVersion>
|
|
6
|
+
|
|
7
|
+
<groupId>com.gooddata.lcm</groupId>
|
|
8
|
+
<artifactId>lcm-mysql-driver</artifactId>
|
|
9
|
+
<version>1.0-SNAPSHOT</version>
|
|
10
|
+
|
|
11
|
+
<dependencies>
|
|
12
|
+
<dependency>
|
|
13
|
+
<groupId>mysql</groupId>
|
|
14
|
+
<artifactId>mysql-connector-java</artifactId>
|
|
15
|
+
<version>8.0.25</version>
|
|
16
|
+
</dependency>
|
|
17
|
+
<dependency>
|
|
18
|
+
<groupId>org.slf4j</groupId>
|
|
19
|
+
<artifactId>slf4j-api</artifactId>
|
|
20
|
+
<version>1.7.2</version>
|
|
21
|
+
</dependency>
|
|
22
|
+
</dependencies>
|
|
23
|
+
|
|
24
|
+
<profiles>
|
|
25
|
+
<profile>
|
|
26
|
+
<id>binary-packaging</id>
|
|
27
|
+
<build>
|
|
28
|
+
<plugins>
|
|
29
|
+
<plugin>
|
|
30
|
+
<artifactId>maven-dependency-plugin</artifactId>
|
|
31
|
+
<executions>
|
|
32
|
+
<execution>
|
|
33
|
+
<phase>package</phase>
|
|
34
|
+
<goals>
|
|
35
|
+
<goal>copy-dependencies</goal>
|
|
36
|
+
</goals>
|
|
37
|
+
<configuration>
|
|
38
|
+
<outputDirectory>${project.build.directory}</outputDirectory>
|
|
39
|
+
<!-- compile scope gives runtime and compile dependencies (skips test deps) -->
|
|
40
|
+
<includeScope>runtime</includeScope>
|
|
41
|
+
</configuration>
|
|
42
|
+
</execution>
|
|
43
|
+
</executions>
|
|
44
|
+
</plugin>
|
|
45
|
+
</plugins>
|
|
46
|
+
</build>
|
|
47
|
+
</profile>
|
|
48
|
+
</profiles>
|
|
49
|
+
|
|
50
|
+
<repositories>
|
|
51
|
+
<repository>
|
|
52
|
+
<id>my-repo1</id>
|
|
53
|
+
<name>my custom repo</name>
|
|
54
|
+
<url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
|
|
55
|
+
</repository>
|
|
56
|
+
</repositories>
|
|
57
|
+
</project>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
5
|
+
<modelVersion>4.0.0</modelVersion>
|
|
6
|
+
|
|
7
|
+
<groupId>com.gooddata.lcm</groupId>
|
|
8
|
+
<artifactId>lcm-postgresql-driver</artifactId>
|
|
9
|
+
<version>1.0-SNAPSHOT</version>
|
|
10
|
+
|
|
11
|
+
<dependencies>
|
|
12
|
+
<dependency>
|
|
13
|
+
<groupId>org.postgresql</groupId>
|
|
14
|
+
<artifactId>postgresql</artifactId>
|
|
15
|
+
<version>42.2.19</version>
|
|
16
|
+
</dependency>
|
|
17
|
+
<dependency>
|
|
18
|
+
<groupId>org.slf4j</groupId>
|
|
19
|
+
<artifactId>slf4j-api</artifactId>
|
|
20
|
+
<version>1.7.2</version>
|
|
21
|
+
</dependency>
|
|
22
|
+
</dependencies>
|
|
23
|
+
|
|
24
|
+
<profiles>
|
|
25
|
+
<profile>
|
|
26
|
+
<id>binary-packaging</id>
|
|
27
|
+
<build>
|
|
28
|
+
<plugins>
|
|
29
|
+
<plugin>
|
|
30
|
+
<artifactId>maven-dependency-plugin</artifactId>
|
|
31
|
+
<executions>
|
|
32
|
+
<execution>
|
|
33
|
+
<phase>package</phase>
|
|
34
|
+
<goals>
|
|
35
|
+
<goal>copy-dependencies</goal>
|
|
36
|
+
</goals>
|
|
37
|
+
<configuration>
|
|
38
|
+
<outputDirectory>${project.build.directory}</outputDirectory>
|
|
39
|
+
<!-- compile scope gives runtime and compile dependencies (skips test deps) -->
|
|
40
|
+
<includeScope>runtime</includeScope>
|
|
41
|
+
</configuration>
|
|
42
|
+
</execution>
|
|
43
|
+
</executions>
|
|
44
|
+
</plugin>
|
|
45
|
+
</plugins>
|
|
46
|
+
</build>
|
|
47
|
+
</profile>
|
|
48
|
+
</profiles>
|
|
49
|
+
|
|
50
|
+
<repositories>
|
|
51
|
+
<repository>
|
|
52
|
+
<id>my-repo1</id>
|
|
53
|
+
<name>my custom repo</name>
|
|
54
|
+
<url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
|
|
55
|
+
</repository>
|
|
56
|
+
</repositories>
|
|
57
|
+
</project>
|
data/ci/redshift/pom.xml
CHANGED
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
<repository>
|
|
68
68
|
<id>my-repo1</id>
|
|
69
69
|
<name>my custom repo</name>
|
|
70
|
-
<url>https://
|
|
70
|
+
<url>https://sonatype-nexus.intgdc.com/repository/public/</url>
|
|
71
71
|
</repository>
|
|
72
72
|
</repositories>
|
|
73
73
|
</project>
|
|
@@ -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
|
+
N/WeNcE=
|
data/gdc_fossa_ruby_sdk.yaml
CHANGED
data/gooddata.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ require 'gooddata/version'
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = 'gooddata'
|
|
7
7
|
s.version = GoodData::VERSION
|
|
8
|
-
s.licenses = ['BSD']
|
|
8
|
+
s.licenses = ['BSD-3-Clause']
|
|
9
9
|
s.platform = 'java' if RUBY_PLATFORM =~ /java/
|
|
10
10
|
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
s.email = 'lcm@gooddata.com'
|
|
25
25
|
s.extra_rdoc_files = %w(LICENSE README.md)
|
|
26
26
|
|
|
27
|
-
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
|
27
|
+
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR).map { |f| f unless %w(NOTICES.txt LICENSE_FOR_RUBY_SDK_COMPONENT.txt).include?(f) }
|
|
28
28
|
s.files.reject! { |fn| fn.start_with? 'spec/' }
|
|
29
29
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
30
30
|
|
|
@@ -55,14 +55,19 @@ Gem::Specification.new do |s|
|
|
|
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', '>= 6.0.3.1', '< 6.
|
|
58
|
+
s.add_dependency 'activesupport', '>= 6.0.3.1', '< 6.2'
|
|
59
59
|
else
|
|
60
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'
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
69
|
+
s.add_dependency 'azure-storage-blob', '~> 1.1.0'
|
|
70
|
+
s.add_dependency 'nokogiri', '~> 1.10.0'
|
|
66
71
|
s.add_dependency 'gli', '~> 2.15'
|
|
67
72
|
s.add_dependency 'gooddata_datawarehouse', '~> 0.0.10' if RUBY_PLATFORM == 'java'
|
|
68
73
|
s.add_dependency 'highline', '= 2.0.0.pre.develop.14'
|
|
@@ -74,7 +79,6 @@ Gem::Specification.new do |s|
|
|
|
74
79
|
s.add_dependency 'restforce', '>= 2.4', '< 4.0'
|
|
75
80
|
s.add_dependency 'rest-client', '~> 2.0'
|
|
76
81
|
s.add_dependency 'rubyzip', '~> 1.2', '>= 1.2.1'
|
|
77
|
-
s.add_dependency 'salesforce_bulk_query', '~> 0.2'
|
|
78
82
|
s.add_dependency 'terminal-table', '~> 1.7'
|
|
79
83
|
s.add_dependency 'thread_safe'
|
|
80
84
|
s.add_dependency 'backports'
|
|
@@ -92,4 +92,14 @@ data:
|
|
|
92
92
|
annotations:
|
|
93
93
|
description: "We are hitting CPU limit in LCM namespace."
|
|
94
94
|
summary: "We are hitting CPU limit in LCM namespace."
|
|
95
|
-
|
|
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/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
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2021 GoodData Corporation. All rights reserved.
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
|
6
6
|
|
|
@@ -12,21 +12,47 @@ module GoodData
|
|
|
12
12
|
class AWSMiddleware < Bricks::Middleware
|
|
13
13
|
def call(params)
|
|
14
14
|
params = params.to_hash
|
|
15
|
-
|
|
15
|
+
s3_config = get_s3_config(params)
|
|
16
|
+
|
|
17
|
+
unless s3_config.empty?
|
|
16
18
|
GoodData.logger.info('Setting up AWS-S3 connection')
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
if params.key?('aws_client')
|
|
20
|
+
params['s3_client'] = {}
|
|
21
|
+
elsif params.key?('s3_client')
|
|
22
|
+
params['input_source'] = {} unless params.key?('input_source')
|
|
23
|
+
params['input_source']['bucket'] = params['s3_client']['bucket']
|
|
24
|
+
end
|
|
25
|
+
s3_config = rewrite_for_aws_sdk_v2(s3_config)
|
|
26
|
+
symbolized_config = GoodData::Helpers.symbolize_keys(s3_config)
|
|
27
|
+
params['s3_client']['client'] = Aws::S3::Resource.new(symbolized_config)
|
|
24
28
|
end
|
|
25
29
|
@app.call(params)
|
|
26
30
|
end
|
|
27
31
|
|
|
28
32
|
private
|
|
29
33
|
|
|
34
|
+
def get_s3_config(params)
|
|
35
|
+
s3_config = {}
|
|
36
|
+
if params.key?('aws_client')
|
|
37
|
+
GoodData.logger.warn('Found two configuration aws_client and s3_client for S3 input source, use aws_client configuration') if params.key?('s3_client')
|
|
38
|
+
raise 'Unable to connect to AWS. Parameter "aws_client" seems to be empty' unless params['aws_client']
|
|
39
|
+
raise 'Unable to connect to AWS. Parameter "access_key_id" is missing' if params['aws_client']['access_key_id'].blank?
|
|
40
|
+
raise 'Unable to connect to AWS. Parameter "secret_access_key" is missing' if params['aws_client']['secret_access_key'].blank?
|
|
41
|
+
|
|
42
|
+
s3_config = params['aws_client']
|
|
43
|
+
elsif params.key?('s3_client')
|
|
44
|
+
raise 'Unable to connect to AWS. Parameter "s3_client" seems to be empty' unless params['s3_client']
|
|
45
|
+
raise 'Unable to connect to AWS. Parameter "accessKey" is missing' if params['s3_client']['accessKey'].blank?
|
|
46
|
+
raise 'Unable to connect to AWS. Parameter "secretKey" is missing' if params['s3_client']['secretKey'].blank?
|
|
47
|
+
raise 'Unable to connect to AWS. Parameter "bucket" is missing' if params['s3_client']['bucket'].blank?
|
|
48
|
+
|
|
49
|
+
s3_config['access_key_id'] = params['s3_client']['accessKey']
|
|
50
|
+
s3_config['secret_access_key'] = params['s3_client']['secretKey']
|
|
51
|
+
s3_config['region'] = params['s3_client']['region']
|
|
52
|
+
end
|
|
53
|
+
s3_config
|
|
54
|
+
end
|
|
55
|
+
|
|
30
56
|
def rewrite_for_aws_sdk_v2(config)
|
|
31
57
|
config['region'] = 'us-west-2' unless config['region']
|
|
32
58
|
if config['use_ssl']
|