gooddata 2.1.8 → 2.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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: db8ee40362c67f15f08bf4b4a8ec1d5e98aac617ee327997c28a21fbf618c72e
|
4
|
+
data.tar.gz: 1ce32f0cfae0eb7635cccc723cc15050728e25748cff678a33df2840a6ca15ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77d278325d84ee3e146b6ccace33b30bfe87dc0072b292e5e0e5f74301f1dde578369f1fba0dffce72d987c246855e84bec2928c2b3bacd400e5bebe7cc763ff
|
7
|
+
data.tar.gz: df17f823be2441a365f90cff0480972caf8adcaa00db39300b4990d0abbbdb2e13d21b05b27292e4620e6b56f416193f1fbf2dafde688f825a550eba64b78fc9
|
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
|