gooddata 2.1.0-java → 2.1.1-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 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