gooddata 1.3.2-java → 1.3.3-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/.editorconfig +2 -5
- data/.gitignore +1 -1
- data/.travis.yml +105 -8
- data/CHANGELOG.md +41 -0
- data/Dockerfile +4 -1
- data/Dockerfile.ruby +1 -1
- data/Jenkinsfile +4 -1
- data/RELEASING.md +1 -1
- data/VERSION +1 -0
- data/bin/help.sh +3 -0
- data/bin/run_brick.rb +1 -1
- data/bin/test_projects_cleanup.rb +97 -0
- data/gooddata.gemspec +8 -4
- data/lcm.rake +2 -6
- data/lib/gooddata/bricks/hello_world_brick.rb +1 -1
- data/lib/gooddata/bricks/help_brick.rb +17 -0
- data/lib/gooddata/bricks/pipeline.rb +11 -0
- data/lib/gooddata/helpers/global_helpers.rb +4 -1
- data/lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb +12 -6
- data/lib/gooddata/lcm/actions/help.rb +33 -0
- data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +14 -4
- data/lib/gooddata/lcm/actions/synchronize_processes.rb +4 -3
- data/lib/gooddata/lcm/actions/synchronize_schedules.rb +13 -4
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +16 -18
- data/lib/gooddata/lcm/lcm2.rb +3 -23
- data/lib/gooddata/models/domain.rb +4 -1
- data/lib/gooddata/models/process.rb +2 -2
- data/lib/gooddata/models/project.rb +3 -1
- data/lib/gooddata/version.rb +1 -1
- metadata +18 -25
- data/lib/gooddata/lcm/actions/print_actions.rb +0 -58
- data/lib/gooddata/lcm/actions/print_modes.rb +0 -69
- data/lib/gooddata/lcm/actions/print_types.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b088417656bd604e2e3ddefa7919c748d5c8feb093386092776cc3c4ddca8566
|
4
|
+
data.tar.gz: c5834668e787cdef66f31ccc7322ac50de894aac64b4f8ba41b9a933a015adce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd97a0d53c64c3e9431015c8b6052fd67fa9a2014719d93766c81838b878265b4dc543832ed852d9830023450f9be0461e1208f05430d176be78904568772f10
|
7
|
+
data.tar.gz: 00bcfd05b42557d530361a4f74d6cf825058b4e55a97af1aebba5cf7da3cf1b38c10a4a97bf7b93cecf3e71fd9e8a53047507ef193ded8acc100c9138829121c
|
data/.editorconfig
CHANGED
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,24 +1,44 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
3
|
stages:
|
4
|
-
- unit
|
4
|
+
- name: unit
|
5
|
+
if: type IN (push, pull_request)
|
5
6
|
- name: integration
|
6
|
-
if: type IN (api
|
7
|
+
if: type IN (api)
|
8
|
+
- name: periodic
|
9
|
+
if: type IN (cron)
|
10
|
+
- name: cleanup
|
11
|
+
if: type IN (cron)
|
7
12
|
jobs:
|
8
13
|
include:
|
14
|
+
# unit
|
9
15
|
- stage: unit
|
10
16
|
name: unit tests
|
11
17
|
script: bundle exec rake test:unit
|
12
18
|
rvm:
|
13
19
|
- 2.3
|
14
|
-
-
|
20
|
+
- 2.4
|
21
|
+
- 2.5
|
22
|
+
- jruby-9.1.5
|
23
|
+
- jruby-9.1.14
|
24
|
+
- jruby-1.7.19
|
15
25
|
- stage: unit
|
16
26
|
name: pronto code review
|
17
27
|
script: |
|
18
28
|
git remote add upstream https://github.com/gooddata/gooddata-ruby.git
|
19
29
|
git fetch upstream master
|
20
30
|
bundle exec pronto run -c upstream/master --exit-code
|
21
|
-
- stage:
|
31
|
+
- stage: unit
|
32
|
+
name: sdk vcr tests
|
33
|
+
script: VCR_RECORD_MODE=none bundle exec rake test:sdk
|
34
|
+
rvm: jruby-9.1.14
|
35
|
+
- stage: unit
|
36
|
+
name: sdk vcr tests (project)
|
37
|
+
script: VCR_RECORD_MODE=none bundle exec rake test:project
|
38
|
+
rvm: jruby-9.1.14
|
39
|
+
# integration
|
40
|
+
- &lcm-integration-tests
|
41
|
+
stage: integration
|
22
42
|
name: lcm integration tests
|
23
43
|
script: |
|
24
44
|
bundle exec rake -f lcm.rake docker:build
|
@@ -26,11 +46,88 @@ jobs:
|
|
26
46
|
bundle exec rake -f lcm.rake test:integration:docker
|
27
47
|
rvm:
|
28
48
|
- jruby-9.1.7
|
29
|
-
-
|
49
|
+
- &sdk-integration-tests
|
50
|
+
stage: integration
|
30
51
|
name: sdk integration tests
|
31
52
|
script: bundle exec rake test:sdk
|
32
|
-
rvm:
|
33
|
-
|
53
|
+
rvm: 2.5
|
54
|
+
env: VCR_ON=false
|
55
|
+
- &sdk-integration-tests-project
|
56
|
+
stage: integration
|
34
57
|
name: sdk integration tests (project)
|
35
58
|
script: bundle exec rake test:project
|
36
|
-
|
59
|
+
env: VCR_ON=false
|
60
|
+
rvm: 2.5
|
61
|
+
# periodic
|
62
|
+
# staging 1
|
63
|
+
- <<: *lcm-integration-tests
|
64
|
+
stage: periodic
|
65
|
+
name: staging1 - lcm integration tests
|
66
|
+
env:
|
67
|
+
- GD_ENV=staging
|
68
|
+
- VCR_ON=false
|
69
|
+
- <<: *sdk-integration-tests
|
70
|
+
stage: periodic
|
71
|
+
name: staging1 - sdk integration tests
|
72
|
+
env:
|
73
|
+
- GD_ENV=staging
|
74
|
+
- VCR_ON=false
|
75
|
+
- <<: *sdk-integration-tests-project
|
76
|
+
stage: periodic
|
77
|
+
name: staging1 - sdk integration tests (project)
|
78
|
+
env:
|
79
|
+
- GD_ENV=staging
|
80
|
+
- VCR_ON=false
|
81
|
+
# staging 2
|
82
|
+
- <<: *lcm-integration-tests
|
83
|
+
stage: periodic
|
84
|
+
name: staging2 - lcm integration tests
|
85
|
+
env:
|
86
|
+
- GD_ENV=testing
|
87
|
+
- VCR_ON=false
|
88
|
+
- <<: *sdk-integration-tests
|
89
|
+
stage: periodic
|
90
|
+
name: staging2 - sdk integration tests
|
91
|
+
env:
|
92
|
+
- GD_ENV=testing
|
93
|
+
- VCR_ON=false
|
94
|
+
- <<: *sdk-integration-tests-project
|
95
|
+
stage: periodic
|
96
|
+
name: staging2 - sdk integration tests (project)
|
97
|
+
env:
|
98
|
+
- GD_ENV=testing
|
99
|
+
- VCR_ON=false
|
100
|
+
# staging 3
|
101
|
+
- <<: *lcm-integration-tests
|
102
|
+
stage: periodic
|
103
|
+
name: staging3 - lcm integration tests
|
104
|
+
env:
|
105
|
+
- GD_ENV=development
|
106
|
+
- VCR_ON=false
|
107
|
+
- <<: *sdk-integration-tests
|
108
|
+
stage: periodic
|
109
|
+
name: staging3 - sdk integration tests
|
110
|
+
env:
|
111
|
+
- GD_ENV=development
|
112
|
+
- VCR_ON=false
|
113
|
+
- <<: *sdk-integration-tests-project
|
114
|
+
stage: periodic
|
115
|
+
name: staging3 - sdk integration tests (project)
|
116
|
+
env:
|
117
|
+
- GD_ENV=development
|
118
|
+
- VCR_ON=false
|
119
|
+
- &cleanup
|
120
|
+
stage: cleanup
|
121
|
+
name: staging1 - test environment clean-up
|
122
|
+
script: bundle exec ruby bin/test_projects_cleanup.rb -f
|
123
|
+
env: GD_ENV=staging
|
124
|
+
- <<: *cleanup
|
125
|
+
name: staging2 - test environment clean-up
|
126
|
+
env: GD_ENV=testing
|
127
|
+
- <<: *cleanup
|
128
|
+
name: staging3 - test environment clean-up
|
129
|
+
env: GD_ENV=development
|
130
|
+
notifications:
|
131
|
+
slack:
|
132
|
+
secure: TyYks8rEBJMouWRjRtHZJJm+BIajxgwsoSIpxidZmD5zRk5ssEkGVbuYIvjUN+if1NyM1bmWspTSVX+8g5IDmt9PgcujXVqCbPRvfK90r3obs8A5pHbDnKEue6inqYUjNoqa1D6PkWTS1dTb6xvy8WiAwMGqoFGHnlNs4WFF9N4=
|
133
|
+
on_pull_requests: false
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,45 @@
|
|
1
1
|
# GoodData Ruby SDK Changelog
|
2
|
+
## 1.3.3
|
3
|
+
- Fix git-ignoring project cache
|
4
|
+
- Fix style in vcr configurer
|
5
|
+
- TMA-1205: Fix vcr configurer setup
|
6
|
+
- Describe releasing process more accurately
|
7
|
+
- Fix editorconfig
|
8
|
+
- TMA-1190: Add cleanup stage to travis.yml
|
9
|
+
- gemspec cleanup: transitive deps, email, authors
|
10
|
+
- TMA-1190: Add test env clean-up script
|
11
|
+
- TMA-1185: Record vcr cassettes
|
12
|
+
- TMA-1185: Fix vcr for project cache
|
13
|
+
- TMA-1182: UFB extended spec passing
|
14
|
+
- TRIVIAL: remove redundant suffix
|
15
|
+
- BUGFIX: TMA-1183 don't use make_tmpname
|
16
|
+
- TMA-1181: use correct exit code from lcm integ. docker-compose
|
17
|
+
- TMA-782: do not rely on spec extensions
|
18
|
+
- Revert "TMA-1181: do not use docker for lcm-integration-tests"
|
19
|
+
- TMA-1152: logout and delete users after spec
|
20
|
+
- FEATURE: TMA-1165 Create Help brick and make it default entry point in Docker image
|
21
|
+
- TMA-1181: passing userprov spec
|
22
|
+
- TRIVIAL: use the correct ruby version's for tests in travis
|
23
|
+
- TMA-1181: do not use docker for lcm-integration-tests
|
24
|
+
- Add pry-byebug to dev dependencies
|
25
|
+
- Fix standalone calls to rspec expect
|
26
|
+
- TMA-782: transfer component type process thru lcm
|
27
|
+
- FEATURE: TMA-1165 Remove unused info bricks
|
28
|
+
- Enable travis notifications in slack
|
29
|
+
- Update gooddata.gemspec
|
30
|
+
- TMA-1048 update ads driver dependency
|
31
|
+
- Run unit tests in supported rubies
|
32
|
+
- Run cron job on staging env 1/2/3
|
33
|
+
- FEATURE: TMA-1034 Add Docker label containing LCM bricks version
|
34
|
+
- SETI-2444 fix docker run on jenkins slaves
|
35
|
+
- TMA-1014: parallel do_not_touch logic in UFB
|
36
|
+
- TMA-905: do not print dynamic schedule param value if the param is set as secure
|
37
|
+
- BUGFIX: TMA-1153 Adjust LCM brick syslog to be able to log to Splunk
|
38
|
+
- TMA-1100 fix productized connector deployment
|
39
|
+
- TMA-1071: Record VCR cassettes
|
40
|
+
- TMA-1071: Reenable VCR
|
41
|
+
- Add pry-byebug to dev dependencies
|
42
|
+
|
2
43
|
## 1.3.2
|
3
44
|
- Add rake task for changelog preview
|
4
45
|
- added possibility to run tests on PI
|
data/Dockerfile
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
FROM harbor.intgdc.com/tools/gdc-java-8-jre:b057b53
|
2
2
|
|
3
3
|
ARG GIT_COMMIT=unspecified
|
4
|
+
ARG BRICKS_VERSION=unspecified
|
5
|
+
|
4
6
|
LABEL image_name="GDC LCM Bricks"
|
5
7
|
LABEL maintainer="LCM <lcm@gooddata.com>"
|
6
8
|
LABEL git_repository_url="https://github.com/gooddata/gooddata-ruby/"
|
7
9
|
LABEL parent_image="harbor.intgdc.com/tools/gdc-java-8-jre:b057b53"
|
8
10
|
LABEL git_commit=$GIT_COMMIT
|
11
|
+
LABEL bricks_version=$BRICKS_VERSION
|
9
12
|
|
10
13
|
# which is required by RVM
|
11
14
|
RUN yum install -y curl which \
|
@@ -32,4 +35,4 @@ ADD ./gooddata.gemspec .
|
|
32
35
|
|
33
36
|
RUN /bin/bash -l -c ". /usr/local/rvm/scripts/rvm && bundle install"
|
34
37
|
|
35
|
-
CMD [ "./bin/
|
38
|
+
CMD [ "./bin/help.sh" ]
|
data/Dockerfile.ruby
CHANGED
@@ -2,7 +2,7 @@ FROM ruby:2.3-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++ openssl cmake
|
5
|
+
RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold gnupg libstdc++ openssl cmake curl-dev
|
6
6
|
|
7
7
|
RUN ln -s /usr/bin/make /usr/bin/gmake
|
8
8
|
|
data/Jenkinsfile
CHANGED
data/RELEASING.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
1. `bundle install`
|
8
8
|
1. bump version in [lib/gooddata/version.rb](lib/gooddata/version.rb)
|
9
9
|
1. `bundle exec rake version:bump`
|
10
|
-
1.
|
10
|
+
1. create PR to upstream and have it merged
|
11
11
|
1. `git push origin tags/{version}`
|
12
12
|
1. `rake gem:release`
|
13
13
|
1. `rvm use jruby && rm Gemfile.lock && bundle install`
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.5.0
|
data/bin/help.sh
ADDED
data/bin/run_brick.rb
CHANGED
@@ -9,7 +9,7 @@ BRICK_PARAM_PREFIX = 'BRICK_PARAM_'
|
|
9
9
|
brick_type = !ARGV.empty? ? ARGV[0] : DEFAULT_BRICK
|
10
10
|
|
11
11
|
syslog_node = ENV['NODE_NAME']
|
12
|
-
log = RemoteSyslogLogger.new(syslog_node, 514, :program => brick_type)
|
12
|
+
log = RemoteSyslogLogger.new(syslog_node, 514, :program => "ruby_#{brick_type}", :facility => 'local2')
|
13
13
|
|
14
14
|
log.info "action=#{brick_type}_execution status=init"
|
15
15
|
|
@@ -0,0 +1,97 @@
|
|
1
|
+
example = 'GD_ENV=testing GD_SPEC_PASSWORD=secret bundle exec ruby bin/test_projects_cleanup.rb'
|
2
|
+
|
3
|
+
if ARGV.include?('-h')
|
4
|
+
puts 'Example:'
|
5
|
+
puts example
|
6
|
+
exit 0
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'gooddata'
|
10
|
+
require_relative '../spec/environment/environment'
|
11
|
+
GoodData::Environment.load
|
12
|
+
config = GoodData::Environment::ConnectionHelper::LCM_ENVIRONMENT
|
13
|
+
secrets = GoodData::Environment::ConnectionHelper::SECRETS
|
14
|
+
|
15
|
+
def delete_project_by_title(title, projects, days = 14, force = false)
|
16
|
+
dead_line = Time.now - days * 60 * 60 * 24
|
17
|
+
filtered_projects = projects.select do |p|
|
18
|
+
p.title.match(title) && p.created < dead_line
|
19
|
+
end
|
20
|
+
filtered_projects.each do |project|
|
21
|
+
if force
|
22
|
+
puts "Deleting: #{project.pid} - #{project.title} - #{project.created}"
|
23
|
+
project_add = project.add
|
24
|
+
project_add && project_add.output_stage && project_add.output_stage.delete
|
25
|
+
project.delete
|
26
|
+
else
|
27
|
+
puts "Would delete: #{project.pid} - #{project.title} - #{project.created}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
puts "#{filtered_projects.length} projects matching \"#{title}\" #{'would be ' unless force}deleted."
|
31
|
+
end
|
32
|
+
|
33
|
+
def delete_ads_by_title(title, client, days = 14, force = false)
|
34
|
+
warehouses = client.warehouses
|
35
|
+
return if warehouses.empty?
|
36
|
+
|
37
|
+
deleted = 0
|
38
|
+
warehouses.each do |warehouse|
|
39
|
+
warehouse_title = warehouse.title
|
40
|
+
next unless warehouse_title.match(title)
|
41
|
+
|
42
|
+
dead_line = Time.now - days * 60 * 60 * 24
|
43
|
+
created = Time.parse(warehouse.data["created"])
|
44
|
+
next if created > dead_line
|
45
|
+
|
46
|
+
begin
|
47
|
+
if force
|
48
|
+
puts "Deleting: #{warehouse_title} - #{created}"
|
49
|
+
warehouse.delete
|
50
|
+
else
|
51
|
+
puts "Would delete: #{warehouse_title} - #{created}"
|
52
|
+
end
|
53
|
+
deleted += 1
|
54
|
+
rescue StandardError => e
|
55
|
+
puts "Failed to delete #{warehouse_title}: #{e}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
puts "#{deleted} ADS instances with title \"#{title}\" #{'would be ' unless force}deleted."
|
59
|
+
end
|
60
|
+
|
61
|
+
def clean_up!(client, force, days)
|
62
|
+
projects = client.projects
|
63
|
+
delete_project_by_title(/Insurance Demo Master/, projects, days, force)
|
64
|
+
delete_project_by_title(/Car Demo Master/, projects, days, force)
|
65
|
+
delete_project_by_title(/Insurance Demo Workspace/, projects, days, force)
|
66
|
+
delete_project_by_title(/Client With Conflicting LDM/, projects, days, force)
|
67
|
+
delete_project_by_title(/Development Project/, projects, days, force)
|
68
|
+
delete_project_by_title(/lcm-test-fixture/, projects, days, force)
|
69
|
+
delete_project_by_title(/Test MASTER project/, projects, days, force)
|
70
|
+
delete_project_by_title(/Test MINOR project/, projects, days, force)
|
71
|
+
delete_project_by_title(/^Test project$/, projects, days, force)
|
72
|
+
delete_project_by_title(/userprov-e2e-testing/, projects, days, force)
|
73
|
+
delete_ads_by_title(/Development ADS/, client, days, force)
|
74
|
+
delete_ads_by_title(/Production ADS/, client, days, force)
|
75
|
+
end
|
76
|
+
|
77
|
+
def init_client(username, password, server)
|
78
|
+
GoodData.connect(
|
79
|
+
username,
|
80
|
+
password,
|
81
|
+
server: server,
|
82
|
+
verify_ssl: false,
|
83
|
+
timeout: nil
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
username = config[:username]
|
88
|
+
password = secrets[:password]
|
89
|
+
dev_client = init_client(username, password, "https://#{config[:dev_server]}")
|
90
|
+
prod_client = init_client(username, password, "https://#{config[:prod_server]}")
|
91
|
+
|
92
|
+
force = ARGV.include?('-f')
|
93
|
+
days = 14
|
94
|
+
clean_up!(dev_client, force, days)
|
95
|
+
clean_up!(prod_client, force, days)
|
96
|
+
|
97
|
+
dev_client.disconnect
|
data/gooddata.gemspec
CHANGED
@@ -13,12 +13,15 @@ Gem::Specification.new do |s|
|
|
13
13
|
'Pavel Kolesnikov',
|
14
14
|
'Thomas Watson Steen',
|
15
15
|
'Tomas Svarovsky',
|
16
|
-
'Tomas Korcak'
|
16
|
+
'Tomas Korcak',
|
17
|
+
'Jan Zdrahal',
|
18
|
+
'Petr Gadorek',
|
19
|
+
'Jakub Mahnert'
|
17
20
|
]
|
18
21
|
|
19
22
|
s.summary = 'A convenient Ruby wrapper around the GoodData RESTful API'
|
20
23
|
s.description = 'Use the GoodData::Client class to integrate GoodData into your own application or use the CLI to work with GoodData directly from the command line.'
|
21
|
-
s.email = '
|
24
|
+
s.email = 'lcm@gooddata.com'
|
22
25
|
s.extra_rdoc_files = %w(LICENSE README.md)
|
23
26
|
|
24
27
|
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
@@ -42,6 +45,8 @@ Gem::Specification.new do |s|
|
|
42
45
|
s.add_development_dependency 'yard-rspec', '~> 0.1'
|
43
46
|
s.add_development_dependency 'ZenTest', '~> 4.11'
|
44
47
|
s.add_development_dependency 'pry'
|
48
|
+
s.add_development_dependency 'pry-byebug', '~> 3.6' if RUBY_PLATFORM != 'java'
|
49
|
+
|
45
50
|
s.add_development_dependency 'pronto', '~> 0.9.5' if RUBY_PLATFORM != 'java'
|
46
51
|
s.add_development_dependency 'pronto-rubocop', '~> 0.9.0' if RUBY_PLATFORM != 'java'
|
47
52
|
s.add_development_dependency 'pronto-reek', '~> 0.9.0' if RUBY_PLATFORM != 'java'
|
@@ -53,8 +58,7 @@ Gem::Specification.new do |s|
|
|
53
58
|
s.add_dependency 'docile', '~> 1.1'
|
54
59
|
s.add_dependency 'erubis', '~> 2.7'
|
55
60
|
s.add_dependency 'gli', '~> 2.15'
|
56
|
-
s.add_dependency 'gooddata_datawarehouse' if RUBY_PLATFORM == 'java'
|
57
|
-
s.add_dependency 'gooddata-dss-jdbc', '0.1.12' if RUBY_PLATFORM == 'java'
|
61
|
+
s.add_dependency 'gooddata_datawarehouse', '~> 0.0.9' if RUBY_PLATFORM == 'java'
|
58
62
|
s.add_dependency 'highline', '= 2.0.0.pre.develop.14'
|
59
63
|
s.add_dependency 'json_pure', '~> 1.8'
|
60
64
|
s.add_dependency 'multi_json', '~> 1.12'
|
data/lcm.rake
CHANGED
@@ -92,12 +92,8 @@ namespace :test do
|
|
92
92
|
namespace :integration do
|
93
93
|
desc 'Run integration tests in Docker'
|
94
94
|
task :docker do
|
95
|
-
system('docker-compose -f docker-compose.lcm.yml up --force-recreate --abort-on-container-exit appstore')
|
96
|
-
|
97
|
-
# TODO: use exit-code-from after update to docker-compose >= 1.12
|
98
|
-
# system('docker-compose up --exit-code-from appstore') ||
|
99
|
-
# fail('Test execution failed')
|
100
|
-
system(check_exit_code) || fail('Test execution failed!')
|
95
|
+
system('docker-compose -f docker-compose.lcm.yml up --force-recreate --abort-on-container-exit --exit-code-from appstore appstore') ||
|
96
|
+
fail('Test execution failed!')
|
101
97
|
end
|
102
98
|
end
|
103
99
|
namespace :load do
|
@@ -14,7 +14,7 @@ module GoodData
|
|
14
14
|
# @option [String] 'message' text to be returned in result, if nill - nothing is returned
|
15
15
|
# :reek:UtilityFunction
|
16
16
|
def call(params)
|
17
|
-
GoodData::LCM2.perform('
|
17
|
+
GoodData::LCM2.perform('hello', params)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'brick'
|
2
|
+
|
3
|
+
module GoodData
|
4
|
+
module Bricks
|
5
|
+
# Simple brick used for printing help message about bricks
|
6
|
+
class HelpBrick < GoodData::Bricks::Brick
|
7
|
+
def version
|
8
|
+
'0.0.1'
|
9
|
+
end
|
10
|
+
|
11
|
+
# Help brick entry-point
|
12
|
+
def call(params)
|
13
|
+
GoodData::LCM2.perform('help', params)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -231,7 +231,10 @@ module GoodData
|
|
231
231
|
end
|
232
232
|
|
233
233
|
def decrypt(database64, key)
|
234
|
-
|
234
|
+
if key.nil? || key.empty?
|
235
|
+
puts 'WARNING: No encryption key provided.'
|
236
|
+
return 'no_key_provided'
|
237
|
+
end
|
235
238
|
|
236
239
|
data = Base64.decode64(database64)
|
237
240
|
|
@@ -26,6 +26,9 @@ module GoodData
|
|
26
26
|
|
27
27
|
description 'Value Column'
|
28
28
|
param :param_value_column, instance_of(Type::StringType), required: false
|
29
|
+
|
30
|
+
description 'Should the param be hidden?'
|
31
|
+
param :param_secure_column, instance_of(Type::StringType), required: false
|
29
32
|
end
|
30
33
|
|
31
34
|
class << self
|
@@ -36,6 +39,7 @@ module GoodData
|
|
36
39
|
client_id_column = params.client_id_column || 'client_id'
|
37
40
|
param_name_column = params.param_name_column || 'param_name'
|
38
41
|
param_value_column = params.param_value_column || 'param_value'
|
42
|
+
param_secure_column = params.param_secure_column || 'param_secure'
|
39
43
|
results = []
|
40
44
|
|
41
45
|
input_source = params.dynamic_params.input_source
|
@@ -43,16 +47,18 @@ module GoodData
|
|
43
47
|
input_data = without_check(PARAMS, params) do
|
44
48
|
File.open(data_source.realize(params), 'r:UTF-8')
|
45
49
|
end
|
46
|
-
GoodData.logger.debug("Input data: #{input_data.read}")
|
47
50
|
|
48
51
|
schedule_params = {}
|
49
52
|
|
50
53
|
CSV.foreach(input_data, :headers => true, :return_headers => false, encoding: 'utf-8') do |row|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
is_param_secure = row[param_secure_column] == 'true'
|
55
|
+
safe_to_print_row = row.to_hash
|
56
|
+
safe_to_print_row[param_value_column] = '******' if is_param_secure
|
57
|
+
GoodData.logger.debug("Processing row: #{safe_to_print_row}")
|
58
|
+
results << safe_to_print_row
|
59
|
+
|
60
|
+
client_id = row[client_id_column] || :all_clients
|
61
|
+
schedule_name = row[schedule_title_column] || :all_schedules
|
56
62
|
|
57
63
|
schedule_params[client_id] ||= {}
|
58
64
|
schedule_params[client_id][schedule_name] ||= {}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Copyright (c) 2010-2018 GoodData Corporation. All rights reserved.
|
2
|
+
# This source code is licensed under the BSD-style license found in the
|
3
|
+
# LICENSE file in the root directory of this source tree.
|
4
|
+
|
5
|
+
require 'gooddata/bricks/pipeline'
|
6
|
+
|
7
|
+
require_relative 'base_action'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
module LCM2
|
11
|
+
# Action responsible for printing bricks help
|
12
|
+
class Help < BaseAction
|
13
|
+
DESCRIPTION = 'Print Help Message'
|
14
|
+
|
15
|
+
PARAMS = {}
|
16
|
+
|
17
|
+
class << self
|
18
|
+
BRICK_PIPELINE_SUFFIX = /_brick_pipeline$/
|
19
|
+
|
20
|
+
def create_help
|
21
|
+
GoodData::Bricks::Pipeline.methods
|
22
|
+
.grep(BRICK_PIPELINE_SUFFIX)
|
23
|
+
.map { |method| method.to_s.sub(BRICK_PIPELINE_SUFFIX, '') }
|
24
|
+
.map { |available_brick| { available_brick: available_brick } }
|
25
|
+
end
|
26
|
+
|
27
|
+
def call(_params)
|
28
|
+
{ results: create_help }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -19,10 +19,16 @@ module GoodData
|
|
19
19
|
param :synchronize, array_of(instance_of(Type::SynchronizationInfoType)), required: true, generated: true
|
20
20
|
|
21
21
|
description 'Schedule Additional Parameters'
|
22
|
-
param :additional_params, instance_of(Type::HashType), required: false
|
22
|
+
param :additional_params, instance_of(Type::HashType), required: false, deprecated: true, replacement: :schedule_additional_params
|
23
23
|
|
24
24
|
description 'Schedule Additional Secure Parameters'
|
25
|
-
param :additional_hidden_params, instance_of(Type::HashType), required: false
|
25
|
+
param :additional_hidden_params, instance_of(Type::HashType), required: false, deprecated: true, replacement: :schedule_additional_hidden_params
|
26
|
+
|
27
|
+
description 'Schedule Additional Parameters'
|
28
|
+
param :schedule_additional_params, instance_of(Type::HashType), required: false
|
29
|
+
|
30
|
+
description 'Schedule Additional Secure Parameters'
|
31
|
+
param :schedule_additional_hidden_params, instance_of(Type::HashType), required: false
|
26
32
|
|
27
33
|
description 'Schedule Parameters'
|
28
34
|
param :schedule_params, instance_of(Type::HashType), required: false, default: {}
|
@@ -50,6 +56,10 @@ module GoodData
|
|
50
56
|
def call(params)
|
51
57
|
client = params.gdc_gd_client
|
52
58
|
data_product = params.data_product
|
59
|
+
|
60
|
+
schedule_additional_params = params.schedule_additional_params || params.additional_params
|
61
|
+
schedule_additional_hidden_params = params.schedule_additional_hidden_params || params.additional_hidden_params
|
62
|
+
|
53
63
|
synchronize_segments = params.synchronize.group_by do |info|
|
54
64
|
info[:segment_id]
|
55
65
|
end
|
@@ -125,14 +135,14 @@ module GoodData
|
|
125
135
|
end
|
126
136
|
end
|
127
137
|
|
128
|
-
schedule.update_params(
|
138
|
+
schedule.update_params(schedule_additional_params) if schedule_additional_params
|
129
139
|
|
130
140
|
schedule.update_params(params_for_all_schedules_in_all_projects) if params_for_all_schedules_in_all_projects
|
131
141
|
schedule.update_params(params_for_all_projects[schedule.name]) if params_for_all_projects[schedule.name]
|
132
142
|
schedule.update_params(params_for_all_schedules_in_this_client) if params_for_all_schedules_in_this_client
|
133
143
|
schedule.update_params(params_for_this_client[schedule.name]) if params_for_this_client[schedule.name]
|
134
144
|
|
135
|
-
schedule.update_hidden_params(
|
145
|
+
schedule.update_hidden_params(schedule_additional_hidden_params) if schedule_additional_hidden_params
|
136
146
|
schedule.enable
|
137
147
|
schedule.save
|
138
148
|
end
|
@@ -24,8 +24,8 @@ module GoodData
|
|
24
24
|
description 'Logger'
|
25
25
|
param :gdc_logger, instance_of(Type::GdLogger), required: true
|
26
26
|
|
27
|
-
description 'Additional Hidden Parameters'
|
28
|
-
param :
|
27
|
+
description 'Additional Hidden Parameters of Processes'
|
28
|
+
param :process_additional_hidden_params, instance_of(Type::HashType), required: false
|
29
29
|
end
|
30
30
|
|
31
31
|
RESULT_HEADER = [
|
@@ -59,7 +59,8 @@ module GoodData
|
|
59
59
|
from,
|
60
60
|
to_project,
|
61
61
|
ads_output_stage_uri: info.ads_output_stage_uri,
|
62
|
-
ads_output_stage_prefix: info.ads_output_stage_prefix
|
62
|
+
ads_output_stage_prefix: info.ads_output_stage_prefix,
|
63
|
+
additional_hidden_params: params.process_additional_hidden_params
|
63
64
|
)
|
64
65
|
|
65
66
|
to_project.add.output_stage.client_id = client_id if client_id && to_project.add.output_stage
|
@@ -22,10 +22,16 @@ module GoodData
|
|
22
22
|
param :synchronize, array_of(instance_of(Type::SynchronizationInfoType)), required: true, generated: true
|
23
23
|
|
24
24
|
description 'Schedule Additional Parameters'
|
25
|
-
param :additional_params, instance_of(Type::HashType), required: false
|
25
|
+
param :additional_params, instance_of(Type::HashType), required: false, deprecated: true, replacement: :schedule_additional_params
|
26
26
|
|
27
27
|
description 'Schedule Additional Secure Parameters'
|
28
|
-
param :additional_hidden_params, instance_of(Type::HashType), required: false
|
28
|
+
param :additional_hidden_params, instance_of(Type::HashType), required: false, deprecated: true, replacement: :schedule_additional_hidden_params
|
29
|
+
|
30
|
+
description 'Schedule Additional Parameters'
|
31
|
+
param :schedule_additional_params, instance_of(Type::HashType), required: false
|
32
|
+
|
33
|
+
description 'Schedule Additional Secure Parameters'
|
34
|
+
param :schedule_additional_hidden_params, instance_of(Type::HashType), required: false
|
29
35
|
|
30
36
|
description 'Logger'
|
31
37
|
param :gdc_logger, instance_of(Type::GdLogger), required: true
|
@@ -47,6 +53,9 @@ module GoodData
|
|
47
53
|
client = params.gdc_gd_client
|
48
54
|
development_client = params.development_client
|
49
55
|
|
56
|
+
schedule_additional_params = params.schedule_additional_params || params.additional_params
|
57
|
+
schedule_additional_hidden_params = params.schedule_additional_hidden_params || params.additional_hidden_params
|
58
|
+
|
50
59
|
params.synchronize.peach do |info|
|
51
60
|
from_project = info.from
|
52
61
|
to_projects = info.to
|
@@ -68,8 +77,8 @@ module GoodData
|
|
68
77
|
# s.update_params('GOODOT_CUSTOM_PROJECT_ID' => c.id)
|
69
78
|
# s.update_params('CLIENT_ID' => c.id)
|
70
79
|
# s.update_params('SEGMENT_ID' => segment.id)
|
71
|
-
schedule.update_params(
|
72
|
-
schedule.update_hidden_params(
|
80
|
+
schedule.update_params(schedule_additional_params || {})
|
81
|
+
schedule.update_hidden_params(schedule_additional_hidden_params || {})
|
73
82
|
schedule.disable
|
74
83
|
schedule.save
|
75
84
|
|
@@ -90,13 +90,16 @@ module GoodData
|
|
90
90
|
client = params.gdc_gd_client
|
91
91
|
domain_name = params.organization || params.domain
|
92
92
|
fail "Either organisation or domain has to be specified in params" unless domain_name
|
93
|
+
|
93
94
|
domain = client.domain(domain_name) if domain_name
|
94
95
|
project = client.projects(params.gdc_project) || client.projects(params.gdc_project_id)
|
95
96
|
fail "Either project or project_id has to be specified in params" unless project
|
97
|
+
|
96
98
|
data_product = params.data_product
|
97
99
|
|
98
100
|
config = params.filters_config
|
99
101
|
fail 'User filters brick requires configuration how the filter should be setup. For this use the param "filters_config"' if config.blank?
|
102
|
+
|
100
103
|
symbolized_config = GoodData::Helpers.deep_dup(config)
|
101
104
|
symbolized_config = GoodData::Helpers.symbolize_keys(symbolized_config)
|
102
105
|
symbolized_config[:labels] = symbolized_config[:labels].map { |l| GoodData::Helpers.symbolize_keys(l) }
|
@@ -133,6 +136,7 @@ module GoodData
|
|
133
136
|
user_filters.group_by { |u| u[:pid] }.flat_map.pmap do |id, new_filters|
|
134
137
|
users = users_by_project[id]
|
135
138
|
fail "The #{multiple_projects_column} cannot be empty" if id.blank?
|
139
|
+
|
136
140
|
if mode == 'sync_multiple_projects_based_on_custom_id'
|
137
141
|
current_project = domain.clients(id, data_product).project
|
138
142
|
elsif mode == 'sync_multiple_projects_based_on_pid'
|
@@ -154,40 +158,34 @@ module GoodData
|
|
154
158
|
user_filters.group_by { |u| u[multiple_projects_column] }.flat_map.pmap do |client_id, new_filters|
|
155
159
|
users = users_by_project[client_id]
|
156
160
|
fail "Client id cannot be empty" if client_id.blank?
|
161
|
+
|
157
162
|
c = domain.clients(client_id, data_product)
|
158
163
|
if params.segments && !segment_uris.include?(c.segment_uri)
|
159
|
-
|
164
|
+
params.gdc_logger.warn "Client #{client_id} is outside segments_filter #{params.segments}"
|
160
165
|
next
|
161
166
|
end
|
162
167
|
current_project = c.project
|
163
168
|
fail "Client #{client_id} does not have project." unless current_project
|
169
|
+
|
164
170
|
working_client_ids << client_id
|
165
171
|
partial_results = sync_user_filters(current_project, new_filters, run_params.merge(users_brick_input: users), symbolized_config)
|
166
172
|
results.concat(partial_results[:results])
|
167
173
|
end
|
168
174
|
|
169
175
|
unless run_params[:do_not_touch_filters_that_are_not_mentioned]
|
170
|
-
domain_clients.
|
176
|
+
domain_clients.peach do |c|
|
171
177
|
next if working_client_ids.include?(c.client_id)
|
178
|
+
|
172
179
|
begin
|
173
180
|
current_project = c.project
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
end
|
178
|
-
unless current_project
|
179
|
-
puts "Client #{c.client_id} has no project."
|
180
|
-
next
|
181
|
-
end
|
182
|
-
if current_project.deleted?
|
183
|
-
puts "Project #{current_project.pid} of client #{c.client_id} is deleted."
|
184
|
-
next
|
185
|
-
end
|
181
|
+
users = users_by_project[c.client_id]
|
182
|
+
params.gdc_logger.info "Delete all filters in project #{current_project.pid} of client #{c.client_id}"
|
183
|
+
current_results = sync_user_filters(current_project, [], run_params.merge(users_brick_input: users), symbolized_config)
|
186
184
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
185
|
+
results.concat(current_results[:results])
|
186
|
+
rescue StandardError => e
|
187
|
+
params.gdc_logger.error "Failed to clear filters of #{c.client_id} due to: #{e.inspect}"
|
188
|
+
end
|
191
189
|
end
|
192
190
|
end
|
193
191
|
|
data/lib/gooddata/lcm/lcm2.rb
CHANGED
@@ -75,32 +75,15 @@ module GoodData
|
|
75
75
|
end
|
76
76
|
|
77
77
|
MODES = {
|
78
|
-
# Low Level Commands
|
79
|
-
|
80
|
-
actions: [
|
81
|
-
PrintActions
|
82
|
-
],
|
83
78
|
|
84
79
|
hello: [
|
85
80
|
HelloWorld
|
86
81
|
],
|
87
82
|
|
88
|
-
|
89
|
-
|
90
|
-
],
|
91
|
-
|
92
|
-
info: [
|
93
|
-
PrintTypes,
|
94
|
-
PrintActions,
|
95
|
-
PrintModes
|
96
|
-
],
|
97
|
-
|
98
|
-
types: [
|
99
|
-
PrintTypes
|
83
|
+
help: [
|
84
|
+
Help
|
100
85
|
],
|
101
86
|
|
102
|
-
## Bricks
|
103
|
-
|
104
87
|
release: [
|
105
88
|
EnsureReleaseTable,
|
106
89
|
CollectDataProduct,
|
@@ -170,11 +153,8 @@ module GoodData
|
|
170
153
|
|
171
154
|
schedules_execution: [
|
172
155
|
ExecuteSchedules
|
173
|
-
],
|
174
|
-
|
175
|
-
hello_world: [
|
176
|
-
HelloWorld
|
177
156
|
]
|
157
|
+
|
178
158
|
}
|
179
159
|
|
180
160
|
MODE_NAMES = MODES.keys
|
@@ -365,7 +365,10 @@ Available values for setting language are: #{available_languages}."
|
|
365
365
|
# use fuzzy_get_user.
|
366
366
|
#
|
367
367
|
# @param [String] name Name to look for
|
368
|
-
# @param [Array<GoodData::User>]user_list
|
368
|
+
# @param [Array<GoodData::User>] user_list
|
369
|
+
# Optional cached list of users used for look-ups.
|
370
|
+
# WARNING: If not specified, in the worst case the
|
371
|
+
# method gets all users from the domain!
|
369
372
|
# @return [GoodDta::Membership] User
|
370
373
|
def get_user(name, user_list = users)
|
371
374
|
return member(name, user_list) if name.instance_of?(GoodData::Membership)
|
@@ -187,8 +187,8 @@ module GoodData
|
|
187
187
|
def deploy_component(data, options = { client: GoodData.client, project: GoodData.project })
|
188
188
|
client, project = GoodData.get_client_and_project(options)
|
189
189
|
data = { process: data } unless data[:process]
|
190
|
-
data[:process] = GoodData::Helpers.symbolize_keys(data[:process]).select { |k| [
|
191
|
-
data[:process][:component] = GoodData::Helpers.symbolize_keys(data[:process][:component]).select { |k| [
|
190
|
+
data[:process] = GoodData::Helpers.symbolize_keys(data[:process]).select { |k| %i[type name component].include? k }
|
191
|
+
data[:process][:component] = GoodData::Helpers.symbolize_keys(data[:process][:component]).select { |k| %i[name version configLocation].include? k }
|
192
192
|
|
193
193
|
# a feature flag is required to create component type processes
|
194
194
|
client.post "/gdc/projects/#{project.pid}/projectFeatureFlags",
|
@@ -262,6 +262,7 @@ module GoodData
|
|
262
262
|
def transfer_processes(from_project, to_project, options = {})
|
263
263
|
options = GoodData::Helpers.symbolize_keys(options)
|
264
264
|
to_project_processes = to_project.processes
|
265
|
+
additional_hidden_params = options[:additional_hidden_params] || {}
|
265
266
|
result = from_project.processes.uniq(&:name).map do |process|
|
266
267
|
fail "The process name #{process.name} must be unique in transfered project #{to_project}" if to_project_processes.count { |p| p.name == process.name } > 1
|
267
268
|
next if process.type == :dataload
|
@@ -272,7 +273,8 @@ module GoodData
|
|
272
273
|
GoodData::Process.deploy_from_appstore(process.path, name: process.name, client: to_project.client, project: to_project)
|
273
274
|
elsif process.component
|
274
275
|
to_process.delete if to_process
|
275
|
-
GoodData::
|
276
|
+
process_hash = GoodData::Helpers::DeepMergeableHash[GoodData::Helpers.symbolize_keys(process.to_hash)].deep_merge(additional_hidden_params)
|
277
|
+
GoodData::Process.deploy_component(process_hash, project: to_project, client: to_project.client)
|
276
278
|
else
|
277
279
|
Dir.mktmpdir('etl_transfer') do |dir|
|
278
280
|
dir = Pathname(dir)
|
data/lib/gooddata/version.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gooddata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Pavel Kolesnikov
|
8
8
|
- Thomas Watson Steen
|
9
9
|
- Tomas Svarovsky
|
10
10
|
- Tomas Korcak
|
11
|
+
- Jan Zdrahal
|
12
|
+
- Petr Gadorek
|
13
|
+
- Jakub Mahnert
|
11
14
|
autorequire:
|
12
15
|
bindir: bin
|
13
16
|
cert_chain: []
|
14
|
-
date: 2018-
|
17
|
+
date: 2018-11-23 00:00:00.000000000 Z
|
15
18
|
dependencies:
|
16
19
|
- !ruby/object:Gem::Dependency
|
17
20
|
requirement: !ruby/object:Gem::Requirement
|
@@ -282,31 +285,17 @@ dependencies:
|
|
282
285
|
- !ruby/object:Gem::Dependency
|
283
286
|
requirement: !ruby/object:Gem::Requirement
|
284
287
|
requirements:
|
285
|
-
- - "
|
288
|
+
- - "~>"
|
286
289
|
- !ruby/object:Gem::Version
|
287
|
-
version:
|
290
|
+
version: 0.0.9
|
288
291
|
name: gooddata_datawarehouse
|
289
292
|
prerelease: false
|
290
293
|
type: :runtime
|
291
294
|
version_requirements: !ruby/object:Gem::Requirement
|
292
295
|
requirements:
|
293
|
-
- - "
|
294
|
-
- !ruby/object:Gem::Version
|
295
|
-
version: '0'
|
296
|
-
- !ruby/object:Gem::Dependency
|
297
|
-
requirement: !ruby/object:Gem::Requirement
|
298
|
-
requirements:
|
299
|
-
- - '='
|
300
|
-
- !ruby/object:Gem::Version
|
301
|
-
version: 0.1.12
|
302
|
-
name: gooddata-dss-jdbc
|
303
|
-
prerelease: false
|
304
|
-
type: :runtime
|
305
|
-
version_requirements: !ruby/object:Gem::Requirement
|
306
|
-
requirements:
|
307
|
-
- - '='
|
296
|
+
- - "~>"
|
308
297
|
- !ruby/object:Gem::Version
|
309
|
-
version: 0.
|
298
|
+
version: 0.0.9
|
310
299
|
- !ruby/object:Gem::Dependency
|
311
300
|
requirement: !ruby/object:Gem::Requirement
|
312
301
|
requirements:
|
@@ -497,15 +486,17 @@ dependencies:
|
|
497
486
|
version: '0'
|
498
487
|
description: Use the GoodData::Client class to integrate GoodData into your own application
|
499
488
|
or use the CLI to work with GoodData directly from the command line.
|
500
|
-
email:
|
489
|
+
email: lcm@gooddata.com
|
501
490
|
executables:
|
502
491
|
- gitflow-init.sh
|
503
492
|
- gooddata
|
504
493
|
- hello_world.sh
|
494
|
+
- help.sh
|
505
495
|
- provisioning.sh
|
506
496
|
- release.sh
|
507
497
|
- rollout.sh
|
508
498
|
- run_brick.rb
|
499
|
+
- test_projects_cleanup.rb
|
509
500
|
- user_filters.sh
|
510
501
|
- users.sh
|
511
502
|
extensions: []
|
@@ -539,14 +530,17 @@ files:
|
|
539
530
|
- RELEASING.md
|
540
531
|
- Rakefile
|
541
532
|
- TODO.md
|
533
|
+
- VERSION
|
542
534
|
- authors.sh
|
543
535
|
- bin/gitflow-init.sh
|
544
536
|
- bin/gooddata
|
545
537
|
- bin/hello_world.sh
|
538
|
+
- bin/help.sh
|
546
539
|
- bin/provisioning.sh
|
547
540
|
- bin/release.sh
|
548
541
|
- bin/rollout.sh
|
549
542
|
- bin/run_brick.rb
|
543
|
+
- bin/test_projects_cleanup.rb
|
550
544
|
- bin/user_filters.sh
|
551
545
|
- bin/users.sh
|
552
546
|
- ci.rake
|
@@ -566,6 +560,7 @@ files:
|
|
566
560
|
- lib/gooddata/bricks/brick.rb
|
567
561
|
- lib/gooddata/bricks/bricks.rb
|
568
562
|
- lib/gooddata/bricks/hello_world_brick.rb
|
563
|
+
- lib/gooddata/bricks/help_brick.rb
|
569
564
|
- lib/gooddata/bricks/middleware/aws_middleware.rb
|
570
565
|
- lib/gooddata/bricks/middleware/base_middleware.rb
|
571
566
|
- lib/gooddata/bricks/middleware/bench_middleware.rb
|
@@ -677,10 +672,8 @@ files:
|
|
677
672
|
- lib/gooddata/lcm/actions/ensure_technical_users_project.rb
|
678
673
|
- lib/gooddata/lcm/actions/execute_schedules.rb
|
679
674
|
- lib/gooddata/lcm/actions/hello_world.rb
|
675
|
+
- lib/gooddata/lcm/actions/help.rb
|
680
676
|
- lib/gooddata/lcm/actions/import_object_collections.rb
|
681
|
-
- lib/gooddata/lcm/actions/print_actions.rb
|
682
|
-
- lib/gooddata/lcm/actions/print_modes.rb
|
683
|
-
- lib/gooddata/lcm/actions/print_types.rb
|
684
677
|
- lib/gooddata/lcm/actions/provision_clients.rb
|
685
678
|
- lib/gooddata/lcm/actions/purge_clients.rb
|
686
679
|
- lib/gooddata/lcm/actions/rename_existing_client_projects.rb
|
@@ -908,7 +901,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
908
901
|
version: '0'
|
909
902
|
requirements: []
|
910
903
|
rubyforge_project:
|
911
|
-
rubygems_version: 2.6.
|
904
|
+
rubygems_version: 2.6.13
|
912
905
|
signing_key:
|
913
906
|
specification_version: 4
|
914
907
|
summary: A convenient Ruby wrapper around the GoodData RESTful API
|
@@ -1,58 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
#
|
3
|
-
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
4
|
-
# This source code is licensed under the BSD-style license found in the
|
5
|
-
# LICENSE file in the root directory of this source tree.
|
6
|
-
|
7
|
-
require_relative 'base_action'
|
8
|
-
|
9
|
-
module GoodData
|
10
|
-
module LCM2
|
11
|
-
class PrintActions < BaseAction
|
12
|
-
DESCRIPTION = 'Print Information About Actions'
|
13
|
-
|
14
|
-
PARAMS = {
|
15
|
-
}
|
16
|
-
|
17
|
-
class << self
|
18
|
-
def call(params)
|
19
|
-
results = []
|
20
|
-
|
21
|
-
actions = GoodData::LCM2::BaseAction.descendants
|
22
|
-
|
23
|
-
actions.each do |action|
|
24
|
-
action_params = action.const_get(:PARAMS)
|
25
|
-
action_params_keys = action_params.keys
|
26
|
-
params = action_params_keys.map do |param|
|
27
|
-
param
|
28
|
-
end
|
29
|
-
|
30
|
-
types = action_params.map do |_k, param|
|
31
|
-
param[:type].class.short_name
|
32
|
-
end
|
33
|
-
|
34
|
-
required = action_params.map do |_k, param|
|
35
|
-
param[:opts][:required]
|
36
|
-
end
|
37
|
-
|
38
|
-
defaults = action_params.map do |_k, param|
|
39
|
-
param[:opts][:default]
|
40
|
-
end
|
41
|
-
|
42
|
-
results << {
|
43
|
-
name: action.short_name,
|
44
|
-
description: action.const_get(:DESCRIPTION),
|
45
|
-
params: params.join("\n"),
|
46
|
-
types: types.join("\n"),
|
47
|
-
required: required.join("\n"),
|
48
|
-
default: defaults.join("\n")
|
49
|
-
}
|
50
|
-
end
|
51
|
-
|
52
|
-
# Return results
|
53
|
-
results
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
#
|
3
|
-
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
4
|
-
# This source code is licensed under the BSD-style license found in the
|
5
|
-
# LICENSE file in the root directory of this source tree.
|
6
|
-
|
7
|
-
require_relative 'base_action'
|
8
|
-
|
9
|
-
module GoodData
|
10
|
-
module LCM2
|
11
|
-
class PrintModes < BaseAction
|
12
|
-
DESCRIPTION = 'Print Modes'
|
13
|
-
|
14
|
-
PARAMS = {
|
15
|
-
}
|
16
|
-
|
17
|
-
class << self
|
18
|
-
def call(params)
|
19
|
-
results = []
|
20
|
-
GoodData::LCM2::MODES.keys.each_with_index do |mode, index|
|
21
|
-
actions = GoodData::LCM2::MODES[mode]
|
22
|
-
action_names = actions.map do |k, _action|
|
23
|
-
params_length = k.const_get(:PARAMS).keys.length
|
24
|
-
k.short_name + ("\n" * (params_length > 1 ? params_length - 1 : 0))
|
25
|
-
end
|
26
|
-
|
27
|
-
params = actions.map do |action|
|
28
|
-
action.const_get(:PARAMS).map do |_k, param|
|
29
|
-
param[:name]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
types = actions.map do |action|
|
34
|
-
action.const_get(:PARAMS).map do |_k, param|
|
35
|
-
param[:type]
|
36
|
-
# param[:type].class.short_name
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
required = actions.map do |action|
|
41
|
-
action.const_get(:PARAMS).map do |_k, param|
|
42
|
-
param[:opts][:required]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
defaults = actions.map do |action|
|
47
|
-
action.const_get(:PARAMS).map do |_k, param|
|
48
|
-
param[:opts][:default]
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
results << {
|
53
|
-
'#' => index,
|
54
|
-
mode: mode,
|
55
|
-
actions: action_names.join("\n"),
|
56
|
-
params: params.join("\n"),
|
57
|
-
types: types.join("\n"),
|
58
|
-
required: required.join("\n"),
|
59
|
-
default: defaults.join("\n")
|
60
|
-
}
|
61
|
-
end
|
62
|
-
|
63
|
-
# Return results
|
64
|
-
results
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
#
|
3
|
-
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
4
|
-
# This source code is licensed under the BSD-style license found in the
|
5
|
-
# LICENSE file in the root directory of this source tree.
|
6
|
-
|
7
|
-
require_relative 'base_action'
|
8
|
-
|
9
|
-
module GoodData
|
10
|
-
module LCM2
|
11
|
-
class PrintTypes < BaseAction
|
12
|
-
DESCRIPTION = 'Print Information About Defined Types'
|
13
|
-
|
14
|
-
PARAMS = {
|
15
|
-
}
|
16
|
-
|
17
|
-
class << self
|
18
|
-
def call(_params)
|
19
|
-
results = []
|
20
|
-
|
21
|
-
GoodData::LCM2::Dsl::Dsl::TYPES.each_pair do |k, v|
|
22
|
-
vals = []
|
23
|
-
v.each_pair do |_name, val|
|
24
|
-
vals << val[:type]
|
25
|
-
end
|
26
|
-
|
27
|
-
required = []
|
28
|
-
v.each_pair do |_name, val|
|
29
|
-
required << val[:opts][:required]
|
30
|
-
end
|
31
|
-
|
32
|
-
defaults = []
|
33
|
-
v.each_pair do |_name, val|
|
34
|
-
defaults << val[:opts][:default]
|
35
|
-
end
|
36
|
-
|
37
|
-
results << {
|
38
|
-
class: k.short_name,
|
39
|
-
param: v.keys.join("\n"),
|
40
|
-
type: vals.join("\n"),
|
41
|
-
required: required.join("\n"),
|
42
|
-
default: defaults.join("\n")
|
43
|
-
}
|
44
|
-
end
|
45
|
-
|
46
|
-
# Return results
|
47
|
-
results
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|