Skip to content
This repository has been archived by the owner on Feb 10, 2022. It is now read-only.

Commit

Permalink
Update how we merge custom labels with the defaults
Browse files Browse the repository at this point in the history
[#163783467]
  • Loading branch information
tvs committed Feb 28, 2019
1 parent cea6999 commit b2e1b04
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 17 deletions.
24 changes: 10 additions & 14 deletions jobs/kubelet/templates/bin/kubelet_ctl.erb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -33,7 +33,14 @@ DATA_DIR=/var/vcap/store/kubernetes
if iaas=="vsphere" if iaas=="vsphere"
labels << "failure-domain.beta.kubernetes.io/zone=#{spec.az}" labels << "failure-domain.beta.kubernetes.io/zone=#{spec.az}"
end end
labels = labels.join(',')
if_p('k8s-args') do |args|
custom_labels = args.fetch('node-labels', "").split(",")
labels = custom_labels + labels
args.delete('node-labels')
end
labels = labels.join(",")
%> %>
# shellcheck disable=SC1091 # shellcheck disable=SC1091
Expand Down Expand Up @@ -101,19 +108,11 @@ start_kubelet() {
kubelet \ kubelet \
<%- <%-
if_p('k8s-args') do |args| if_p('k8s-args') do |args|
node_labels = args.select { |f,_| f == 'node-labels' }
if node_labels.empty?
args['node-labels'] = labels
else
node_labels = "#{node_labels['node-labels']},#{labels}"
end
args.each do |flag, value| args.each do |flag, value|
valueString = "" valueString = ""
if value.nil? if value.nil?
# Do nothing to supports args-less flags (--example) # Do nothing to supports args-less flags (--example)
elsif flag == 'node-labels'
valueString = "=#{node_labels}" # << labels
elsif value.is_a? Array elsif value.is_a? Array
valueString = "=#{value.join(",")}" valueString = "=#{value.join(",")}"
elsif value.is_a? Hash elsif value.is_a? Hash
Expand All @@ -125,15 +124,12 @@ start_kubelet() {
<%= "--#{flag}#{valueString}" %> \ <%= "--#{flag}#{valueString}" %> \
<%- <%-
end end
end.else do end
-%>
<%= "--node-labels=#{labels}" %> \
<%-
end
-%> -%>
<% if include_config -%>--cloud-config=${cloud_config}<% end %> \ <% if include_config -%>--cloud-config=${cloud_config}<% end %> \
<% if !iaas.nil? -%>--cloud-provider=${cloud_provider}<% end %> \ <% if !iaas.nil? -%>--cloud-provider=${cloud_provider}<% end %> \
--hostname-override=$(get_hostname_override) \ --hostname-override=$(get_hostname_override) \
--node-labels=<%= labels %> \
--config="/var/vcap/jobs/kubelet/config/kubeletconfig.yml" \ --config="/var/vcap/jobs/kubelet/config/kubeletconfig.yml" \
1>> $LOG_DIR/kubelet.stdout.log \ 1>> $LOG_DIR/kubelet.stdout.log \
2>> $LOG_DIR/kubelet.stderr.log 2>> $LOG_DIR/kubelet.stderr.log
Expand Down
30 changes: 27 additions & 3 deletions spec/kubelet_ctl_spec.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
require 'fileutils' require 'fileutils'
require 'open3' require 'open3'


def get_node_labels(rendered_kubelet_ctl)
node_labels = rendered_kubelet_ctl.split("\n").select { |line| line[/--node-labels=/i] }
expect(node_labels.length).to be(1)
labels = node_labels[0].match(/--node-labels=(.*) \\/).captures[0]
labels.split(",")
end

describe 'kubelet_ctl' do describe 'kubelet_ctl' do
let(:rendered_template) do let(:rendered_template) do
compiled_template('kubelet', 'bin/kubelet_ctl', {}, {}, {}, 'z1', 'fake-bosh-ip', 'fake-bosh-id') compiled_template('kubelet', 'bin/kubelet_ctl', {}, {}, {}, 'z1', 'fake-bosh-ip', 'fake-bosh-id')
Expand All @@ -29,9 +36,26 @@
} }
} }
rendered_kubelet_ctl = compiled_template('kubelet', 'bin/kubelet_ctl', manifest_properties, {}, {}, 'z1', 'fake-bosh-ip', 'fake-bosh-id') rendered_kubelet_ctl = compiled_template('kubelet', 'bin/kubelet_ctl', manifest_properties, {}, {}, 'z1', 'fake-bosh-ip', 'fake-bosh-id')
expect(rendered_kubelet_ctl).to include(',bosh.id=fake-bosh-id') labels = get_node_labels(rendered_kubelet_ctl)
expect(rendered_kubelet_ctl).to include(',k8s.node=custom')
expect(rendered_kubelet_ctl).to include('foo=bar') expect(labels).to include('bosh.zone=z1')
expect(labels).to include('spec.ip=fake-bosh-ip')
expect(labels).to include('bosh.id=fake-bosh-id')
expect(labels).to include('k8s.node=custom')
expect(labels).to include('foo=bar')
end

it 'labels the kubelet with default labels' do
manifest_properties = {
'k8s-args' => {
}
}
rendered_kubelet_ctl = compiled_template('kubelet', 'bin/kubelet_ctl', manifest_properties, {}, {}, 'z1', 'fake-bosh-ip', 'fake-bosh-id')
labels = get_node_labels(rendered_kubelet_ctl)

expect(labels).to include('bosh.zone=z1')
expect(labels).to include('spec.ip=fake-bosh-ip')
expect(labels).to include('bosh.id=fake-bosh-id')
end end


it 'has no http proxy when no proxy is defined' do it 'has no http proxy when no proxy is defined' do
Expand Down

0 comments on commit b2e1b04

Please sign in to comment.