consul_syncer 0.6.0 → 1.0.2

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: 05054cc82c55d869dc480792ccd4224e500b572da7754c1a8104123523b0f160
4
- data.tar.gz: 4b2f5eebed165829d61f827af987f07584f1bce2da2f843f96d01bf1493dcc58
3
+ metadata.gz: 17887a8798f297f2b6e1483008a2aa02a8f28bdcc4d3ef4d13a4c1ad048a7cae
4
+ data.tar.gz: e28b77916e2a42c6f51de972c6fe33fa10efd800d35a7263dd750e450b65fb81
5
5
  SHA512:
6
- metadata.gz: 3ff1ba428af80daaac2ff471460313621b781c77c5a0da7d74e97c762e94929bf5f69885999dda7c1be85f0f4afea78db3d600a0a72f63f6425fbafd74cf5297
7
- data.tar.gz: 7317f4d28b1818fe71209d5c82ffbeb1de2f9b09a656ccefa08939950b13edc8cc08176d24b24a95a8eda90fc3b542dd44af9aff7d09e98a29514b7015e9a58a
6
+ metadata.gz: 0bed1f83c10efedfb49d41e1e70b1b4d41090bdce42e44c74810cded16311c48284e0c4c5991665f3938b4e68ed9b05033dcbe7ebcb6e4425fd3de5ac27903f8
7
+ data.tar.gz: a8bc5c5c38c77b03390af3724e4182df368793f0e832bea6af73a0bdb041c0b24fe4e9239bf34a573c1e21ca6c1e64a484f0ca007acb42f629c0ab70f5b4b95b
data/lib/consul_syncer.rb CHANGED
@@ -5,13 +5,14 @@ require 'consul_syncer/endpoint'
5
5
  require 'consul_syncer/wrapper'
6
6
 
7
7
  # syncs a given list of endpoints into consul
8
+ # - sorts tags
8
9
  # - adds missing
9
10
  # - updates changed
10
11
  # - removes deprecated
11
12
  class ConsulSyncer
12
13
  def initialize(url, logger: Logger.new(STDOUT), params: {})
13
14
  @logger = logger
14
- @consul = Wrapper.new(Faraday.new(url), params: params, logger: @logger)
15
+ @consul = Wrapper.new(url, params: params, logger: @logger)
15
16
  end
16
17
 
17
18
  # changing tags means all previous services need to be removed manually since
@@ -26,6 +27,7 @@ class ConsulSyncer
26
27
  expected_definitions.each do |d|
27
28
  d[:tags] += tags
28
29
  d[:tags].sort!
30
+ d[:tags].uniq!
29
31
  end
30
32
 
31
33
  actual_definitions = consul_endpoints(tags).map do |consul_endpoint|
@@ -59,11 +61,11 @@ class ConsulSyncer
59
61
  elsif remove_matching_service!(actual_definitions, expected, identifying)
60
62
  @logger.info "Updating #{description}"
61
63
  modified += 1
62
- register expected
64
+ register **expected
63
65
  else
64
66
  @logger.info "Adding #{description}"
65
67
  modified += 1
66
- register expected
68
+ register **expected
67
69
  end
68
70
  end
69
71
 
@@ -80,7 +82,7 @@ class ConsulSyncer
80
82
  private
81
83
 
82
84
  def consul_endpoints(requested_tags)
83
- services = @consul.request(:get, "/v1/catalog/services?tag=#{requested_tags.first}")
85
+ services = @consul.request(:get, "/v1/catalog/services?cached&stale&tag=#{requested_tags.first}")
84
86
  services.each_with_object([]) do |(name, tags), all|
85
87
  # cannot query for multiple tags via query, so handle multi-matching manually
86
88
  next if (requested_tags - tags).any?
@@ -1,3 +1,3 @@
1
1
  class ConsulSyncer
2
- VERSION = "0.6.0"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  # - parses json responses
3
3
  # - fails with descriptive output when a request fails
4
+
5
+ require 'json'
6
+
4
7
  class ConsulSyncer
5
8
  class Wrapper
6
9
  BACKOFF = [0.1, 0.5, 1.0, 2.0].freeze
@@ -8,8 +11,9 @@ class ConsulSyncer
8
11
  class ConsulError < StandardError
9
12
  end
10
13
 
11
- def initialize(consul, params:, logger:)
12
- @consul = consul
14
+ def initialize(consul_url, params:, logger:)
15
+ consul_url = "http://#{consul_url}" unless consul_url.include?("://")
16
+ @consul = Faraday.new(consul_url)
13
17
  @params = params
14
18
  @logger = logger
15
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consul_syncer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-20 00:00:00.000000000 Z
11
+ date: 2021-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -47,15 +47,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 2.2.0
50
+ version: 2.4.0
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubyforge_project:
58
- rubygems_version: 2.7.6
57
+ rubygems_version: 3.1.3
59
58
  signing_key:
60
59
  specification_version: 4
61
60
  summary: Sync remote services into consul