gooddata 2.1.0-java → 2.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0aeb4013ddeaeb9d85a24d510186f07d057d829ae1abbaca2a3fceda59160f56
4
- data.tar.gz: a988ad2a37132e168cf562c64070bf1c951afc41a1f7aa2e6a6b4b43e6137041
3
+ metadata.gz: 8d6d8542912850269fd1a5171dea30c8e3ffea2c25245c34fed1a6ca177f4882
4
+ data.tar.gz: 2ed9f49ae9d72e89323ca7ef449b1084ae39bb6e2f19484672d4e0393afbefc0
5
5
  SHA512:
6
- metadata.gz: 83249304bbb76555fe9c6eae3776fcda14464bd27bbc64c275ce0961917b494540c3dbedc60c14fb5ec001fe1e545a47a85d320a8ef80006194e47d8b944c74c
7
- data.tar.gz: 38a3da28fc0d6df3529b7766b2140b5b4af2933347cab5b6011235831f5b26578041858b0f34353603e748944baf7c9c780ef735e7181dc4fc7534a1b2495d13
6
+ metadata.gz: 4239bf895d152f4bc1bc04d85db87826d398ad9b303b6d705381ba24ad2b6e9ab8984c09e954d54e17088a1a0b10e3bdf4dcbfb02afe77e50a1ae7dfce42a513
7
+ data.tar.gz: a29a685e759fa151be91abf220b5b6edf38a9f9b3ba42a5cdb650ec51c1ad9e526eb00b15f205adee924f61ebe1aec9dbf233a04ee8d0594461df9bead5ca6c1
data/.travis.yml CHANGED
@@ -25,19 +25,36 @@ jobs:
25
25
  git fetch upstream develop
26
26
  bundle exec pronto run -c upstream/develop --exit-code
27
27
 
28
- - name: unit tests
28
+ # UNIT TESTS ON LINUX IN ALL SUPPORTED RUBY VERSIONS
29
+ - name: unit tests 2.2
29
30
  stage: before-merge
30
31
  script: bundle exec rake test:unit
31
- rvm:
32
- - 2.2
33
- - 2.3
34
- - 2.4
35
- - 2.5
36
- - 2.6
37
- - jruby-1.7.19
38
- - jruby-9.1.5
39
- - jruby-9.1.7
40
- - jruby-9.1.14
32
+ rvm: 2.2
33
+
34
+ - name: unit tests 2.3
35
+ stage: before-merge
36
+ script: bundle exec rake test:unit
37
+ rvm: 2.3
38
+
39
+ - name: unit tests 2.4
40
+ stage: before-merge
41
+ script: bundle exec rake test:unit
42
+ rvm: 2.4
43
+
44
+ - name: unit tests 2.5
45
+ stage: before-merge
46
+ script: bundle exec rake test:unit
47
+ rvm: 2.5
48
+
49
+ - name: unit tests 2.6
50
+ stage: before-merge
51
+ script: bundle exec rake test:unit
52
+ rvm: 2.6
53
+
54
+ - name: unit tests jruby-9.1.14
55
+ stage: before-merge
56
+ script: bundle exec rake test:unit
57
+ rvm: jruby-9.1.14
41
58
 
42
59
  - name: sdk integration (vcr) tests - base
43
60
  stage: before-merge
@@ -193,6 +210,50 @@ jobs:
193
210
  name: staging3 - test environment clean-up
194
211
  env: GD_ENV=development
195
212
 
213
+ # AFTER MERGE UNIT TESTS ON ALTERNATIVE PLATFORM
214
+
215
+ - name: unit tests 2.3
216
+ stage: after-merge
217
+ script: bundle exec rake test:unit
218
+ os: osx
219
+ osx_image: xcode7.3
220
+ rvm: 2.3
221
+
222
+ - name: unit tests 2.4
223
+ stage: after-merge
224
+ script: bundle exec rake test:unit
225
+ os: osx
226
+ osx_image: xcode9.3
227
+ rvm: 2.4
228
+
229
+ - name: unit tests 2.5
230
+ stage: after-merge
231
+ script: bundle exec rake test:unit
232
+ os: osx
233
+ osx_image: xcode9
234
+ rvm: 2.5
235
+
236
+ - name: unit tests 2.6
237
+ stage: after-merge
238
+ script: bundle exec rake test:unit
239
+ os: osx
240
+ osx_image: xcode9
241
+ rvm: 2.6
242
+
243
+ - name: unit tests jruby-9.1.14
244
+ stage: after-merge
245
+ script: bundle exec rake test:unit
246
+ os: osx
247
+ rvm: jruby-9.1.14
248
+
249
+ - name: unit tests 2.2
250
+ stage: after-merge
251
+ before_install:
252
+ - gem install bundler -v 1.17
253
+ script: bundle exec rake test:unit
254
+ os: osx
255
+ rvm: 2.2
256
+
196
257
  - stage: gem-release
197
258
  name: deploy MRI gem
198
259
  rvm: 2.3
data/CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
1
  # GoodData Ruby SDK Changelog
2
+ ## 2.1.1
3
+ - TMA-1423: handle windows shell in a healthy manner
4
+ - TMA-1424: fix server strings that cause trouble
5
+ - TMA-1404: explicitly fail when segments filter is not array
6
+ - TMA-1412: fix api cmd spec
7
+
2
8
  ## 2.1.0
3
9
  - TMA-1401: print message and request id on http error
4
10
  - Add doc section to contributing.md
data/Dockerfile CHANGED
@@ -15,7 +15,7 @@ RUN yum install -y curl which \
15
15
  && yum clean all \
16
16
  && rm -rf /var/cache/yum
17
17
 
18
- RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
18
+ RUN gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
19
19
  RUN curl -sSL https://get.rvm.io | bash -s stable
20
20
 
21
21
  # Switch to directory with sources
data/SDK_VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 2.1.1
data/bin/run_brick.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'remote_syslog_logger'
4
+
3
5
  require_relative '../lib/gooddata'
4
6
 
5
7
  DEFAULT_BRICK = 'hello_world_brick'
@@ -12,15 +14,26 @@ def get_brick_params(prefix)
12
14
  ENV.select { |k,| k.to_s.match(/^#{prefix}.*/) }.map { |k, v| [k.slice(prefix.length..-1), v] }.to_h
13
15
  end
14
16
 
15
- brick_pipeline = GoodData::Bricks::Pipeline.send("#{brick_type}_pipeline")
16
- normal_params = get_brick_params(BRICK_PARAM_PREFIX)
17
- hidden_params = get_brick_params(HIDDEN_BRICK_PARAMS_PREFIX)
18
- params = normal_params.merge(hidden_params)
19
-
20
- params['values_to_mask'] = hidden_params.values
21
- commit_hash = ENV['GOODDATA_RUBY_COMMIT'] || ''
22
- execution_id = ENV['GDC_EXECUTION_ID']
23
- params['gooddata_ruby_commit'] = commit_hash
24
- params['GDC_LOG_DIRECTORY'] = ENV['GDC_LOG_DIRECTORY'] || '/tmp/'
25
- params['GDC_EXECUTION_ID'] = execution_id
26
- brick_pipeline.call(params)
17
+ syslog_node = ENV['NODE_NAME']
18
+ log = RemoteSyslogLogger.new(syslog_node, 514, :program => "ruby_#{brick_type}", :facility => 'local2')
19
+
20
+ log.info "action=#{brick_type}_execution status=init"
21
+
22
+ begin
23
+ brick_pipeline = GoodData::Bricks::Pipeline.send("#{brick_type}_pipeline")
24
+ normal_params = get_brick_params(BRICK_PARAM_PREFIX)
25
+ hidden_params = get_brick_params(HIDDEN_BRICK_PARAMS_PREFIX)
26
+ params = normal_params.merge(hidden_params)
27
+
28
+ params['values_to_mask'] = hidden_params.values
29
+ commit_hash = ENV['GOODDATA_RUBY_COMMIT'] || ''
30
+ execution_id = ENV['GDC_EXECUTION_ID']
31
+ params['gooddata_ruby_commit'] = commit_hash
32
+ params['GDC_LOG_DIRECTORY'] = ENV['GDC_LOG_DIRECTORY'] || '/tmp/'
33
+ params['GDC_EXECUTION_ID'] = execution_id
34
+ log.info "action=#{brick_type}_execution status=start commit_hash=#{commit_hash} execution_id=#{execution_id}"
35
+ brick_pipeline.call(params)
36
+ rescue StandardError => e
37
+ log.info "action=#{brick_type}_execution status=failed commit_hash=#{commit_hash} execution_id=#{execution_id} exception=#{e}"
38
+ raise
39
+ end
@@ -1,4 +1,4 @@
1
1
  apiVersion: v1
2
2
  name: lcm-bricks
3
3
  description: LCM Bricks
4
- version: 1.0.2
4
+ version: 1.0.3
@@ -54,26 +54,6 @@ data:
54
54
  annotations:
55
55
  description: "{{`{{ $labels.pod }}`}} was OOMKilled in the last 10 minutes. Investigate and/or increase memoryRequest or memoryLimit."
56
56
  summary: "{{`{{ $labels.pod }}`}} OOMKill occured"
57
- - record: "container_pod:lcm_pod_container_status_error:increase10m"
58
- expr: increase(kube_pod_container_status_terminated_reason{namespace='{{ .Release.Namespace }}', reason!~"Completed|OOMKilled"}[10m])
59
- - alert: "[LCM] Container exited with error on cluster={{ .Values.clusterId }}"
60
- expr: container_pod:lcm_pod_container_status_error:increase10m >= 1
61
- labels:
62
- severity: warning
63
- team: lcm # switch to msf in production
64
- cluster_id: {{ .Values.clusterId }}
65
- annotations:
66
- description: "{{`{{ $labels.pod }}`}} container exited with non-zero exit code in the last 10 minutes. Investigate and fix."
67
- summary: "{{`{{ $labels.pod }}`}} Container exited with error"
68
- - alert: "[LCM] Container exited with error on cluster={{ .Values.clusterId }}"
69
- expr: container_pod:lcm_pod_container_status_error:increase10m >= 2
70
- labels:
71
- severity: critical
72
- team: lcm # switch to msf in production
73
- cluster_id: {{ .Values.clusterId }}
74
- annotations:
75
- description: "{{`{{ $labels.pod }}`}} container exited with non-zero exit code in the last 10 minutes. Investigate and fix."
76
- summary: "{{`{{ $labels.pod }}`}} Container exited with error"
77
57
  - alert: "[LCM] Container is being throttled on cluster={{ .Values.clusterId }}"
78
58
  expr: rate(container_cpu_cfs_throttled_seconds_total{namespace='{{ .Release.Namespace }}'}[1m]) > 1
79
59
  for: 5m
@@ -39,7 +39,7 @@ module GoodData
39
39
  logger = Logger.new("#{log_directory}/#{execution_id}.log")
40
40
  logger.level = params['GDC_LOG_LEVEL'] || 'info'
41
41
  values_to_mask = params['values_to_mask'] || []
42
- logger = MaskLoggerDecorator.new(logger, values_to_mask) if values_to_mask.any?
42
+ logger = MaskLoggerDecorator.new(logger, values_to_mask)
43
43
  else
44
44
  logger = params[:GDC_LOGGER_FILE].nil? ? Logger.new(STDOUT) : Logger.new(params[:GDC_LOGGER_FILE])
45
45
  logger.level = params['GDC_LOG_LEVEL'] || 'info'
@@ -58,9 +58,7 @@ module GoodData
58
58
  splunk_logger.level = params['SPLUNK_LOG_LEVEL'] || GoodData::DEFAULT_SPLUNKLOG_LEVEL
59
59
  splunk_logger = splunk_logger.extend(ContextLoggerDecorator)
60
60
  splunk_logger.context_source = GoodData.gd_logger
61
- values_to_mask = params['values_to_mask'] || []
62
- values_to_mask.concat MaskLoggerDecorator.extract_values params
63
- splunk_logger = MaskLoggerDecorator.new(splunk_logger, values_to_mask) if values_to_mask.any?
61
+ splunk_logger = MaskLoggerDecorator.new(splunk_logger, params)
64
62
  GoodData.splunk_logging_on splunk_logger
65
63
  end
66
64
 
@@ -9,9 +9,9 @@ module GoodData
9
9
  # entry-point
10
10
  # @param [Logger] logger logger to decorated
11
11
  # @param [Array] values_to_mask sensitive values to be masked out from logs
12
- def initialize(logger, values_to_mask = [])
12
+ def initialize(logger, params = [])
13
13
  @logger = logger
14
- @values_to_mask = values_to_mask
14
+ @values_to_mask = GoodData::Bricks::MaskLoggerDecorator.extract_values(params)
15
15
  end
16
16
 
17
17
  class << self
@@ -39,6 +39,14 @@ module GoodData
39
39
  end
40
40
  end
41
41
 
42
+ def debug?
43
+ true
44
+ end
45
+
46
+ %i[warn? error? fatal? info?].each do |level|
47
+ alias_method level, :debug?
48
+ end
49
+
42
50
  # Decorator pretends being inner logger itselfs.
43
51
  # @return inner logger class
44
52
  def class
@@ -62,13 +62,52 @@ module GoodData
62
62
  }
63
63
  end
64
64
 
65
+ def ask_for_credentials_on_windows(credentials_file_path = Helpers::AuthHelper.credentials_file)
66
+ puts 'Enter your GoodData credentials.'
67
+
68
+ old_credentials = Helpers::AuthHelper.read_credentials(credentials_file_path)
69
+
70
+ puts 'Email'
71
+ input = $stdin.gets.chomp
72
+ user = input.empty? ? old_credentials[:username] : input
73
+
74
+ puts 'Password'
75
+ input = $stdin.gets.chomp
76
+ password = input.empty? ? old_credentials[:password] : input
77
+
78
+ puts 'Authorization (Project) Token'
79
+ input = $stdin.gets.chomp
80
+ auth_token = input.empty? ? old_credentials[:auth_token] : input
81
+
82
+ puts 'Environment'
83
+ input = $stdin.gets.chomp
84
+ environment = input.empty? ? old_credentials[:environment] : input
85
+ # in windows console, an empty input does not flush the previous buffer
86
+ # so if you do not fill any environment, the previous value is still present in $stdin
87
+ # so this is a default
88
+ environment = GoodData::Project::DEFAULT_ENVIRONMENT if environment == auth_token
89
+
90
+ puts 'Server'
91
+ input = $stdin.gets.chomp
92
+ server = input.empty? ? old_credentials[:server] : input
93
+
94
+ # Return as struct
95
+ {
96
+ :username => user,
97
+ :password => password,
98
+ :auth_token => auth_token,
99
+ :environment => environment,
100
+ :server => server
101
+ }
102
+ end
103
+
65
104
  # Ask for credentials and store them
66
105
  def store(credentials_file_path = Helpers::AuthHelper.credentials_file)
67
106
  puts 'This will store credentials to GoodData in an UNencrypted form to your harddrive to file ~/.gooddata.'
68
107
  overwrite = GoodData::CLI.terminal.ask('Do you want to continue? (y/n)')
69
108
  return if overwrite != 'y'
70
109
 
71
- credentials = ask_for_credentials
110
+ credentials = GoodData::Helpers.running_on_windows? ? ask_for_credentials_on_windows : ask_for_credentials
72
111
 
73
112
  ovewrite = if File.exist?(credentials_file_path)
74
113
  GoodData::CLI.terminal.ask('Overwrite existing stored credentials (y/n)')
@@ -29,6 +29,8 @@ module GoodData
29
29
  fail "Parameter 'segments' contains duplicate segment id(s): #{duplicated_segment_ids.join(', ')}" if duplicated_segment_ids.any?
30
30
 
31
31
  if params.segments_filter
32
+ fail 'Segments filter should be a non-empty array!' if !params.segments_filter.is_a?(Array) || params.segments_filter.empty?
33
+
32
34
  segments_filter = params.segments_filter.map(&:downcase)
33
35
 
34
36
  filtered_segments = params.segments.select do |segment|
@@ -17,7 +17,7 @@ module GoodData
17
17
  extend GoodData::Mixin::ContentPropertyWriter
18
18
 
19
19
  content_property_reader :folders, :expression, :format
20
- content_property_writer :folders, :expression
20
+ content_property_writer :folders, :expression, :format
21
21
 
22
22
  class << self
23
23
  # Method intended to get all objects of that type in a specified project
@@ -162,7 +162,7 @@ module GoodData
162
162
  headers = options[:headers] || {}
163
163
 
164
164
  options = options.merge(headers)
165
- @server = RestClient::Resource.new server, options
165
+ @server = RestClient::Resource.new fix_server_url(server), options
166
166
 
167
167
  # Install at_exit handler first
168
168
  unless @at_exit_handler_installed
@@ -468,6 +468,8 @@ module GoodData
468
468
 
469
469
  def enrich_error_message(exception)
470
470
  begin
471
+ return exception unless exception.response
472
+
471
473
  response = JSON.parse(exception.response.body, symbolize_names: true)
472
474
  return exception unless exception.message && response[:error] && response[:error][:message] && response[:error][:requestId]
473
475
 
@@ -703,6 +705,17 @@ ERR
703
705
  end
704
706
  end
705
707
  end
708
+
709
+ def fix_server_url(server)
710
+ server = server.chomp('/')
711
+ if server.starts_with? 'http://'
712
+ server = server.sub 'http://', 'https://'
713
+ GoodData.logger.warn 'You specified the HTTP protocol in your server string. It has been autofixed to HTTPS.'
714
+ end
715
+
716
+ server = 'https://' + server unless server.starts_with? 'https://'
717
+ server
718
+ end
706
719
  end
707
720
  end
708
721
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gooddata
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: java
6
6
  authors:
7
7
  - Pavel Kolesnikov
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-03-14 00:00:00.000000000 Z
17
+ date: 2019-03-22 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  requirement: !ruby/object:Gem::Requirement