configgin 0.16.0 → 0.16.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: 43e19eea72947ae70b880640570aea9d8cca1ee0
4
- data.tar.gz: cb47f254ee03495870310f5369d7b19adb0df853
3
+ metadata.gz: 9d596b083e1788305e70be2771f71399ce3e7927
4
+ data.tar.gz: dae49531f6818af2faee3c85218707214898f12c
5
5
  SHA512:
6
- metadata.gz: 66e6ec7d3c5c40e9caa6fe64c91bb588d0ed18912433c811e45f1d9ffc13667db6ba9bb9e5aac86440740701d3f1849105b58108caf49d62f9b1671be92c9174
7
- data.tar.gz: a53834220ffa572251ad3ed24674eb2620101720a3feadc7410d406574ded1ddf18ac1e94cf41e584ba82783c54ce76cec5fc1c1b2505d39583b25d180113b30
6
+ metadata.gz: 262a7bba107c1b8328a0e9e110a6d7813c896e759b884f1479b5875955d5786a489b8591b31f19f717256e7f6ef957fe91f1d230d91941ab9069ef373540e0c4
7
+ data.tar.gz: f11ec13d8a7c7d9f5ebb4085906a8eba1b96cc66a4a7652d36a9c978060f9f19eae03c2d0c34141b3a5bb1049409ff8ebee1ed02d9392802afcb000d7daa211d
@@ -65,12 +65,13 @@ job_configs.each do |job, job_config|
65
65
  jobs[job] = Job.new(bosh_spec, kube_namespace, kube_client, kube_client_stateful_set)
66
66
  end
67
67
 
68
- exported_properties = Hash[jobs.map { |name, job| [name, job.exported_properties] }]
69
- kube_client.patch_pod(
70
- ENV['HOSTNAME'],
71
- { metadata: { annotations: { :'skiff-exported-properties' => exported_properties.to_json } } },
72
- kube_namespace
73
- )
68
+ jobs.each do |name, job|
69
+ kube_client.patch_pod(
70
+ ENV['HOSTNAME'],
71
+ { metadata: { annotations: { :"skiff-exported-properties-#{name}" => job.exported_properties.to_json } } },
72
+ kube_namespace
73
+ )
74
+ end
74
75
 
75
76
  jobs.each do |job_name, job|
76
77
  dns_encoder = KubeDNSEncoder.new(job.spec['links'])
@@ -1,3 +1,3 @@
1
1
  module Configgin
2
- VERSION = '0.16.0'.freeze
2
+ VERSION = '0.16.1'.freeze
3
3
  end
@@ -37,7 +37,7 @@ class KubeLinkSpecs
37
37
  @client.get_pods(namespace: @namespace, label_selector: "skiff-role-name=#{role_name}")
38
38
  end
39
39
 
40
- def get_pods_for_role(role_name, wait_for_ip)
40
+ def get_pods_for_role(role_name, wait_for_ip, job)
41
41
  loop do
42
42
  # The 30.times loop exists to print out status messages
43
43
  30.times do
@@ -46,30 +46,34 @@ class KubeLinkSpecs
46
46
  if wait_for_ip
47
47
  # Wait until all pods have IP addresses and properties
48
48
  break unless pods.all? { |pod| pod.status.podIP }
49
- break unless pods.all? { |pod| pod.metadata.annotations['skiff-exported-properties'] }
49
+ break unless pods.all? { |pod| pod.metadata.annotations["skiff-exported-properties-#{job}"] }
50
50
  else
51
51
  # We just need one pod with exported properties
52
52
  pods.select! { |pod| pod.status.podIP }
53
- pods.select! { |pod| pod.metadata.annotations['skiff-exported-properties'] }
53
+ pods.select! { |pod| pod.metadata.annotations["skiff-exported-properties-#{job}"] }
54
54
  end
55
55
  return pods unless pods.empty?
56
56
  end
57
57
  sleep 1
58
58
  end
59
- $stdout.puts "Waiting for pods for role #{role_name} (at #{Time.now})..."
59
+ $stdout.puts "Waiting for pods for role #{role_name} and provider job #{job} (at #{Time.now})..."
60
60
  end
