gooddata 2.1.8-java → 2.1.9-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 +4 -4
- data/.rubocop.yml +6 -0
- data/.travis.yml +1 -1
- data/Dockerfile +9 -4
- data/Dockerfile.jruby +4 -4
- data/Dockerfile.ruby +5 -4
- data/SDK_VERSION +1 -1
- data/VERSION +1 -1
- data/bin/provision.sh +2 -0
- data/bin/release.sh +2 -0
- data/bin/rollout.sh +2 -0
- data/bin/run_brick.rb +28 -7
- data/bin/test_projects_cleanup.rb +4 -0
- data/bin/user_filters.sh +2 -0
- data/ci.rake +1 -1
- data/dev-gooddata-sso.pub.encrypted +40 -40
- data/gooddata.gemspec +5 -1
- data/lcm.rake +10 -0
- data/lib/gooddata/bricks/middleware/execution_result_middleware.rb +68 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +2 -1
- data/lib/gooddata/bricks/middleware/mask_logger_decorator.rb +5 -1
- data/lib/gooddata/bricks/pipeline.rb +7 -0
- data/lib/gooddata/cloud_resources/cloud_resouce_factory.rb +28 -0
- data/lib/gooddata/cloud_resources/cloud_resource_client.rb +24 -0
- data/lib/gooddata/cloud_resources/cloud_resources.rb +12 -0
- data/lib/gooddata/cloud_resources/redshift/drivers/log4j.properties +15 -0
- data/lib/gooddata/cloud_resources/redshift/redshift_client.rb +100 -0
- data/lib/gooddata/exceptions/invalid_env_error.rb +15 -0
- data/lib/gooddata/helpers/data_helper.rb +10 -0
- data/lib/gooddata/helpers/global_helpers.rb +4 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +4 -7
- data/lib/gooddata/lcm/actions/collect_segment_clients.rb +4 -1
- data/lib/gooddata/lcm/actions/collect_segments.rb +1 -2
- data/lib/gooddata/lcm/actions/create_segment_masters.rb +5 -3
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +1 -1
- data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +1 -2
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +10 -2
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +22 -2
- data/lib/gooddata/lcm/actions/synchronize_users.rb +19 -0
- data/lib/gooddata/lcm/actions/update_release_table.rb +7 -1
- data/lib/gooddata/lcm/exceptions/lcm_execution_error.rb +16 -0
- data/lib/gooddata/lcm/helpers/release_table_helper.rb +16 -8
- data/lib/gooddata/lcm/lcm2.rb +6 -4
- data/lib/gooddata/models/execution.rb +0 -1
- data/lib/gooddata/models/execution_detail.rb +0 -1
- data/lib/gooddata/models/profile.rb +33 -11
- data/lib/gooddata/models/project.rb +2 -2
- data/lib/gooddata/models/project_creator.rb +2 -0
- data/lib/gooddata/models/schedule.rb +0 -1
- data/lib/gooddata/rest/client.rb +2 -2
- data/lib/gooddata/rest/connection.rb +5 -3
- data/rubydev_public.gpg.encrypted +51 -51
- data/rubydev_secret_keys.gpg.encrypted +109 -109
- metadata +12 -5
- data/lib/gooddata/extensions/hash.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc6c846aa117ae4e5809d836ccdd2e0a9b5bd0a223837328c3f0e07065ee6b0f
|
4
|
+
data.tar.gz: d77bc24dd2ce6f01a6c0685cf58d099117a442113dfbb6cfb1c615d71af033a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36a5cae65532cae267891feecd76562e83082c2f812201577c30a42a97d93ddcf2689f4f35166089e9262d9afd08f6564c114e6ad769081a3422909d26b5b8ec
|
7
|
+
data.tar.gz: e77339f7f2a67fa32213aa42619e71ac85f3495a1c9f1110458f71eb15e825e0014c5b9f06c72f85311ad0dcfad4b6dee0700464f6088350beee94ec02256de7
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
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:0dec94a
|
2
2
|
|
3
3
|
ARG RVM_VERSION=stable
|
4
4
|
ARG JRUBY_VERSION=9.2.5.0
|
@@ -6,10 +6,10 @@ 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:0dec94a"
|
10
10
|
|
11
11
|
# which is required by RVM
|
12
|
-
RUN yum install -y curl which patch make git \
|
12
|
+
RUN yum install -y curl which patch make git maven \
|
13
13
|
&& yum clean all \
|
14
14
|
&& rm -rf /var/cache/yum
|
15
15
|
|
@@ -43,12 +43,17 @@ RUN groupadd -g 48 apache \
|
|
43
43
|
USER apache
|
44
44
|
|
45
45
|
ADD ./bin ./bin
|
46
|
-
ADD ./lib ./lib
|
46
|
+
ADD --chown=apache:apache ./lib ./lib
|
47
47
|
ADD ./SDK_VERSION .
|
48
48
|
ADD ./VERSION .
|
49
49
|
ADD ./Gemfile .
|
50
50
|
ADD ./gooddata.gemspec .
|
51
51
|
|
52
|
+
RUN mkdir -p tmp
|
53
|
+
COPY spec/lcm/redshift_driver_pom.xml tmp/pom.xml
|
54
|
+
RUN mvn -f tmp/pom.xml clean install -P binary-packaging
|
55
|
+
RUN cp -rf tmp/target/*.jar ./lib/gooddata/cloud_resources/redshift/drivers/
|
56
|
+
|
52
57
|
RUN bundle install
|
53
58
|
|
54
59
|
ARG GIT_COMMIT=unspecified
|
data/Dockerfile.jruby
CHANGED
@@ -7,11 +7,11 @@ RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold
|
|
7
7
|
# Switch to directory with sources
|
8
8
|
WORKDIR /src
|
9
9
|
ENV HOME=/src
|
10
|
+
ENV BUNDLE_PATH=$HOME/bundle
|
10
11
|
|
11
|
-
RUN gem update --system \
|
12
|
-
&& gem install bundler
|
13
|
-
|
14
|
-
ENV BUNDLE_PATH=/bundle
|
12
|
+
RUN gem update --system 3.0.6 \
|
13
|
+
&& gem install --install-dir $BUNDLE_PATH bundler -v 1.17.3 \
|
14
|
+
&& gem install --install-dir $BUNDLE_PATH rake -v 11.3.0
|
15
15
|
|
16
16
|
ADD . .
|
17
17
|
|
data/Dockerfile.ruby
CHANGED
@@ -8,11 +8,12 @@ RUN ln -s /usr/bin/make /usr/bin/gmake
|
|
8
8
|
|
9
9
|
# Switch to directory with sources
|
10
10
|
WORKDIR /src
|
11
|
+
ENV HOME=/src
|
12
|
+
ENV BUNDLE_PATH=$HOME/bundle
|
11
13
|
|
12
|
-
RUN gem update --system \
|
13
|
-
&& gem install bundler
|
14
|
-
|
15
|
-
ENV BUNDLE_PATH=/bundle
|
14
|
+
RUN gem update --system 3.0.6 \
|
15
|
+
&& gem install --install-dir $BUNDLE_PATH bundler -v 1.17.3 \
|
16
|
+
&& gem install --install-dir $BUNDLE_PATH rake -v 11.3.0
|
16
17
|
|
17
18
|
ADD . .
|
18
19
|
|
data/SDK_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.9
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.7.
|
1
|
+
3.7.14
|
data/bin/provision.sh
CHANGED
data/bin/release.sh
CHANGED
data/bin/rollout.sh
CHANGED
data/bin/run_brick.rb
CHANGED
@@ -14,28 +14,49 @@ def get_brick_params(prefix)
|
|
14
14
|
ENV.select { |k,| k.to_s.match(/^#{prefix}.*/) }.map { |k, v| [k.slice(prefix.length..-1), v] }.to_h
|
15
15
|
end
|
16
16
|
|
17
|
+
def handle_error(params, log, brick_type, error, error_message)
|
18
|
+
execution_log = GoodData.logger
|
19
|
+
execution_log.error "Execution failed. Error: #{error}" unless execution_log.nil?
|
20
|
+
GoodData::Bricks::ExecutionResultMiddleware.update_execution_result(GoodData::Bricks::ExecutionStatus::ERROR, error_message)
|
21
|
+
log.error "action=#{brick_type}_execution status=failed commit_hash=#{params['GOODDATA_RUBY_COMMIT']} execution_id=#{params['GDC_EXECUTION_ID']} exception=#{error}"
|
22
|
+
raise
|
23
|
+
end
|
24
|
+
|
17
25
|
syslog_node = ENV['NODE_NAME']
|
18
26
|
log = RemoteSyslogLogger.new(syslog_node, 514, :program => "ruby_#{brick_type}", :facility => 'local2')
|
19
27
|
|
20
28
|
log.info "action=#{brick_type}_execution status=init"
|
21
29
|
|
22
30
|
begin
|
31
|
+
commit_hash = ENV['GOODDATA_RUBY_COMMIT'] || ''
|
32
|
+
execution_id = ENV['GDC_EXECUTION_ID']
|
33
|
+
log_directory = ENV['GDC_LOG_DIRECTORY'] || '/tmp/'
|
34
|
+
execution_log_path = ENV['GDC_EXECUTION_LOG_PATH']
|
35
|
+
execution_result_log_path = ENV['GDC_EXECUTION_RESULT_LOG_PATH']
|
36
|
+
execution_result_log_params = {
|
37
|
+
'GOODDATA_RUBY_COMMIT' => commit_hash,
|
38
|
+
'GDC_EXECUTION_ID' => execution_id,
|
39
|
+
'GDC_LOG_DIRECTORY' => log_directory,
|
40
|
+
'GDC_EXECUTION_LOG_PATH' => execution_log_path,
|
41
|
+
'GDC_EXECUTION_RESULT_LOG_PATH' => execution_result_log_path
|
42
|
+
}
|
43
|
+
|
23
44
|
brick_pipeline = GoodData::Bricks::Pipeline.send("#{brick_type}_pipeline")
|
24
45
|
normal_params = get_brick_params(BRICK_PARAM_PREFIX)
|
25
46
|
hidden_params = get_brick_params(HIDDEN_BRICK_PARAMS_PREFIX)
|
26
47
|
params = normal_params.merge(hidden_params)
|
27
48
|
|
28
49
|
params['values_to_mask'] = hidden_params.values
|
29
|
-
commit_hash = ENV['GOODDATA_RUBY_COMMIT'] || ''
|
30
|
-
execution_id = ENV['GDC_EXECUTION_ID']
|
31
50
|
params['gooddata_ruby_commit'] = commit_hash
|
32
|
-
params['GDC_LOG_DIRECTORY'] =
|
51
|
+
params['GDC_LOG_DIRECTORY'] = log_directory
|
33
52
|
params['GDC_EXECUTION_ID'] = execution_id
|
53
|
+
params['GDC_EXECUTION_LOG_PATH'] = execution_log_path
|
54
|
+
params['GDC_EXECUTION_RESULT_LOG_PATH'] = execution_result_log_path
|
55
|
+
|
34
56
|
log.info "action=#{brick_type}_execution status=start commit_hash=#{commit_hash} execution_id=#{execution_id}"
|
35
57
|
brick_pipeline.call(params)
|
58
|
+
rescue GoodData::LcmExecutionError => lcm_error
|
59
|
+
handle_error(execution_result_log_params, log, brick_type, lcm_error, lcm_error.summary_error)
|
36
60
|
rescue Exception => e # rubocop:disable RescueException
|
37
|
-
|
38
|
-
execution_log.error "Execution failed. Message: #{e.message}. Error: #{e}" unless execution_log.nil?
|
39
|
-
log.info "action=#{brick_type}_execution status=failed commit_hash=#{commit_hash} execution_id=#{execution_id} exception=#{e}"
|
40
|
-
raise
|
61
|
+
handle_error(execution_result_log_params, log, brick_type, e, e.to_s)
|
41
62
|
end
|
@@ -29,6 +29,7 @@ def delete_project_by_title(title, projects, days = 14, force = false)
|
|
29
29
|
p.title.match(title) && p.created < dead_line
|
30
30
|
end
|
31
31
|
filtered_projects.each do |project|
|
32
|
+
begin
|
32
33
|
if force
|
33
34
|
puts "Deleting: #{project.pid} - #{project.title} - #{project.created}"
|
34
35
|
project_add = project.add
|
@@ -37,6 +38,9 @@ def delete_project_by_title(title, projects, days = 14, force = false)
|
|
37
38
|
else
|
38
39
|
puts "Would delete: #{project.pid} - #{project.title} - #{project.created}"
|
39
40
|
end
|
41
|
+
rescue StandardError => ex
|
42
|
+
puts "Failed to delete project #{project.pid}, reason: #{ex}"
|
43
|
+
end
|
40
44
|
end
|
41
45
|
puts "#{filtered_projects.length} projects matching \"#{title}\" #{'would be ' unless force}deleted."
|
42
46
|
end
|
data/bin/user_filters.sh
CHANGED
data/ci.rake
CHANGED
@@ -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
|
+
PHRjAjc=
|
data/gooddata.gemspec
CHANGED
@@ -54,7 +54,11 @@ Gem::Specification.new do |s|
|
|
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'
|
59
|
+
else
|
60
|
+
s.add_dependency 'activesupport', '> 4.2.9', '< 6.0'
|
61
|
+
end
|
58
62
|
|
59
63
|
s.add_dependency 'aws-sdk-s3', '~> 1.16'
|
60
64
|
s.add_dependency 'docile', '~> 1.1'
|
data/lcm.rake
CHANGED
@@ -118,6 +118,7 @@ end
|
|
118
118
|
namespace :docker do
|
119
119
|
desc 'Build Docker image'
|
120
120
|
task :build do
|
121
|
+
Rake::Task["maven:build_redshift"].invoke
|
121
122
|
system('docker build -f Dockerfile.jruby -t gooddata/appstore .')
|
122
123
|
end
|
123
124
|
|
@@ -127,6 +128,15 @@ namespace :docker do
|
|
127
128
|
end
|
128
129
|
end
|
129
130
|
|
131
|
+
namespace :maven do
|
132
|
+
task :build_redshift do
|
133
|
+
system("cp -rf spec/lcm/redshift_driver_pom.xml tmp/pom.xml")
|
134
|
+
system('mvn -f tmp/pom.xml clean install -P binary-packaging')
|
135
|
+
system('cp -rf tmp/target/*.jar lib/gooddata/cloud_resources/redshift/drivers/')
|
136
|
+
system('rm -rf lib/gooddata/cloud_resources/redshift/drivers/lcm-redshift-driver*.jar')
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
130
140
|
namespace :sdk do
|
131
141
|
desc 'Updates gooddata-ruby to the version specified in the root Gemfile'
|
132
142
|
task :update do
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Copyright (c) 2019, 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_relative 'base_middleware'
|
6
|
+
|
7
|
+
# rubocop:disable Style/ClassVars
|
8
|
+
module GoodData
|
9
|
+
module Bricks
|
10
|
+
module ExecutionStatus
|
11
|
+
OK = 'OK'
|
12
|
+
ERROR = 'ERROR'
|
13
|
+
WARNING = 'WARNING'
|
14
|
+
end
|
15
|
+
|
16
|
+
class ExecutionResultMiddleware < Bricks::Middleware
|
17
|
+
@@result_log_path = nil
|
18
|
+
|
19
|
+
def call(params)
|
20
|
+
result_log_path(params)
|
21
|
+
@app.call(params)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Update process execution result when the script is executed inside a GDC ETL process execution (ruby bricks).
|
25
|
+
# Ruby bricks should update execution result at the end of script with status=WARNING or OK and summary message if the script exits normally.
|
26
|
+
# If any fatal error, script should update execution result with status=ERROR and error message,
|
27
|
+
# then throw exception to notify GDC platform that the script terminated unexpectedly.
|
28
|
+
# @param [HashMap] params contains GDC_EXECUTION_RESULT_LOG_PATH or GDC_LOG_DIRECTORY, GDC_EXECUTION_ID
|
29
|
+
# @param [ExecutionStatus] status execution status
|
30
|
+
# @param [String] message execution message
|
31
|
+
def self.update_execution_result(status, message = "")
|
32
|
+
if status != ExecutionStatus::OK && status != ExecutionStatus::ERROR && status != ExecutionStatus::WARNING
|
33
|
+
GoodData.logger.warn("Unknown execution status #{status}, ignored it.")
|
34
|
+
end
|
35
|
+
|
36
|
+
result = {
|
37
|
+
executionResult: {
|
38
|
+
status: status,
|
39
|
+
message: message
|
40
|
+
}
|
41
|
+
}
|
42
|
+
update_result(result)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def result_log_path(params)
|
48
|
+
log_directory = params['GDC_LOG_DIRECTORY']
|
49
|
+
execution_id = params['GDC_EXECUTION_ID']
|
50
|
+
result_log_path = params['GDC_EXECUTION_RESULT_LOG_PATH'] || ENV['GDC_EXECUTION_RESULT_LOG_PATH']
|
51
|
+
result_log_path = "#{log_directory}/#{execution_id}_result.json" if result_log_path.nil? && !log_directory.nil?
|
52
|
+
@@result_log_path = result_log_path
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.update_result(result)
|
56
|
+
if @@result_log_path.nil?
|
57
|
+
GoodData.gd_logger.warn("action=update_execution_result status=error Not found execution result logger file.") unless GoodData.gd_logger.nil?
|
58
|
+
return
|
59
|
+
end
|
60
|
+
|
61
|
+
File.open(@@result_log_path, 'w') { |file| file.write(JSON.pretty_generate(result)) }
|
62
|
+
rescue Exception => e # rubocop:disable RescueException
|
63
|
+
GoodData.gd_logger.error("action=update_execution_result status=error reason=#{e.message}") unless GoodData.gd_logger.nil?
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
# rubocop:enable Style/ClassVars
|
@@ -36,7 +36,8 @@ module GoodData
|
|
36
36
|
log_directory = params['GDC_LOG_DIRECTORY']
|
37
37
|
execution_id = params['GDC_EXECUTION_ID']
|
38
38
|
FileUtils.mkpath log_directory
|
39
|
-
|
39
|
+
execution_log_path = params['GDC_EXECUTION_LOG_PATH'].nil? ? "#{log_directory}/#{execution_id}.log" : params['GDC_EXECUTION_LOG_PATH']
|
40
|
+
logger = Logger.new(execution_log_path)
|
40
41
|
logger.level = params['GDC_LOG_LEVEL'] || 'info'
|
41
42
|
values_to_mask = params['values_to_mask'] || []
|
42
43
|
logger = MaskLoggerDecorator.new(logger, values_to_mask)
|
@@ -20,7 +20,11 @@ module GoodData
|
|
20
20
|
# @return [[String]] array of all String in values
|
21
21
|
def extract_values(values)
|
22
22
|
if values.is_a?(String)
|
23
|
-
[
|
23
|
+
if values.nil? || values.empty? || values.gsub(/[*|\s]/, '') == ''
|
24
|
+
[]
|
25
|
+
else
|
26
|
+
[values]
|
27
|
+
end
|
24
28
|
elsif values.is_a?(Hash) || values.is_a?(Array)
|
25
29
|
(values.is_a?(Hash) ? values.values : values).reduce([]) do |strings, item|
|
26
30
|
strings.concat extract_values(item)
|
@@ -32,6 +32,7 @@ module GoodData
|
|
32
32
|
prepare([
|
33
33
|
LoggerMiddleware,
|
34
34
|
DecodeParamsMiddleware,
|
35
|
+
ExecutionResultMiddleware,
|
35
36
|
BenchMiddleware,
|
36
37
|
GoodDataMiddleware,
|
37
38
|
AWSMiddleware,
|
@@ -44,6 +45,7 @@ module GoodData
|
|
44
45
|
prepare([
|
45
46
|
LoggerMiddleware,
|
46
47
|
DecodeParamsMiddleware,
|
48
|
+
ExecutionResultMiddleware,
|
47
49
|
BenchMiddleware,
|
48
50
|
GoodDataMiddleware,
|
49
51
|
AWSMiddleware,
|
@@ -56,6 +58,7 @@ module GoodData
|
|
56
58
|
def self.release_brick_pipeline
|
57
59
|
prepare([
|
58
60
|
LoggerMiddleware,
|
61
|
+
ExecutionResultMiddleware,
|
59
62
|
DecodeParamsMiddleware,
|
60
63
|
BenchMiddleware,
|
61
64
|
GoodDataMiddleware,
|
@@ -68,6 +71,7 @@ module GoodData
|
|
68
71
|
def self.provisioning_brick_pipeline
|
69
72
|
prepare([
|
70
73
|
LoggerMiddleware,
|
74
|
+
ExecutionResultMiddleware,
|
71
75
|
DecodeParamsMiddleware,
|
72
76
|
BenchMiddleware,
|
73
77
|
GoodDataMiddleware,
|
@@ -80,6 +84,7 @@ module GoodData
|
|
80
84
|
def self.rollout_brick_pipeline
|
81
85
|
prepare([
|
82
86
|
LoggerMiddleware,
|
87
|
+
ExecutionResultMiddleware,
|
83
88
|
DecodeParamsMiddleware,
|
84
89
|
BenchMiddleware,
|
85
90
|
GoodDataMiddleware,
|
@@ -93,6 +98,7 @@ module GoodData
|
|
93
98
|
prepare(
|
94
99
|
[
|
95
100
|
LoggerMiddleware,
|
101
|
+
ExecutionResultMiddleware,
|
96
102
|
DecodeParamsMiddleware,
|
97
103
|
BenchMiddleware,
|
98
104
|
HelloWorldBrick
|
@@ -104,6 +110,7 @@ module GoodData
|
|
104
110
|
prepare(
|
105
111
|
[
|
106
112
|
LoggerMiddleware,
|
113
|
+
ExecutionResultMiddleware,
|
107
114
|
DecodeParamsMiddleware,
|
108
115
|
BenchMiddleware,
|
109
116
|
HelpBrick
|