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 +4 -4
- data/bin/configgin +7 -6
- data/lib/configgin/version.rb +1 -1
- data/lib/kube_link_generator.rb +15 -13
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d596b083e1788305e70be2771f71399ce3e7927
|
4
|
+
data.tar.gz: dae49531f6818af2faee3c85218707214898f12c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 262a7bba107c1b8328a0e9e110a6d7813c896e759b884f1479b5875955d5786a489b8591b31f19f717256e7f6ef957fe91f1d230d91941ab9069ef373540e0c4
|
7
|
+
data.tar.gz: f11ec13d8a7c7d9f5ebb4085906a8eba1b96cc66a4a7652d36a9c978060f9f19eae03c2d0c34141b3a5bb1049409ff8ebee1ed02d9392802afcb000d7daa211d
|
data/bin/configgin
CHANGED
@@ -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
|
-
|
69
|
-
kube_client.patch_pod(
|
70
|
-
|
71
|
-
|
72
|
-
|
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'])
|
data/lib/configgin/version.rb
CHANGED
data/lib/kube_link_generator.rb
CHANGED
@@ -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[
|
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[
|
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' =>
|
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' =>
|
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' =>
|
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.
|
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-
|
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.
|
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
|