61
61
  end
62
62
 
63
+ def get_exported_properties(pod, job)
64
+ exported_properties = pod.metadata.annotations["skiff-exported-properties-#{job}"]
65
+ exported_properties.nil? ? {} : JSON.parse(exported_properties)
66
+ end
67
+
63
68
  def get_pod_instance_info(pod, job, pods_per_image)
64
69
  index = pod_index(pod.metadata.name)
65
- properties = JSON.parse(pod.metadata.annotations['skiff-exported-properties'])
66
70
  {
67
71
  'name' => pod.metadata.name,
68
72
  'index' => index,
69
73
  'id' => pod.metadata.name,
70
74
  'az' => pod.metadata.annotations['failure-domain.beta.kubernetes.io/zone'] || 'az0',
71
75
  'address' => pod.status.podIP,
72
- 'properties' => properties.fetch(job, {}),
76
+ 'properties' => get_exported_properties(pod, job),
73
77
  'bootstrap' => pods_per_image[pod.metadata.uid] < 2
74
78
  }
75
79
  end
@@ -92,23 +96,21 @@ class KubeLinkSpecs
92
96
 
93
97
  def get_svc_instance_info(role_name, job)
94
98
  svc = @client.get_service(role_name, @namespace)
95
- pod = get_pods_for_role(role_name, false).first
96
- properties = JSON.parse(pod.metadata.annotations['skiff-exported-properties'])
99
+ pod = get_pods_for_role(role_name, false, job).first
97
100
  {
98
101
  'name' => svc.metadata.name,
99
102
  'index' => 0, # Completely made up index; there is only ever one service
100
103
  'id' => svc.metadata.name,
101
104
  'az' => pod.metadata.annotations['failure-domain.beta.kubernetes.io/zone'] || 'az0',
102
105
  'address' => svc.spec.clusterIP,
103
- 'properties' => properties.fetch(job, {}),
106
+ 'properties' => get_exported_properties(pod, job),
104
107
  'bootstrap' => true
105
108
  }
106
109
  end
107
110
 
108
111
  def get_statefulset_instance_info(role_name, job)
109
112
  ss = @client_stateful_set.get_stateful_set(role_name, @namespace)
110
- pod = get_pods_for_role(role_name, false).first
111
- properties = JSON.parse(pod.metadata.annotations['skiff-exported-properties'])
113
+ pod = get_pods_for_role(role_name, false, job).first
112
114
 
113
115
  Array.new(ss.spec.replicas) do |i|
114
116
  {
@@ -117,7 +119,7 @@ class KubeLinkSpecs
117
119
  'id' => ss.metadata.name,
118
120
  'az' => pod.metadata.annotations['failure-domain.beta.kubernetes.io/zone'] || 'az0',
119
121
  'address' => "#{ss.metadata.name}-#{i}.#{ss.spec.serviceName}",
120
- 'properties' => properties.fetch(job, {}),
122
+ 'properties' => get_exported_properties(pod, job),
121
123
  'bootstrap' => i.zero?
122
124
  }
123
125
  end
@@ -142,7 +144,7 @@ class KubeLinkSpecs
142
144
 
143
145
  if provider['role'] == this_name
144
146
  $stderr.puts "Resolving link #{key} via self provider #{provider}"
145
- pods = get_pods_for_role(provider['role'], true)
147
+ pods = get_pods_for_role(provider['role'], true, provider['job'])
146
148
  pods_per_image = get_pods_per_image(pods)
147
149
  instances = pods.map { |p| get_pod_instance_info(p, provider['job'], pods_per_image) }
148
150
  elsif service? provider['role']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configgin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SUSE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2018-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  version: '0'
178
178
  requirements: []
179
179
  rubyforge_project:
180
- rubygems_version: 2.6.13
180
+ rubygems_version: 2.6.10
181
181
  signing_key:
182
182
  specification_version: 4
183
183
  summary: A simple cli app in Ruby to generate configurations using BOSH ERB templates