bjn_inventory 1.5.1 → 1.6.1

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
  SHA1:
3
- metadata.gz: dcd99bdf01564c9b9328bd816c7d682dca6ac94d
4
- data.tar.gz: 003a564bc69f38caa487927671c7f98e4eaa201e
3
+ metadata.gz: 7c369f7e212b129cc8ac7a5250d52871f2deacc8
4
+ data.tar.gz: 21598b6ea85a9a682ae56f9225427d77c87b189d
5
5
  SHA512:
6
- metadata.gz: 891137548bf9420e4a7bd654d23776257d9d1253d4f349439183dee2efc45cfb00717ac3ab2e9321d96b587ab902a36161d1bcc103ea09487cde7931e657147d
7
- data.tar.gz: e839db1948ea6d4bc9861edf16547bd0304f05e308606918e1b2a89e38511bdf11340bd712c7debe44ebf5eb7d7c24e23a3969c7d7d92b45a2571de2be295c39
6
+ metadata.gz: f9a44ce178222496e27deeb2d5f4ac243d16f281380e88acfd138ece48e906f4cc62bd5ebeaffe3ca695a18144daf0f6acf365725011982ea96ca9001ccd5f30
7
+ data.tar.gz: 14822ee517b05531ffb82397316658d9794f13482639d3135d909dc63826058ec396393bdb225518ba23868253d135f81288283544b1b32410e4c5bd72553f8b
data/README.md CHANGED
@@ -307,6 +307,12 @@ You create the following service map:
307
307
  "hosts": ["web"],
308
308
  "port": 80
309
309
  }
310
+ "$cluster": {
311
+ "qwerty": {
312
+ "hosts": ["qwerty"],
313
+ "hosts_override": "$region.$cluster.com"
314
+ }
315
+ }
310
316
  }
311
317
  },
312
318
  "monitor": {
@@ -328,11 +334,17 @@ get the following output:
328
334
  "services": {
329
335
  "us-west-2": {
330
336
  "www.hosts": "10.0.1.1",
331
- "www.port": 80
337
+ "www.port": 80,
338
+ "qwerty_cluster": {
339
+ "qwerty.hosts": "us-west-2.qwerty_cluster.com"
340
+ }
332
341
  },
333
342
  "eu-west-1": {
334
343
  "www.hosts": "10.0.10.1",
335
- "www.port": 80
344
+ "www.port": 80,
345
+ "qwerty_cluster": {
346
+ "qwerty.hosts": "eu-west-1.qwerty_cluster.com"
347
+ }
336
348
  }
337
349
  },
338
350
  "monitor": {
@@ -11,6 +11,7 @@ module BjnInventory
11
11
  @logger = kwargs[:logger] || BjnInventory::DefaultLogger.new
12
12
 
13
13
  @hosts_field = kwargs[:hosts] || 'hosts'
14
+ @hosts_override = kwargs[:hosts_override] || 'hosts_override'
14
15
  @endpoint_fields = kwargs[:endpoint_fields] || ['endpoint', 'ip_address']
15
16
  @join = kwargs[:join] || ','
16
17
  separator = kwargs[:separator] || '__'
@@ -67,6 +68,10 @@ module BjnInventory
67
68
  end
68
69
  service_keylist[interpolated_path][@hosts_field] << _endpoint(self[device_name])
69
70
  end
71
+ if service[@hosts_override] && service_keylist[interpolated_path][@hosts_field]
72
+ service_keylist[interpolated_path][@hosts_field] = [_interpolate_value(path, self[device_name], service[@hosts_override])]
73
+ service_keylist[interpolated_path].delete(@hosts_override)
74
+ end
70
75
  end
71
76
  end
72
77
  end
@@ -85,6 +90,23 @@ module BjnInventory
85
90
  end
86
91
  end
87
92
 
93
+ def _interpolate_value(path, device, value)
94
+ replacement_value = value
95
+ path.each do |component, continued_path|
96
+ if component.start_with? '$$'
97
+ replacement_value = replacement_value.gsub(component, component[1 .. -1])
98
+ elsif component.start_with? '$'
99
+ replacement_value = replacement_value.gsub(component, device[component[1 .. -1]])
100
+ else
101
+ replacement_value = replacement_value
102
+ end
103
+ if path.is_a?(Hash)
104
+ replacement_value = _interpolate_value(continued_path, device, replacement_value)
105
+ end
106
+ end
107
+ replacement_value
108
+ end
109
+
88
110
  def _endpoint(device)
89
111
  @endpoint_fields.map { |field| device[field] }.reject { |e| e.nil? }.first
90
112
  end
@@ -1,3 +1,3 @@
1
1
  module BjnInventory
2
- VERSION = "1.5.1"
2
+ VERSION = "1.6.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bjn_inventory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Brinkley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonpath