kumonos 0.23.0 → 0.24.0

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: 2581091b45b53fbcacb1b26293b715c524d886c9775b5a5af48b00f953e83f68
4
- data.tar.gz: 68ebcc125e95f89a85fb3c912d9b8bd0fbb6cf744cca347eb49b347be6848006
3
+ metadata.gz: 9e7070e4162b72c093348a198456d59682ad8019d7ab77edb4448e30fd1aee84
4
+ data.tar.gz: b6b3f5464006a2555fb71d3fe1d227455894eb6e7efe71bc14ce5b1f663eb419
5
5
  SHA512:
6
- metadata.gz: a328fbd273b35cd4751c1e1c5854c145b425fb136f94eb7ed65be6f5b2ab2045f424ba71f03fb75c909f1fe684ce6ae0cafe0d34c4f8eda9df254ae6f5f96d58
7
- data.tar.gz: 061a882a9f16ae03b0b6d7510fc5ec07960a0287e04e33bdd5ad0a343aecde06024007f3d5e763560e791a21722899e509b5871ad1def46cb42f329b22ad0074
6
+ metadata.gz: f640d12d6cbd6a96f5bb244eedbbaead132a512523ee5f062999be4ab8b2a59ef23523b8d0fea781a4c296c6be25a2835b14bf19099c136e8fc5dd25262edbc2
7
+ data.tar.gz: 632ffbb8c34d46f08747f21c2ca5122f163ddc567b302dbda47e5e4d475640485cf7c49df6cb878d2d6787b458bbf77918668625d79c7193e02e1413cef8247c
@@ -20,3 +20,7 @@ Metrics/AbcSize:
20
20
  Enabled: false
21
21
  Naming/UncommunicativeMethodParamName:
22
22
  Enabled: false
23
+ Style/EmptyElse:
24
+ Enabled: false
25
+ Metrics/PerceivedComplexity:
26
+ Enabled: false
@@ -2,41 +2,46 @@ local circuit_breaker = import 'circuit_breaker.libsonnet';
2
2
  local routes = import 'routes.libsonnet';
3
3
 
4
4
  {
5
- version: 1,
6
- dependencies: [
5
+ version: 1,
6
+ dependencies: [
7
+ {
8
+ name: 'user',
9
+ cluster_name: 'user-development',
10
+ lb: 'user-app:8080',
11
+ host_header: 'user-service',
12
+ tls: false,
13
+ connect_timeout_ms: 250,
14
+ routes: [
7
15
  {
8
- name: "user",
9
- cluster_name: "user-development",
10
- lb: "user-app:8080",
11
- host_header: "user-service",
12
- tls: false,
13
- connect_timeout_ms: 250,
14
- circuit_breaker: circuit_breaker,
15
- routes: [routes.root],
16
+ path: '/ping',
17
+ timeout_ms: 100,
16
18
  },
19
+ routes.root,
20
+ ],
21
+ },
22
+ {
23
+ name: 'ab-testing',
24
+ cluster_name: 'ab-testing-development',
25
+ sds: true,
26
+ tls: false,
27
+ connect_timeout_ms: 250,
28
+ circuit_breaker: circuit_breaker,
29
+ outlier_detection: {
30
+ consecutive_5xx: 3,
31
+ },
32
+ routes: [
33
+ routes.root,
17
34
  {
18
- name: "ab-testing",
19
- cluster_name: "ab-testing-development",
20
- sds: true,
21
- tls: false,
22
- connect_timeout_ms: 250,
23
- circuit_breaker: circuit_breaker,
24
- outlier_detection: {
25
- consecutive_5xx: 3,
26
- },
27
- routes: [
28
- routes.root,
29
- {
30
- path: '/grpc.health.v1.Health/Check',
31
- method: 'POST',
32
- timeout_ms: 3000,
33
- retry_policy: {
34
- retry_on: '5xx,connect-failure,refused-stream,cancelled,deadline-exceeded,resource-exhausted',
35
- num_retries: 3,
36
- per_try_timeout_ms: 700,
37
- },
38
- },
39
- ],
35
+ path: '/grpc.health.v1.Health/Check',
36
+ method: 'POST',
37
+ timeout_ms: 3000,
38
+ retry_policy: {
39
+ retry_on: '5xx,connect-failure,refused-stream,cancelled,deadline-exceeded,resource-exhausted',
40
+ num_retries: 3,
41
+ per_try_timeout_ms: 700,
42
+ },
40
43
  },
41
- ],
44
+ ],
45
+ },
46
+ ],
42
47
  }
@@ -16,16 +16,21 @@ module Kumonos
16
16
  def build(h)
17
17
  use_sds = h.fetch('sds', false)
18
18
  lb = use_sds ? nil : h.fetch('lb')
19
- if lb && lb.split(':').size != 2
20
- raise "Invalid format in `lb` value. Must be \"${host}:${port}\" format: #{lb}"
21
- end
19
+ raise "Invalid format in `lb` value. Must be \"${host}:${port}\" format: #{lb}" if lb && lb.split(':').size != 2
20
+
21
+ circuit_breaker =
22
+ if h.key?('circuit_breaker')
23
+ CircuitBreaker.build(h.fetch('circuit_breaker'))
24
+ else
25
+ nil
26
+ end
22
27
 
23
28
  new(
24
29
  h.fetch('cluster_name'),
25
30
  h.fetch('connect_timeout_ms'),
26
31
  lb,
27
32
  h.fetch('tls'),
28
- CircuitBreaker.build(h.fetch('circuit_breaker')),
33
+ circuit_breaker,
29
34
  OutlierDetection.build(h['outlier_detection']), # optional
30
35
  use_sds
31
36
  )
@@ -54,7 +59,7 @@ module Kumonos
54
59
  end
55
60
 
56
61
  h.delete(:circuit_breaker)
57
- h[:circuit_breakers] = { default: circuit_breaker.to_h }
62
+ h[:circuit_breakers] = { default: circuit_breaker.to_h } if circuit_breaker
58
63
 
59
64
  if outlier_detection
60
65
  h[:outlier_detection] = outlier_detection.to_h
@@ -26,8 +26,10 @@ module Kumonos
26
26
  def to_h
27
27
  h = super
28
28
  h[:routes] = routes.flat_map do |r|
29
+ if r.retry_policy.nil?
30
+ [r.to_h]
29
31
  # i.e. retry with gRPC request (HTTP POST)
30
- if r.method
32
+ elsif r.method
31
33
  [r.to_h_with_retry]
32
34
  else
33
35
  [r.to_h_with_retry, r.to_h]
@@ -40,8 +42,15 @@ module Kumonos
40
42
  Route = Struct.new(:prefix, :path, :method, :cluster, :timeout_ms, :retry_policy, :host_header) do
41
43
  class << self
42
44
  def build(h, cluster, host_header)
45
+ retry_policy =
46
+ if h.key?('retry_policy')
47
+ RetryPolicy.build(h.fetch('retry_policy'))
48
+ else
49
+ nil
50
+ end
51
+
43
52
  new(h['prefix'], h['path'], h['method'], cluster, h.fetch('timeout_ms'),
44
- RetryPolicy.build(h.fetch('retry_policy')), host_header)
53
+ retry_policy, host_header)
45
54
  end
46
55
  end
47
56
 
@@ -72,13 +81,11 @@ module Kumonos
72
81
  ALLOWED_METHODS = %w[GET HEAD POST PUT DELETE].freeze
73
82
  def to_h_with_retry
74
83
  h = to_h
75
- h[:retry_policy] = retry_policy.to_h
84
+ h[:retry_policy] = retry_policy.to_h if retry_policy
76
85
 
77
86
  if method
78
87
  m = method.upcase
79
- unless ALLOWED_METHODS.include?(m)
80
- raise "method must be one of #{ALLOWED_METHODS.join(',')}: given `#{m}`"
81
- end
88
+ raise "method must be one of #{ALLOWED_METHODS.join(',')}: given `#{m}`" unless ALLOWED_METHODS.include?(m)
82
89
 
83
90
  h[:headers] = [{ name: ':method', value: m, regex: false }]
84
91
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kumonos
4
- VERSION = '0.23.0'
4
+ VERSION = '0.24.0'
5
5
  end
@@ -26,7 +26,6 @@
26
26
  "cluster_name",
27
27
  "tls",
28
28
  "connect_timeout_ms",
29
- "circuit_breaker",
30
29
  "routes"
31
30
  ],
32
31
  "properties": {
@@ -100,8 +99,7 @@
100
99
  "id": "/properties/dependencies/items/properties/routes/items",
101
100
  "additionalProperties": true,
102
101
  "required": [
103
- "timeout_ms",
104
- "retry_policy"
102
+ "timeout_ms"
105
103
  ],
106
104
  "properties": {
107
105
  "prefix": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumonos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taiki Ono
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-24 00:00:00.000000000 Z
11
+ date: 2019-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema