mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #70889 from dims/update-cadvisor-and-other-repos-for-klog-take-2
Update cadvisor and other repos for klog
This commit is contained in:
		
							
								
								
									
										213
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										213
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							@@ -1789,10 +1789,6 @@
 | 
			
		||||
			"Comment": "v0.5",
 | 
			
		||||
			"Rev": "342cbe0a04158f6dcb03ca0079991a51a4248c02"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/golang/glog",
 | 
			
		||||
			"Rev": "44145f04b68cf362d9c4df2182967c2275eaefed"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/golang/groupcache/lru",
 | 
			
		||||
			"Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433"
 | 
			
		||||
@@ -1847,188 +1843,188 @@
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/accelerators",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/cache/memory",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/client/v2",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/collector",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/common",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/containerd",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/crio",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/docker",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/libcontainer",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/mesos",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/raw",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/rkt",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/container/systemd",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/devicemapper",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/events",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/fs",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/info/v1",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/info/v2",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/machine",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/manager",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/manager/watcher",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/manager/watcher/raw",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/manager/watcher/rkt",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/metrics",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/storage",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/summary",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/cloudinfo",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/cpuload",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/docker",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/oomparser",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/sysfs",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/utils/sysinfo",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/version",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/cadvisor/zfs",
 | 
			
		||||
			"Comment": "v0.31.0",
 | 
			
		||||
			"Rev": "fc17731afdcf184832482e324913c8f1a91b54ee"
 | 
			
		||||
			"Comment": "v0.31.0-34-g4c77cd7d7f7114",
 | 
			
		||||
			"Rev": "4c77cd7d7f7114bc8643c5a7d0fd1cbbb661d9c0"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/google/certificate-transparency-go",
 | 
			
		||||
@@ -2361,6 +2357,11 @@
 | 
			
		||||
			"ImportPath": "github.com/kardianos/osext",
 | 
			
		||||
			"Rev": "8fef92e41e22a70e700a96b29f066cda30ea24ef"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/karrick/godirwalk",
 | 
			
		||||
			"Comment": "v1.7.5",
 | 
			
		||||
			"Rev": "2de2192f9e35ce981c152a873ed943b93b79ced4"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/kisielk/sqlstruct",
 | 
			
		||||
			"Rev": "648daed35d49dac24a4bff253b190a80da3ab6a5"
 | 
			
		||||
@@ -2380,7 +2381,7 @@
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/kubernetes/repo-infra/kazel",
 | 
			
		||||
			"Rev": "d9bb9fdc907665c61c228baa64fed9b91c7dc1b0"
 | 
			
		||||
			"Rev": "f2459dc75fc429b813d92c0622b408fd7f0d4cac"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/lib/pq",
 | 
			
		||||
@@ -3002,6 +3003,10 @@
 | 
			
		||||
			"ImportPath": "github.com/shurcooL/sanitized_anchor_name",
 | 
			
		||||
			"Rev": "10ef21a441db47d8b13ebcc5fd2310f636973c77"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/sigma/go-inotify",
 | 
			
		||||
			"Rev": "c87b6cf5033d2c6486046f045eeebdc3d910fd38"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/sirupsen/logrus",
 | 
			
		||||
			"Comment": "v1.0.3-11-g89742aefa4b206",
 | 
			
		||||
@@ -3897,100 +3902,104 @@
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/args",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/examples/deepcopy-gen/generators",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/examples/defaulter-gen/generators",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/examples/import-boss/generators",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/examples/set-gen/generators",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/examples/set-gen/sets",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/generator",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/namer",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/parser",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/gengo/types",
 | 
			
		||||
			"Rev": "fdcf9f9480fdd5bf2b3c3df9bf4ecd22b25b87e2"
 | 
			
		||||
			"Rev": "51747d6e00da1fc578d5a333a93bb2abcbce7a95"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/heapster/metrics/api/v1/types",
 | 
			
		||||
			"Comment": "v1.2.0-beta.1",
 | 
			
		||||
			"Rev": "c2ac40f1adf8c42a79badddb2a2acd673cae3bcb"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/klog",
 | 
			
		||||
			"Rev": "8139d8cb77af419532b33dfa7dd09fbc5f1d344f"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/cmd/openapi-gen",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/cmd/openapi-gen/args",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/aggregator",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/builder",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/common",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/generators",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/generators/rules",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/handler",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/util",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/util/proto/testing",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/util/proto/validation",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/kube-openapi/pkg/util/sets",
 | 
			
		||||
			"Rev": "72693cb1fadd73ae2742f6fe29af77d1aecdd8cd"
 | 
			
		||||
			"Rev": "c59034cc13d587f5ef4e85ca0ade0c1866ae8e1d"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/utils/clock",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										466
									
								
								Godeps/LICENSES
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										466
									
								
								Godeps/LICENSES
									
									
									
										generated
									
									
									
								
							@@ -50388,205 +50388,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/golang/glog licensed under: =
 | 
			
		||||
 | 
			
		||||
Apache License
 | 
			
		||||
Version 2.0, January 2004
 | 
			
		||||
http://www.apache.org/licenses/
 | 
			
		||||
 | 
			
		||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
			
		||||
 | 
			
		||||
1. Definitions.
 | 
			
		||||
 | 
			
		||||
"License" shall mean the terms and conditions for use, reproduction, and
 | 
			
		||||
distribution as defined by Sections 1 through 9 of this document.
 | 
			
		||||
 | 
			
		||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
 | 
			
		||||
owner that is granting the License.
 | 
			
		||||
 | 
			
		||||
"Legal Entity" shall mean the union of the acting entity and all other entities
 | 
			
		||||
that control, are controlled by, or are under common control with that entity.
 | 
			
		||||
For the purposes of this definition, "control" means (i) the power, direct or
 | 
			
		||||
indirect, to cause the direction or management of such entity, whether by
 | 
			
		||||
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
			
		||||
outstanding shares, or (iii) beneficial ownership of such entity.
 | 
			
		||||
 | 
			
		||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
 | 
			
		||||
permissions granted by this License.
 | 
			
		||||
 | 
			
		||||
"Source" form shall mean the preferred form for making modifications, including
 | 
			
		||||
but not limited to software source code, documentation source, and configuration
 | 
			
		||||
files.
 | 
			
		||||
 | 
			
		||||
"Object" form shall mean any form resulting from mechanical transformation or
 | 
			
		||||
translation of a Source form, including but not limited to compiled object code,
 | 
			
		||||
generated documentation, and conversions to other media types.
 | 
			
		||||
 | 
			
		||||
"Work" shall mean the work of authorship, whether in Source or Object form, made
 | 
			
		||||
available under the License, as indicated by a copyright notice that is included
 | 
			
		||||
in or attached to the work (an example is provided in the Appendix below).
 | 
			
		||||
 | 
			
		||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
 | 
			
		||||
is based on (or derived from) the Work and for which the editorial revisions,
 | 
			
		||||
annotations, elaborations, or other modifications represent, as a whole, an
 | 
			
		||||
original work of authorship. For the purposes of this License, Derivative Works
 | 
			
		||||
shall not include works that remain separable from, or merely link (or bind by
 | 
			
		||||
name) to the interfaces of, the Work and Derivative Works thereof.
 | 
			
		||||
 | 
			
		||||
"Contribution" shall mean any work of authorship, including the original version
 | 
			
		||||
of the Work and any modifications or additions to that Work or Derivative Works
 | 
			
		||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
 | 
			
		||||
by the copyright owner or by an individual or Legal Entity authorized to submit
 | 
			
		||||
on behalf of the copyright owner. For the purposes of this definition,
 | 
			
		||||
"submitted" means any form of electronic, verbal, or written communication sent
 | 
			
		||||
to the Licensor or its representatives, including but not limited to
 | 
			
		||||
communication on electronic mailing lists, source code control systems, and
 | 
			
		||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
 | 
			
		||||
the purpose of discussing and improving the Work, but excluding communication
 | 
			
		||||
that is conspicuously marked or otherwise designated in writing by the copyright
 | 
			
		||||
owner as "Not a Contribution."
 | 
			
		||||
 | 
			
		||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
 | 
			
		||||
of whom a Contribution has been received by Licensor and subsequently
 | 
			
		||||
incorporated within the Work.
 | 
			
		||||
 | 
			
		||||
2. Grant of Copyright License.
 | 
			
		||||
 | 
			
		||||
Subject to the terms and conditions of this License, each Contributor hereby
 | 
			
		||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 | 
			
		||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
 | 
			
		||||
publicly display, publicly perform, sublicense, and distribute the Work and such
 | 
			
		||||
Derivative Works in Source or Object form.
 | 
			
		||||
 | 
			
		||||
3. Grant of Patent License.
 | 
			
		||||
 | 
			
		||||
Subject to the terms and conditions of this License, each Contributor hereby
 | 
			
		||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 | 
			
		||||
irrevocable (except as stated in this section) patent license to make, have
 | 
			
		||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
 | 
			
		||||
such license applies only to those patent claims licensable by such Contributor
 | 
			
		||||
that are necessarily infringed by their Contribution(s) alone or by combination
 | 
			
		||||
of their Contribution(s) with the Work to which such Contribution(s) was
 | 
			
		||||
submitted. If You institute patent litigation against any entity (including a
 | 
			
		||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
 | 
			
		||||
Contribution incorporated within the Work constitutes direct or contributory
 | 
			
		||||
patent infringement, then any patent licenses granted to You under this License
 | 
			
		||||
for that Work shall terminate as of the date such litigation is filed.
 | 
			
		||||
 | 
			
		||||
4. Redistribution.
 | 
			
		||||
 | 
			
		||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
 | 
			
		||||
in any medium, with or without modifications, and in Source or Object form,
 | 
			
		||||
provided that You meet the following conditions:
 | 
			
		||||
 | 
			
		||||
You must give any other recipients of the Work or Derivative Works a copy of
 | 
			
		||||
this License; and
 | 
			
		||||
You must cause any modified files to carry prominent notices stating that You
 | 
			
		||||
changed the files; and
 | 
			
		||||
You must retain, in the Source form of any Derivative Works that You distribute,
 | 
			
		||||
all copyright, patent, trademark, and attribution notices from the Source form
 | 
			
		||||
of the Work, excluding those notices that do not pertain to any part of the
 | 
			
		||||
Derivative Works; and
 | 
			
		||||
If the Work includes a "NOTICE" text file as part of its distribution, then any
 | 
			
		||||
Derivative Works that You distribute must include a readable copy of the
 | 
			
		||||
attribution notices contained within such NOTICE file, excluding those notices
 | 
			
		||||
that do not pertain to any part of the Derivative Works, in at least one of the
 | 
			
		||||
following places: within a NOTICE text file distributed as part of the
 | 
			
		||||
Derivative Works; within the Source form or documentation, if provided along
 | 
			
		||||
with the Derivative Works; or, within a display generated by the Derivative
 | 
			
		||||
Works, if and wherever such third-party notices normally appear. The contents of
 | 
			
		||||
the NOTICE file are for informational purposes only and do not modify the
 | 
			
		||||
License. You may add Your own attribution notices within Derivative Works that
 | 
			
		||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
 | 
			
		||||
provided that such additional attribution notices cannot be construed as
 | 
			
		||||
modifying the License.
 | 
			
		||||
You may add Your own copyright statement to Your modifications and may provide
 | 
			
		||||
additional or different license terms and conditions for use, reproduction, or
 | 
			
		||||
distribution of Your modifications, or for any such Derivative Works as a whole,
 | 
			
		||||
provided Your use, reproduction, and distribution of the Work otherwise complies
 | 
			
		||||
with the conditions stated in this License.
 | 
			
		||||
 | 
			
		||||
5. Submission of Contributions.
 | 
			
		||||
 | 
			
		||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
 | 
			
		||||
for inclusion in the Work by You to the Licensor shall be under the terms and
 | 
			
		||||
conditions of this License, without any additional terms or conditions.
 | 
			
		||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
 | 
			
		||||
any separate license agreement you may have executed with Licensor regarding
 | 
			
		||||
such Contributions.
 | 
			
		||||
 | 
			
		||||
6. Trademarks.
 | 
			
		||||
 | 
			
		||||
This License does not grant permission to use the trade names, trademarks,
 | 
			
		||||
service marks, or product names of the Licensor, except as required for
 | 
			
		||||
reasonable and customary use in describing the origin of the Work and
 | 
			
		||||
reproducing the content of the NOTICE file.
 | 
			
		||||
 | 
			
		||||
7. Disclaimer of Warranty.
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, Licensor provides the
 | 
			
		||||
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
 | 
			
		||||
including, without limitation, any warranties or conditions of TITLE,
 | 
			
		||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
 | 
			
		||||
solely responsible for determining the appropriateness of using or
 | 
			
		||||
redistributing the Work and assume any risks associated with Your exercise of
 | 
			
		||||
permissions under this License.
 | 
			
		||||
 | 
			
		||||
8. Limitation of Liability.
 | 
			
		||||
 | 
			
		||||
In no event and under no legal theory, whether in tort (including negligence),
 | 
			
		||||
contract, or otherwise, unless required by applicable law (such as deliberate
 | 
			
		||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
 | 
			
		||||
liable to You for damages, including any direct, indirect, special, incidental,
 | 
			
		||||
or consequential damages of any character arising as a result of this License or
 | 
			
		||||
out of the use or inability to use the Work (including but not limited to
 | 
			
		||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
 | 
			
		||||
any and all other commercial damages or losses), even if such Contributor has
 | 
			
		||||
been advised of the possibility of such damages.
 | 
			
		||||
 | 
			
		||||
9. Accepting Warranty or Additional Liability.
 | 
			
		||||
 | 
			
		||||
While redistributing the Work or Derivative Works thereof, You may choose to
 | 
			
		||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
 | 
			
		||||
other liability obligations and/or rights consistent with this License. However,
 | 
			
		||||
in accepting such obligations, You may act only on Your own behalf and on Your
 | 
			
		||||
sole responsibility, not on behalf of any other Contributor, and only if You
 | 
			
		||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
 | 
			
		||||
incurred by, or claims asserted against, such Contributor by reason of your
 | 
			
		||||
accepting any such warranty or additional liability.
 | 
			
		||||
 | 
			
		||||
END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
APPENDIX: How to apply the Apache License to your work
 | 
			
		||||
 | 
			
		||||
To apply the Apache License to your work, attach the following boilerplate
 | 
			
		||||
notice, with the fields enclosed by brackets "[]" replaced with your own
 | 
			
		||||
identifying information. (Don't include the brackets!) The text should be
 | 
			
		||||
enclosed in the appropriate comment syntax for the file format. We also
 | 
			
		||||
recommend that a file or class name and description of purpose be included on
 | 
			
		||||
the same "printed page" as the copyright notice for easier identification within
 | 
			
		||||
third-party archives.
 | 
			
		||||
 | 
			
		||||
   Copyright [yyyy] [name of copyright owner]
 | 
			
		||||
 | 
			
		||||
   Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
   you may not use this file except in compliance with the License.
 | 
			
		||||
   You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
   Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
   distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
   See the License for the specific language governing permissions and
 | 
			
		||||
   limitations under the License.
 | 
			
		||||
 | 
			
		||||
= vendor/github.com/golang/glog/LICENSE 19cbd64715b51267a47bf3750cc6a8a5
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/golang/groupcache/lru licensed under: =
 | 
			
		||||
 | 
			
		||||
@@ -72487,6 +72288,39 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/karrick/godirwalk licensed under: =
 | 
			
		||||
 | 
			
		||||
BSD 2-Clause License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2017, Karrick McDermott
 | 
			
		||||
All rights reserved.
 | 
			
		||||
 | 
			
		||||
Redistribution and use in source and binary forms, with or without
 | 
			
		||||
modification, are permitted provided that the following conditions are met:
 | 
			
		||||
 | 
			
		||||
* Redistributions of source code must retain the above copyright notice, this
 | 
			
		||||
  list of conditions and the following disclaimer.
 | 
			
		||||
 | 
			
		||||
* Redistributions in binary form must reproduce the above copyright notice,
 | 
			
		||||
  this list of conditions and the following disclaimer in the documentation
 | 
			
		||||
  and/or other materials provided with the distribution.
 | 
			
		||||
 | 
			
		||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
			
		||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
			
		||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | 
			
		||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
			
		||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | 
			
		||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
			
		||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
= vendor/github.com/karrick/godirwalk/LICENSE 7bea66fc0a31c6329f9392034bee75d2
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/kisielk/sqlstruct licensed under: =
 | 
			
		||||
 | 
			
		||||
@@ -87880,6 +87714,41 @@ THE SOFTWARE.
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/sigma/go-inotify licensed under: =
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2009 The Go Authors. All rights reserved.
 | 
			
		||||
 | 
			
		||||
Redistribution and use in source and binary forms, with or without
 | 
			
		||||
modification, are permitted provided that the following conditions are
 | 
			
		||||
met:
 | 
			
		||||
 | 
			
		||||
   * Redistributions of source code must retain the above copyright
 | 
			
		||||
notice, this list of conditions and the following disclaimer.
 | 
			
		||||
   * Redistributions in binary form must reproduce the above
 | 
			
		||||
copyright notice, this list of conditions and the following disclaimer
 | 
			
		||||
in the documentation and/or other materials provided with the
 | 
			
		||||
distribution.
 | 
			
		||||
   * Neither the name of Google Inc. nor the names of its
 | 
			
		||||
contributors may be used to endorse or promote products derived from
 | 
			
		||||
this software without specific prior written permission.
 | 
			
		||||
 | 
			
		||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
			
		||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
			
		||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
			
		||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
			
		||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
			
		||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
			
		||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
			
		||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
			
		||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
= vendor/github.com/sigma/go-inotify/LICENSE 5d4950ecb7b26d2c5e4e7b4e0dd74707
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/github.com/sirupsen/logrus licensed under: =
 | 
			
		||||
 | 
			
		||||
@@ -108888,6 +108757,205 @@ Apache License
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/k8s.io/klog licensed under: =
 | 
			
		||||
 | 
			
		||||
Apache License
 | 
			
		||||
Version 2.0, January 2004
 | 
			
		||||
http://www.apache.org/licenses/
 | 
			
		||||
 | 
			
		||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
			
		||||
 | 
			
		||||
1. Definitions.
 | 
			
		||||
 | 
			
		||||
"License" shall mean the terms and conditions for use, reproduction, and
 | 
			
		||||
distribution as defined by Sections 1 through 9 of this document.
 | 
			
		||||
 | 
			
		||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
 | 
			
		||||
owner that is granting the License.
 | 
			
		||||
 | 
			
		||||
"Legal Entity" shall mean the union of the acting entity and all other entities
 | 
			
		||||
that control, are controlled by, or are under common control with that entity.
 | 
			
		||||
For the purposes of this definition, "control" means (i) the power, direct or
 | 
			
		||||
indirect, to cause the direction or management of such entity, whether by
 | 
			
		||||
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
			
		||||
outstanding shares, or (iii) beneficial ownership of such entity.
 | 
			
		||||
 | 
			
		||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
 | 
			
		||||
permissions granted by this License.
 | 
			
		||||
 | 
			
		||||
"Source" form shall mean the preferred form for making modifications, including
 | 
			
		||||
but not limited to software source code, documentation source, and configuration
 | 
			
		||||
files.
 | 
			
		||||
 | 
			
		||||
"Object" form shall mean any form resulting from mechanical transformation or
 | 
			
		||||
translation of a Source form, including but not limited to compiled object code,
 | 
			
		||||
generated documentation, and conversions to other media types.
 | 
			
		||||
 | 
			
		||||
"Work" shall mean the work of authorship, whether in Source or Object form, made
 | 
			
		||||
available under the License, as indicated by a copyright notice that is included
 | 
			
		||||
in or attached to the work (an example is provided in the Appendix below).
 | 
			
		||||
 | 
			
		||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
 | 
			
		||||
is based on (or derived from) the Work and for which the editorial revisions,
 | 
			
		||||
annotations, elaborations, or other modifications represent, as a whole, an
 | 
			
		||||
original work of authorship. For the purposes of this License, Derivative Works
 | 
			
		||||
shall not include works that remain separable from, or merely link (or bind by
 | 
			
		||||
name) to the interfaces of, the Work and Derivative Works thereof.
 | 
			
		||||
 | 
			
		||||
"Contribution" shall mean any work of authorship, including the original version
 | 
			
		||||
of the Work and any modifications or additions to that Work or Derivative Works
 | 
			
		||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
 | 
			
		||||
by the copyright owner or by an individual or Legal Entity authorized to submit
 | 
			
		||||
on behalf of the copyright owner. For the purposes of this definition,
 | 
			
		||||
"submitted" means any form of electronic, verbal, or written communication sent
 | 
			
		||||
to the Licensor or its representatives, including but not limited to
 | 
			
		||||
communication on electronic mailing lists, source code control systems, and
 | 
			
		||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
 | 
			
		||||
the purpose of discussing and improving the Work, but excluding communication
 | 
			
		||||
that is conspicuously marked or otherwise designated in writing by the copyright
 | 
			
		||||
owner as "Not a Contribution."
 | 
			
		||||
 | 
			
		||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
 | 
			
		||||
of whom a Contribution has been received by Licensor and subsequently
 | 
			
		||||
incorporated within the Work.
 | 
			
		||||
 | 
			
		||||
2. Grant of Copyright License.
 | 
			
		||||
 | 
			
		||||
Subject to the terms and conditions of this License, each Contributor hereby
 | 
			
		||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 | 
			
		||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
 | 
			
		||||
publicly display, publicly perform, sublicense, and distribute the Work and such
 | 
			
		||||
Derivative Works in Source or Object form.
 | 
			
		||||
 | 
			
		||||
3. Grant of Patent License.
 | 
			
		||||
 | 
			
		||||
Subject to the terms and conditions of this License, each Contributor hereby
 | 
			
		||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 | 
			
		||||
irrevocable (except as stated in this section) patent license to make, have
 | 
			
		||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
 | 
			
		||||
such license applies only to those patent claims licensable by such Contributor
 | 
			
		||||
that are necessarily infringed by their Contribution(s) alone or by combination
 | 
			
		||||
of their Contribution(s) with the Work to which such Contribution(s) was
 | 
			
		||||
submitted. If You institute patent litigation against any entity (including a
 | 
			
		||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
 | 
			
		||||
Contribution incorporated within the Work constitutes direct or contributory
 | 
			
		||||
patent infringement, then any patent licenses granted to You under this License
 | 
			
		||||
for that Work shall terminate as of the date such litigation is filed.
 | 
			
		||||
 | 
			
		||||
4. Redistribution.
 | 
			
		||||
 | 
			
		||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
 | 
			
		||||
in any medium, with or without modifications, and in Source or Object form,
 | 
			
		||||
provided that You meet the following conditions:
 | 
			
		||||
 | 
			
		||||
You must give any other recipients of the Work or Derivative Works a copy of
 | 
			
		||||
this License; and
 | 
			
		||||
You must cause any modified files to carry prominent notices stating that You
 | 
			
		||||
changed the files; and
 | 
			
		||||
You must retain, in the Source form of any Derivative Works that You distribute,
 | 
			
		||||
all copyright, patent, trademark, and attribution notices from the Source form
 | 
			
		||||
of the Work, excluding those notices that do not pertain to any part of the
 | 
			
		||||
Derivative Works; and
 | 
			
		||||
If the Work includes a "NOTICE" text file as part of its distribution, then any
 | 
			
		||||
Derivative Works that You distribute must include a readable copy of the
 | 
			
		||||
attribution notices contained within such NOTICE file, excluding those notices
 | 
			
		||||
that do not pertain to any part of the Derivative Works, in at least one of the
 | 
			
		||||
following places: within a NOTICE text file distributed as part of the
 | 
			
		||||
Derivative Works; within the Source form or documentation, if provided along
 | 
			
		||||
with the Derivative Works; or, within a display generated by the Derivative
 | 
			
		||||
Works, if and wherever such third-party notices normally appear. The contents of
 | 
			
		||||
the NOTICE file are for informational purposes only and do not modify the
 | 
			
		||||
License. You may add Your own attribution notices within Derivative Works that
 | 
			
		||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
 | 
			
		||||
provided that such additional attribution notices cannot be construed as
 | 
			
		||||
modifying the License.
 | 
			
		||||
You may add Your own copyright statement to Your modifications and may provide
 | 
			
		||||
additional or different license terms and conditions for use, reproduction, or
 | 
			
		||||
distribution of Your modifications, or for any such Derivative Works as a whole,
 | 
			
		||||
provided Your use, reproduction, and distribution of the Work otherwise complies
 | 
			
		||||
with the conditions stated in this License.
 | 
			
		||||
 | 
			
		||||
5. Submission of Contributions.
 | 
			
		||||
 | 
			
		||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
 | 
			
		||||
for inclusion in the Work by You to the Licensor shall be under the terms and
 | 
			
		||||
conditions of this License, without any additional terms or conditions.
 | 
			
		||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
 | 
			
		||||
any separate license agreement you may have executed with Licensor regarding
 | 
			
		||||
such Contributions.
 | 
			
		||||
 | 
			
		||||
6. Trademarks.
 | 
			
		||||
 | 
			
		||||
This License does not grant permission to use the trade names, trademarks,
 | 
			
		||||
service marks, or product names of the Licensor, except as required for
 | 
			
		||||
reasonable and customary use in describing the origin of the Work and
 | 
			
		||||
reproducing the content of the NOTICE file.
 | 
			
		||||
 | 
			
		||||
7. Disclaimer of Warranty.
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, Licensor provides the
 | 
			
		||||
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
 | 
			
		||||
including, without limitation, any warranties or conditions of TITLE,
 | 
			
		||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
 | 
			
		||||
solely responsible for determining the appropriateness of using or
 | 
			
		||||
redistributing the Work and assume any risks associated with Your exercise of
 | 
			
		||||
permissions under this License.
 | 
			
		||||
 | 
			
		||||
8. Limitation of Liability.
 | 
			
		||||
 | 
			
		||||
In no event and under no legal theory, whether in tort (including negligence),
 | 
			
		||||
contract, or otherwise, unless required by applicable law (such as deliberate
 | 
			
		||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
 | 
			
		||||
liable to You for damages, including any direct, indirect, special, incidental,
 | 
			
		||||
or consequential damages of any character arising as a result of this License or
 | 
			
		||||
out of the use or inability to use the Work (including but not limited to
 | 
			
		||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
 | 
			
		||||
any and all other commercial damages or losses), even if such Contributor has
 | 
			
		||||
been advised of the possibility of such damages.
 | 
			
		||||
 | 
			
		||||
9. Accepting Warranty or Additional Liability.
 | 
			
		||||
 | 
			
		||||
While redistributing the Work or Derivative Works thereof, You may choose to
 | 
			
		||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
 | 
			
		||||
other liability obligations and/or rights consistent with this License. However,
 | 
			
		||||
in accepting such obligations, You may act only on Your own behalf and on Your
 | 
			
		||||
sole responsibility, not on behalf of any other Contributor, and only if You
 | 
			
		||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
 | 
			
		||||
incurred by, or claims asserted against, such Contributor by reason of your
 | 
			
		||||
accepting any such warranty or additional liability.
 | 
			
		||||
 | 
			
		||||
END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
APPENDIX: How to apply the Apache License to your work
 | 
			
		||||
 | 
			
		||||
To apply the Apache License to your work, attach the following boilerplate
 | 
			
		||||
notice, with the fields enclosed by brackets "[]" replaced with your own
 | 
			
		||||
identifying information. (Don't include the brackets!) The text should be
 | 
			
		||||
enclosed in the appropriate comment syntax for the file format. We also
 | 
			
		||||
recommend that a file or class name and description of purpose be included on
 | 
			
		||||
the same "printed page" as the copyright notice for easier identification within
 | 
			
		||||
third-party archives.
 | 
			
		||||
 | 
			
		||||
   Copyright [yyyy] [name of copyright owner]
 | 
			
		||||
 | 
			
		||||
   Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
   you may not use this file except in compliance with the License.
 | 
			
		||||
   You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
   Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
   distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
   See the License for the specific language governing permissions and
 | 
			
		||||
   limitations under the License.
 | 
			
		||||
 | 
			
		||||
= vendor/k8s.io/klog/LICENSE 19cbd64715b51267a47bf3750cc6a8a5
 | 
			
		||||
================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
================================================================================
 | 
			
		||||
= vendor/k8s.io/kube-openapi/cmd/openapi-gen licensed under: =
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,11 +24,11 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/tools/clientcmd"
 | 
			
		||||
	clientapi "k8s.io/client-go/tools/clientcmd/api"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/apis/core"
 | 
			
		||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
			
		||||
)
 | 
			
		||||
@@ -61,22 +61,22 @@ func flattenSubsets(subsets []api.EndpointSubset) []string {
 | 
			
		||||
func main() {
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	glog.Info("Kubernetes Elasticsearch logging discovery")
 | 
			
		||||
	klog.Info("Kubernetes Elasticsearch logging discovery")
 | 
			
		||||
 | 
			
		||||
	cc, err := buildConfigFromEnvs(os.Getenv("APISERVER_HOST"), os.Getenv("KUBE_CONFIG_FILE"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Failed to make client: %v", err)
 | 
			
		||||
		klog.Fatalf("Failed to make client: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	client, err := clientset.NewForConfig(cc)
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Failed to make client: %v", err)
 | 
			
		||||
		klog.Fatalf("Failed to make client: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	namespace := metav1.NamespaceSystem
 | 
			
		||||
	envNamespace := os.Getenv("NAMESPACE")
 | 
			
		||||
	if envNamespace != "" {
 | 
			
		||||
		if _, err := client.Core().Namespaces().Get(envNamespace, metav1.GetOptions{}); err != nil {
 | 
			
		||||
			glog.Fatalf("%s namespace doesn't exist: %v", envNamespace, err)
 | 
			
		||||
			klog.Fatalf("%s namespace doesn't exist: %v", envNamespace, err)
 | 
			
		||||
		}
 | 
			
		||||
		namespace = envNamespace
 | 
			
		||||
	}
 | 
			
		||||
@@ -98,7 +98,7 @@ func main() {
 | 
			
		||||
	// If we did not find an elasticsearch logging service then log a warning
 | 
			
		||||
	// and return without adding any unicast hosts.
 | 
			
		||||
	if elasticsearch == nil {
 | 
			
		||||
		glog.Warningf("Failed to find the elasticsearch-logging service: %v", err)
 | 
			
		||||
		klog.Warningf("Failed to find the elasticsearch-logging service: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -112,17 +112,17 @@ func main() {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		addrs = flattenSubsets(endpoints.Subsets)
 | 
			
		||||
		glog.Infof("Found %s", addrs)
 | 
			
		||||
		klog.Infof("Found %s", addrs)
 | 
			
		||||
		if len(addrs) > 0 && len(addrs) >= count {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// If there was an error finding endpoints then log a warning and quit.
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Warningf("Error finding endpoints: %v", err)
 | 
			
		||||
		klog.Warningf("Error finding endpoints: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Endpoints = %s", addrs)
 | 
			
		||||
	klog.Infof("Endpoints = %s", addrs)
 | 
			
		||||
	fmt.Printf("discovery.zen.ping.unicast.hosts: [%s]\n", strings.Join(addrs, ", "))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,12 +17,12 @@ go_library(
 | 
			
		||||
    importpath = "k8s.io/kubernetes/cluster/images/etcd-version-monitor",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/gogo/protobuf/proto:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_golang/prometheus/promhttp:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_model/go:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/common/expfmt:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,12 +25,12 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gogo/protobuf/proto"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/prometheus/client_golang/prometheus"
 | 
			
		||||
	"github.com/prometheus/client_golang/prometheus/promhttp"
 | 
			
		||||
	dto "github.com/prometheus/client_model/go"
 | 
			
		||||
	"github.com/prometheus/common/expfmt"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Initialize the prometheus instrumentation and client related flags.
 | 
			
		||||
@@ -245,7 +245,7 @@ func getVersionPeriodically(stopCh <-chan struct{}) {
 | 
			
		||||
	lastSeenBinaryVersion := ""
 | 
			
		||||
	for {
 | 
			
		||||
		if err := getVersion(&lastSeenBinaryVersion); err != nil {
 | 
			
		||||
			glog.Errorf("Failed to fetch etcd version: %v", err)
 | 
			
		||||
			klog.Errorf("Failed to fetch etcd version: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		select {
 | 
			
		||||
		case <-stopCh:
 | 
			
		||||
@@ -399,7 +399,7 @@ func main() {
 | 
			
		||||
	go getVersionPeriodically(stopCh)
 | 
			
		||||
 | 
			
		||||
	// Serve our metrics on listenAddress/metricsPath.
 | 
			
		||||
	glog.Infof("Listening on: %v", listenAddress)
 | 
			
		||||
	klog.Infof("Listening on: %v", listenAddress)
 | 
			
		||||
	http.Handle(metricsPath, promhttp.HandlerFor(gatherer, promhttp.HandlerOpts{}))
 | 
			
		||||
	glog.Errorf("Stopped listening/serving metrics: %v", http.ListenAndServe(listenAddress, nil))
 | 
			
		||||
	klog.Errorf("Stopped listening/serving metrics: %v", http.ListenAndServe(listenAddress, nil))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,8 @@ go_library(
 | 
			
		||||
        "//vendor/github.com/coreos/etcd/wal:go_default_library",
 | 
			
		||||
        "//vendor/github.com/coreos/etcd/wal/walpb:go_default_library",
 | 
			
		||||
        "//vendor/github.com/coreos/go-semver/semver:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DataDirectory provides utilities for initializing and backing up an
 | 
			
		||||
@@ -45,7 +45,7 @@ func OpenOrCreateDataDirectory(path string) (*DataDirectory, error) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if !exists {
 | 
			
		||||
		glog.Infof("data directory '%s' does not exist, creating it", path)
 | 
			
		||||
		klog.Infof("data directory '%s' does not exist, creating it", path)
 | 
			
		||||
		err := os.MkdirAll(path, 0777)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("failed to create data directory %s: %v", path, err)
 | 
			
		||||
@@ -67,7 +67,7 @@ func (d *DataDirectory) Initialize(target *EtcdVersionPair) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if isEmpty {
 | 
			
		||||
		glog.Infof("data directory '%s' is empty, writing target version '%s' to version.txt", d.path, target)
 | 
			
		||||
		klog.Infof("data directory '%s' is empty, writing target version '%s' to version.txt", d.path, target)
 | 
			
		||||
		err = d.versionFile.Write(target)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return fmt.Errorf("failed to write version.txt to '%s': %v", d.path, err)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -85,7 +85,7 @@ func runMigrate() {
 | 
			
		||||
	if opts.name == "" {
 | 
			
		||||
		hostname, err := os.Hostname()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Errorf("Error while getting hostname to supply default --name: %v", err)
 | 
			
		||||
			klog.Errorf("Error while getting hostname to supply default --name: %v", err)
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		opts.name = fmt.Sprintf("etcd-%s", hostname)
 | 
			
		||||
@@ -98,29 +98,29 @@ func runMigrate() {
 | 
			
		||||
		opts.initialCluster = fmt.Sprintf("%s=http://localhost:2380", opts.name)
 | 
			
		||||
	}
 | 
			
		||||
	if opts.targetStorage == "" {
 | 
			
		||||
		glog.Errorf("--target-storage is required")
 | 
			
		||||
		klog.Errorf("--target-storage is required")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	if opts.targetVersion == "" {
 | 
			
		||||
		glog.Errorf("--target-version is required")
 | 
			
		||||
		klog.Errorf("--target-version is required")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	if opts.dataDir == "" {
 | 
			
		||||
		glog.Errorf("--data-dir is required")
 | 
			
		||||
		klog.Errorf("--data-dir is required")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	if opts.bundledVersionString == "" {
 | 
			
		||||
		glog.Errorf("--bundled-versions is required")
 | 
			
		||||
		klog.Errorf("--bundled-versions is required")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bundledVersions, err := ParseSupportedVersions(opts.bundledVersionString)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Failed to parse --supported-versions: %v", err)
 | 
			
		||||
		klog.Errorf("Failed to parse --supported-versions: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	err = validateBundledVersions(bundledVersions, opts.binDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Failed to validate that 'etcd-<version>' and 'etcdctl-<version>' binaries exist in --bin-dir '%s' for all --bundled-verions '%s': %v",
 | 
			
		||||
		klog.Errorf("Failed to validate that 'etcd-<version>' and 'etcdctl-<version>' binaries exist in --bin-dir '%s' for all --bundled-verions '%s': %v",
 | 
			
		||||
			opts.binDir, opts.bundledVersionString, err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
@@ -139,7 +139,7 @@ func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls
 | 
			
		||||
 | 
			
		||||
	dataDir, err := OpenOrCreateDataDirectory(dataDirPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Error opening or creating data directory %s: %v", dataDirPath, err)
 | 
			
		||||
		klog.Errorf("Error opening or creating data directory %s: %v", dataDirPath, err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -158,7 +158,7 @@ func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls
 | 
			
		||||
	}
 | 
			
		||||
	client, err := NewEtcdMigrateClient(cfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Migration failed: %v", err)
 | 
			
		||||
		klog.Errorf("Migration failed: %v", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	defer client.Close()
 | 
			
		||||
@@ -167,7 +167,7 @@ func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls
 | 
			
		||||
 | 
			
		||||
	err = migrator.MigrateIfNeeded(target)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Migration failed: %v", err)
 | 
			
		||||
		klog.Errorf("Migration failed: %v", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	clientv2 "github.com/coreos/etcd/client"
 | 
			
		||||
	"github.com/coreos/etcd/clientv3"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CombinedEtcdClient provides an implementation of EtcdMigrateClient using a combination of the etcd v2 client, v3 client
 | 
			
		||||
@@ -202,13 +202,13 @@ func (e *CombinedEtcdClient) AttachLease(leaseDuration time.Duration) error {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("Error while creating lease: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Lease with TTL: %v created", lease.TTL)
 | 
			
		||||
	klog.Infof("Lease with TTL: %v created", lease.TTL)
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Attaching lease to %d entries", len(objectsResp.Kvs))
 | 
			
		||||
	klog.Infof("Attaching lease to %d entries", len(objectsResp.Kvs))
 | 
			
		||||
	for _, kv := range objectsResp.Kvs {
 | 
			
		||||
		putResp, err := v3client.KV.Put(ctx, string(kv.Key), string(kv.Value), clientv3.WithLease(lease.ID), clientv3.WithPrevKV())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Errorf("Error while attaching lease to: %s", string(kv.Key))
 | 
			
		||||
			klog.Errorf("Error while attaching lease to: %s", string(kv.Key))
 | 
			
		||||
		}
 | 
			
		||||
		if bytes.Compare(putResp.PrevKv.Value, kv.Value) != 0 {
 | 
			
		||||
			return fmt.Errorf("concurrent access to key detected when setting lease on %s, expected previous value of %s but got %s",
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// EtcdMigrateServer manages starting and stopping a versioned etcd server binary.
 | 
			
		||||
@@ -75,10 +75,10 @@ func (r *EtcdMigrateServer) Start(version *EtcdVersion) error {
 | 
			
		||||
		case <-interval.C:
 | 
			
		||||
			err := r.client.SetEtcdVersionKeyValue(version)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				glog.Infof("Still waiting for etcd to start, current error: %v", err)
 | 
			
		||||
				klog.Infof("Still waiting for etcd to start, current error: %v", err)
 | 
			
		||||
				// keep waiting
 | 
			
		||||
			} else {
 | 
			
		||||
				glog.Infof("Etcd on port %d is up.", r.cfg.port)
 | 
			
		||||
				klog.Infof("Etcd on port %d is up.", r.cfg.port)
 | 
			
		||||
				r.cmd = etcdCmd
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
@@ -114,7 +114,7 @@ func (r *EtcdMigrateServer) Stop() error {
 | 
			
		||||
		case <-stopped:
 | 
			
		||||
			return
 | 
			
		||||
		case <-timedout:
 | 
			
		||||
			glog.Infof("etcd server has not terminated gracefully after %s, killing it.", gracefulWait)
 | 
			
		||||
			klog.Infof("etcd server has not terminated gracefully after %s, killing it.", gracefulWait)
 | 
			
		||||
			r.cmd.Process.Kill()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
@@ -122,11 +122,11 @@ func (r *EtcdMigrateServer) Stop() error {
 | 
			
		||||
	err = r.cmd.Wait()
 | 
			
		||||
	stopped <- true
 | 
			
		||||
	if exiterr, ok := err.(*exec.ExitError); ok {
 | 
			
		||||
		glog.Infof("etcd server stopped (signal: %s)", exiterr.Error())
 | 
			
		||||
		klog.Infof("etcd server stopped (signal: %s)", exiterr.Error())
 | 
			
		||||
		// stopped
 | 
			
		||||
	} else if err != nil {
 | 
			
		||||
		return fmt.Errorf("error waiting for etcd to stop: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Stopped etcd server %s", r.cfg.name)
 | 
			
		||||
	klog.Infof("Stopped etcd server %s", r.cfg.name)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/blang/semver"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// EtcdMigrateCfg provides all configuration required to perform etcd data upgrade/downgrade migrations.
 | 
			
		||||
@@ -63,7 +63,7 @@ type Migrator struct {
 | 
			
		||||
 | 
			
		||||
// MigrateIfNeeded upgrades or downgrades the etcd data directory to the given target version.
 | 
			
		||||
func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
 | 
			
		||||
	glog.Infof("Starting migration to %s", target)
 | 
			
		||||
	klog.Infof("Starting migration to %s", target)
 | 
			
		||||
	err := m.dataDirectory.Initialize(target)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("failed to initialize data directory %s: %v", m.dataDirectory.path, err)
 | 
			
		||||
@@ -84,28 +84,28 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		glog.Infof("Converging current version '%s' to target version '%s'", current, target)
 | 
			
		||||
		klog.Infof("Converging current version '%s' to target version '%s'", current, target)
 | 
			
		||||
		currentNextMinorVersion := &EtcdVersion{Version: semver.Version{Major: current.version.Major, Minor: current.version.Minor + 1}}
 | 
			
		||||
		switch {
 | 
			
		||||
		case current.version.MajorMinorEquals(target.version) || currentNextMinorVersion.MajorMinorEquals(target.version):
 | 
			
		||||
			glog.Infof("current version '%s' equals or is one minor version previous of target version '%s' - migration complete", current, target)
 | 
			
		||||
			klog.Infof("current version '%s' equals or is one minor version previous of target version '%s' - migration complete", current, target)
 | 
			
		||||
			err = m.dataDirectory.versionFile.Write(target)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return fmt.Errorf("failed to write version.txt to '%s': %v", m.dataDirectory.path, err)
 | 
			
		||||
			}
 | 
			
		||||
			return nil
 | 
			
		||||
		case current.storageVersion == storageEtcd2 && target.storageVersion == storageEtcd3:
 | 
			
		||||
			glog.Infof("upgrading from etcd2 storage to etcd3 storage")
 | 
			
		||||
			klog.Infof("upgrading from etcd2 storage to etcd3 storage")
 | 
			
		||||
			current, err = m.etcd2ToEtcd3Upgrade(current, target)
 | 
			
		||||
		case current.version.Major == 3 && target.version.Major == 2:
 | 
			
		||||
			glog.Infof("downgrading from etcd 3.x to 2.x")
 | 
			
		||||
			klog.Infof("downgrading from etcd 3.x to 2.x")
 | 
			
		||||
			current, err = m.rollbackToEtcd2(current, target)
 | 
			
		||||
		case current.version.Major == target.version.Major && current.version.Minor < target.version.Minor:
 | 
			
		||||
			stepVersion := m.cfg.supportedVersions.NextVersionPair(current)
 | 
			
		||||
			glog.Infof("upgrading etcd from %s to %s", current, stepVersion)
 | 
			
		||||
			klog.Infof("upgrading etcd from %s to %s", current, stepVersion)
 | 
			
		||||
			current, err = m.minorVersionUpgrade(current, stepVersion)
 | 
			
		||||
		case current.version.Major == 3 && target.version.Major == 3 && current.version.Minor > target.version.Minor:
 | 
			
		||||
			glog.Infof("rolling etcd back from %s to %s", current, target)
 | 
			
		||||
			klog.Infof("rolling etcd back from %s to %s", current, target)
 | 
			
		||||
			current, err = m.rollbackEtcd3MinorVersion(current, target)
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
@@ -116,13 +116,13 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
 | 
			
		||||
 | 
			
		||||
func (m *Migrator) backupEtcd2(current *EtcdVersion) error {
 | 
			
		||||
	backupDir := fmt.Sprintf("%s/%s", m.dataDirectory, "migration-backup")
 | 
			
		||||
	glog.Infof("Backup etcd before starting migration")
 | 
			
		||||
	klog.Infof("Backup etcd before starting migration")
 | 
			
		||||
	err := os.Mkdir(backupDir, 0666)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("failed to create backup directory before starting migration: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	m.client.Backup(current, backupDir)
 | 
			
		||||
	glog.Infof("Backup done in %s", backupDir)
 | 
			
		||||
	klog.Infof("Backup done in %s", backupDir)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -131,7 +131,7 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
 | 
			
		||||
		return nil, fmt.Errorf("rollback from %s to %s not supported, only rollbacks to the previous minor version are supported", current.version, target.version)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Performing etcd %s -> %s rollback", current.version, target.version)
 | 
			
		||||
	klog.Infof("Performing etcd %s -> %s rollback", current.version, target.version)
 | 
			
		||||
	err := m.dataDirectory.Backup()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -145,14 +145,14 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
 | 
			
		||||
 | 
			
		||||
	// Start current version of etcd.
 | 
			
		||||
	runner := m.newServer()
 | 
			
		||||
	glog.Infof("Starting etcd version %s to capture rollback snapshot.", current.version)
 | 
			
		||||
	klog.Infof("Starting etcd version %s to capture rollback snapshot.", current.version)
 | 
			
		||||
	err = runner.Start(current.version)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Unable to automatically downgrade etcd: starting etcd version %s to capture rollback snapshot failed: %v", current.version, err)
 | 
			
		||||
		klog.Fatalf("Unable to automatically downgrade etcd: starting etcd version %s to capture rollback snapshot failed: %v", current.version, err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Snapshotting etcd %s to %s", current.version, snapshotFilename)
 | 
			
		||||
	klog.Infof("Snapshotting etcd %s to %s", current.version, snapshotFilename)
 | 
			
		||||
	err = m.client.Snapshot(current.version, snapshotFilename)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -163,7 +163,7 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Backing up data before rolling back")
 | 
			
		||||
	klog.Infof("Backing up data before rolling back")
 | 
			
		||||
	backupDir := fmt.Sprintf("%s.bak", m.dataDirectory)
 | 
			
		||||
	err = os.RemoveAll(backupDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -178,7 +178,7 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Restoring etcd %s from %s", target.version, snapshotFilename)
 | 
			
		||||
	klog.Infof("Restoring etcd %s from %s", target.version, snapshotFilename)
 | 
			
		||||
	err = m.client.Restore(target.version, snapshotFilename)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -195,7 +195,7 @@ func (m *Migrator) rollbackToEtcd2(current *EtcdVersionPair, target *EtcdVersion
 | 
			
		||||
	if !(current.version.Major == 3 && current.version.Minor == 0 && target.version.Major == 2 && target.version.Minor == 2) {
 | 
			
		||||
		return nil, fmt.Errorf("etcd3 -> etcd2 downgrade is supported only between 3.0.x and 2.2.x, got current %s target %s", current, target)
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Backup and remove all existing v2 data")
 | 
			
		||||
	klog.Infof("Backup and remove all existing v2 data")
 | 
			
		||||
	err := m.dataDirectory.Backup()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -214,12 +214,12 @@ func (m *Migrator) etcd2ToEtcd3Upgrade(current *EtcdVersionPair, target *EtcdVer
 | 
			
		||||
	}
 | 
			
		||||
	runner := m.newServer()
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Performing etcd2 -> etcd3 migration")
 | 
			
		||||
	klog.Infof("Performing etcd2 -> etcd3 migration")
 | 
			
		||||
	err := m.client.Migrate(target.version)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Attaching leases to TTL entries")
 | 
			
		||||
	klog.Infof("Attaching leases to TTL entries")
 | 
			
		||||
 | 
			
		||||
	// Now attach lease to all keys.
 | 
			
		||||
	// To do it, we temporarily start etcd on a random port (so that
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ import (
 | 
			
		||||
	"github.com/coreos/etcd/wal"
 | 
			
		||||
	"github.com/coreos/etcd/wal/walpb"
 | 
			
		||||
	"github.com/coreos/go-semver/semver"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const rollbackVersion = "2.2.0"
 | 
			
		||||
@@ -50,7 +50,7 @@ const rollbackVersion = "2.2.0"
 | 
			
		||||
// RollbackV3ToV2 rolls back an etcd 3.0.x data directory to the 2.x.x version specified by rollbackVersion.
 | 
			
		||||
func RollbackV3ToV2(migrateDatadir string, ttl time.Duration) error {
 | 
			
		||||
	dbpath := path.Join(migrateDatadir, "member", "snap", "db")
 | 
			
		||||
	glog.Infof("Rolling db file %s back to etcd 2.x", dbpath)
 | 
			
		||||
	klog.Infof("Rolling db file %s back to etcd 2.x", dbpath)
 | 
			
		||||
 | 
			
		||||
	// etcd3 store backend. We will use it to parse v3 data files and extract information.
 | 
			
		||||
	be := backend.NewDefaultBackend(dbpath)
 | 
			
		||||
@@ -139,7 +139,7 @@ func RollbackV3ToV2(migrateDatadir string, ttl time.Duration) error {
 | 
			
		||||
				v = rollbackVersion
 | 
			
		||||
			}
 | 
			
		||||
			if _, err := st.Set(n.Key, n.Dir, v, store.TTLOptionSet{}); err != nil {
 | 
			
		||||
				glog.Error(err)
 | 
			
		||||
				klog.Error(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// update nodes
 | 
			
		||||
@@ -147,7 +147,7 @@ func RollbackV3ToV2(migrateDatadir string, ttl time.Duration) error {
 | 
			
		||||
			if len(fields) == 4 && fields[2] == "members" {
 | 
			
		||||
				nodeID, err := strconv.ParseUint(fields[3], 16, 64)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					glog.Fatalf("failed to parse member ID (%s): %v", fields[3], err)
 | 
			
		||||
					klog.Fatalf("failed to parse member ID (%s): %v", fields[3], err)
 | 
			
		||||
				}
 | 
			
		||||
				nodes = append(nodes, nodeID)
 | 
			
		||||
			}
 | 
			
		||||
@@ -172,7 +172,7 @@ func RollbackV3ToV2(migrateDatadir string, ttl time.Duration) error {
 | 
			
		||||
	if err := snapshotter.SaveSnap(raftSnap); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Finished successfully")
 | 
			
		||||
	klog.Infof("Finished successfully")
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -214,7 +214,7 @@ func traverseAndDeleteEmptyDir(st store.Store, dir string) error {
 | 
			
		||||
	}
 | 
			
		||||
	for _, node := range e.Node.Nodes {
 | 
			
		||||
		if !node.Dir {
 | 
			
		||||
			glog.V(2).Infof("key: %s", node.Key[len(etcdserver.StoreKeysPrefix):])
 | 
			
		||||
			klog.V(2).Infof("key: %s", node.Key[len(etcdserver.StoreKeysPrefix):])
 | 
			
		||||
		} else {
 | 
			
		||||
			err := traverseAndDeleteEmptyDir(st, node.Key)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
@@ -344,6 +344,6 @@ func applyRequest(r *pb.Request, applyV2 etcdserver.ApplierV2) {
 | 
			
		||||
	case "POST", "QGET", "SYNC":
 | 
			
		||||
		return
 | 
			
		||||
	default:
 | 
			
		||||
		glog.Fatal("unknown command")
 | 
			
		||||
		klog.Fatal("unknown command")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,8 +24,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,8 +24,8 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
@@ -58,7 +58,7 @@ const (
 | 
			
		||||
func NewCloudControllerManagerCommand() *cobra.Command {
 | 
			
		||||
	s, err := options.NewCloudControllerManagerOptions()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
		klog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
@@ -106,21 +106,21 @@ the cloud specific control loops shipped with Kubernetes.`,
 | 
			
		||||
// Run runs the ExternalCMServer.  This should never exit.
 | 
			
		||||
func Run(c *cloudcontrollerconfig.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
 | 
			
		||||
	cloud, err := cloudprovider.InitCloudProvider(c.ComponentConfig.KubeCloudShared.CloudProvider.Name, c.ComponentConfig.KubeCloudShared.CloudProvider.CloudConfigFile)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
			
		||||
		klog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	if cloud == nil {
 | 
			
		||||
		glog.Fatalf("cloud provider is nil")
 | 
			
		||||
		klog.Fatalf("cloud provider is nil")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cloud.HasClusterID() == false {
 | 
			
		||||
		if c.ComponentConfig.KubeCloudShared.AllowUntaggedCloud == true {
 | 
			
		||||
			glog.Warning("detected a cluster without a ClusterID.  A ClusterID will be required in the future.  Please tag your cluster to avoid any future issues")
 | 
			
		||||
			klog.Warning("detected a cluster without a ClusterID.  A ClusterID will be required in the future.  Please tag your cluster to avoid any future issues")
 | 
			
		||||
		} else {
 | 
			
		||||
			glog.Fatalf("no ClusterID found.  A ClusterID is required for the cloud provider to function properly.  This check can be bypassed by setting the allow-untagged-cloud option")
 | 
			
		||||
			klog.Fatalf("no ClusterID found.  A ClusterID is required for the cloud provider to function properly.  This check can be bypassed by setting the allow-untagged-cloud option")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -128,7 +128,7 @@ func Run(c *cloudcontrollerconfig.CompletedConfig, stopCh <-chan struct{}) error
 | 
			
		||||
	if cz, err := configz.New(ConfigzName); err == nil {
 | 
			
		||||
		cz.Set(c.ComponentConfig)
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.Errorf("unable to register configz: %c", err)
 | 
			
		||||
		klog.Errorf("unable to register configz: %c", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Start the controller manager HTTP server
 | 
			
		||||
@@ -150,7 +150,7 @@ func Run(c *cloudcontrollerconfig.CompletedConfig, stopCh <-chan struct{}) error
 | 
			
		||||
 | 
			
		||||
	run := func(ctx context.Context) {
 | 
			
		||||
		if err := startControllers(c, ctx.Done(), cloud); err != nil {
 | 
			
		||||
			glog.Fatalf("error running controllers: %v", err)
 | 
			
		||||
			klog.Fatalf("error running controllers: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -177,7 +177,7 @@ func Run(c *cloudcontrollerconfig.CompletedConfig, stopCh <-chan struct{}) error
 | 
			
		||||
			EventRecorder: c.EventRecorder,
 | 
			
		||||
		})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("error creating lock: %v", err)
 | 
			
		||||
		klog.Fatalf("error creating lock: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Try and become the leader and start cloud controller manager loops
 | 
			
		||||
@@ -189,7 +189,7 @@ func Run(c *cloudcontrollerconfig.CompletedConfig, stopCh <-chan struct{}) error
 | 
			
		||||
		Callbacks: leaderelection.LeaderCallbacks{
 | 
			
		||||
			OnStartedLeading: run,
 | 
			
		||||
			OnStoppedLeading: func() {
 | 
			
		||||
				glog.Fatalf("leaderelection lost")
 | 
			
		||||
				klog.Fatalf("leaderelection lost")
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
@@ -230,7 +230,7 @@ func startControllers(c *cloudcontrollerconfig.CompletedConfig, stop <-chan stru
 | 
			
		||||
		c.ComponentConfig.KubeCloudShared.ClusterName,
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
		klog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
	} else {
 | 
			
		||||
		go serviceController.Run(stop, int(c.ComponentConfig.ServiceController.ConcurrentServiceSyncs))
 | 
			
		||||
		time.Sleep(wait.Jitter(c.ComponentConfig.Generic.ControllerStartInterval.Duration, ControllerStartJitter))
 | 
			
		||||
@@ -239,13 +239,13 @@ func startControllers(c *cloudcontrollerconfig.CompletedConfig, stop <-chan stru
 | 
			
		||||
	// If CIDRs should be allocated for pods and set on the CloudProvider, then start the route controller
 | 
			
		||||
	if c.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs && c.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes {
 | 
			
		||||
		if routes, ok := cloud.Routes(); !ok {
 | 
			
		||||
			glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
 | 
			
		||||
			klog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
 | 
			
		||||
		} else {
 | 
			
		||||
			var clusterCIDR *net.IPNet
 | 
			
		||||
			if len(strings.TrimSpace(c.ComponentConfig.KubeCloudShared.ClusterCIDR)) != 0 {
 | 
			
		||||
				_, clusterCIDR, err = net.ParseCIDR(c.ComponentConfig.KubeCloudShared.ClusterCIDR)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", c.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
					klog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", c.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -254,14 +254,14 @@ func startControllers(c *cloudcontrollerconfig.CompletedConfig, stop <-chan stru
 | 
			
		||||
			time.Sleep(wait.Jitter(c.ComponentConfig.Generic.ControllerStartInterval.Duration, ControllerStartJitter))
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", c.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs, c.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
 | 
			
		||||
		klog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", c.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs, c.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// If apiserver is not running we should wait for some time and fail only then. This is particularly
 | 
			
		||||
	// important when we start apiserver and controller manager at the same time.
 | 
			
		||||
	err = genericcontrollermanager.WaitForAPIServer(c.VersionedClient, 10*time.Second)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Failed to wait for apiserver being healthy: %v", err)
 | 
			
		||||
		klog.Fatalf("Failed to wait for apiserver being healthy: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	c.SharedInformers.Start(stop)
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import (
 | 
			
		||||
	"net"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
@@ -265,7 +265,7 @@ func (o *CloudControllerManagerOptions) Config() (*cloudcontrollerconfig.Config,
 | 
			
		||||
 | 
			
		||||
func createRecorder(kubeClient clientset.Interface, userAgent string) record.EventRecorder {
 | 
			
		||||
	eventBroadcaster := record.NewBroadcaster()
 | 
			
		||||
	eventBroadcaster.StartLogging(glog.Infof)
 | 
			
		||||
	eventBroadcaster.StartLogging(klog.Infof)
 | 
			
		||||
	eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
 | 
			
		||||
	// TODO: remove dependence on the legacyscheme
 | 
			
		||||
	return eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: userAgent})
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@ import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// WaitForAPIServer waits for the API Server's /healthz endpoint to report "ok" with timeout.
 | 
			
		||||
@@ -40,7 +40,7 @@ func WaitForAPIServer(client clientset.Interface, timeout time.Duration) error {
 | 
			
		||||
		if healthStatus != http.StatusOK {
 | 
			
		||||
			content, _ := result.Raw()
 | 
			
		||||
			lastErr = fmt.Errorf("APIServer isn't healthy: %v", string(content))
 | 
			
		||||
			glog.Warningf("APIServer isn't healthy yet: %v. Waiting a little while.", string(content))
 | 
			
		||||
			klog.Warningf("APIServer isn't healthy yet: %v. Waiting a little while.", string(content))
 | 
			
		||||
			return false, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,8 @@ go_library(
 | 
			
		||||
    importpath = "k8s.io/kubernetes/cmd/genswaggertypedocs",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	kruntime "k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	flag "github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
@@ -37,7 +37,7 @@ func main() {
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	if *typeSrc == "" {
 | 
			
		||||
		glog.Fatalf("Please define -s flag as it is the source file")
 | 
			
		||||
		klog.Fatalf("Please define -s flag as it is the source file")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var funcOut io.Writer
 | 
			
		||||
@@ -46,7 +46,7 @@ func main() {
 | 
			
		||||
	} else {
 | 
			
		||||
		file, err := os.Create(*functionDest)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("Couldn't open %v: %v", *functionDest, err)
 | 
			
		||||
			klog.Fatalf("Couldn't open %v: %v", *functionDest, err)
 | 
			
		||||
		}
 | 
			
		||||
		defer file.Close()
 | 
			
		||||
		funcOut = file
 | 
			
		||||
 
 | 
			
		||||
@@ -73,8 +73,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kube-aggregator/pkg/controllers/autoregister:go_default_library",
 | 
			
		||||
        "//vendor/github.com/go-openapi/spec:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	apiextensionsinformers "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
@@ -167,7 +167,7 @@ func makeAPIService(gv schema.GroupVersion) *apiregistration.APIService {
 | 
			
		||||
	if !ok {
 | 
			
		||||
		// if we aren't found, then we shouldn't register ourselves because it could result in a CRD group version
 | 
			
		||||
		// being permanently stuck in the APIServices list.
 | 
			
		||||
		glog.Infof("Skipping APIService creation for %v", gv)
 | 
			
		||||
		klog.Infof("Skipping APIService creation for %v", gv)
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	return &apiregistration.APIService{
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,8 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-openapi/spec"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	extensionsapiserver "k8s.io/apiextensions-apiserver/pkg/apiserver"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
@@ -142,7 +142,7 @@ cluster's shared state through which all other components interact.`,
 | 
			
		||||
// Run runs the specified APIServer.  This should never exit.
 | 
			
		||||
func Run(completeOptions completedServerRunOptions, stopCh <-chan struct{}) error {
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
 | 
			
		||||
	server, err := CreateServerChain(completeOptions, stopCh)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -585,7 +585,7 @@ func Complete(s *options.ServerRunOptions) (completedServerRunOptions, error) {
 | 
			
		||||
				return options, fmt.Errorf("error finding host name: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		glog.Infof("external host was not specified, using %v", s.GenericServerRunOptions.ExternalHost)
 | 
			
		||||
		klog.Infof("external host was not specified, using %v", s.GenericServerRunOptions.ExternalHost)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	s.Authentication.ApplyAuthorization(s.Authorization)
 | 
			
		||||
@@ -601,13 +601,13 @@ func Complete(s *options.ServerRunOptions) (completedServerRunOptions, error) {
 | 
			
		||||
			if kubeauthenticator.IsValidServiceAccountKeyFile(s.SecureServing.ServerCert.CertKey.KeyFile) {
 | 
			
		||||
				s.Authentication.ServiceAccounts.KeyFiles = []string{s.SecureServing.ServerCert.CertKey.KeyFile}
 | 
			
		||||
			} else {
 | 
			
		||||
				glog.Warning("No TLS key provided, service account token authentication disabled")
 | 
			
		||||
				klog.Warning("No TLS key provided, service account token authentication disabled")
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if s.Etcd.EnableWatchCache {
 | 
			
		||||
		glog.V(2).Infof("Initializing cache sizes based on %dMB limit", s.GenericServerRunOptions.TargetRAMMB)
 | 
			
		||||
		klog.V(2).Infof("Initializing cache sizes based on %dMB limit", s.GenericServerRunOptions.TargetRAMMB)
 | 
			
		||||
		sizes := cachesize.NewHeuristicWatchCacheSizes(s.GenericServerRunOptions.TargetRAMMB)
 | 
			
		||||
		if userSpecified, err := serveroptions.ParseWatchCacheSizes(s.Etcd.WatchCacheSizes); err == nil {
 | 
			
		||||
			for resource, size := range userSpecified {
 | 
			
		||||
 
 | 
			
		||||
@@ -132,8 +132,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/metrics/pkg/client/custom_metrics:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/metrics/pkg/client/external_metrics:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
@@ -69,7 +69,7 @@ func startCSRSigningController(ctx ControllerContext) (http.Handler, bool, error
 | 
			
		||||
 | 
			
		||||
	switch {
 | 
			
		||||
	case (keyFileExists && keyUsesDefault) || (certFileExists && certUsesDefault):
 | 
			
		||||
		glog.Warningf("You might be using flag defaulting for --cluster-signing-cert-file and" +
 | 
			
		||||
		klog.Warningf("You might be using flag defaulting for --cluster-signing-cert-file and" +
 | 
			
		||||
			" --cluster-signing-key-file. These defaults are deprecated and will be removed" +
 | 
			
		||||
			" in a subsequent release. Please pass these options explicitly.")
 | 
			
		||||
	case (!keyFileExists && keyUsesDefault) && (!certFileExists && certUsesDefault):
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ package app
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/client-go/informers"
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
@@ -50,7 +50,7 @@ func createCloudProvider(cloudProvider string, externalCloudVolumePlugin string,
 | 
			
		||||
 | 
			
		||||
	if cloud != nil && cloud.HasClusterID() == false {
 | 
			
		||||
		if allowUntaggedCloud == true {
 | 
			
		||||
			glog.Warning("detected a cluster without a ClusterID.  A ClusterID will be required in the future.  Please tag your cluster to avoid any future issues")
 | 
			
		||||
			klog.Warning("detected a cluster without a ClusterID.  A ClusterID will be required in the future.  Please tag your cluster to avoid any future issues")
 | 
			
		||||
		} else {
 | 
			
		||||
			return nil, loopMode, fmt.Errorf("no ClusterID Found.  A ClusterID is required for the cloud provider to function properly.  This check can be bypassed by setting the allow-untagged-cloud option")
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,8 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
			
		||||
@@ -79,7 +79,7 @@ const (
 | 
			
		||||
func NewControllerManagerCommand() *cobra.Command {
 | 
			
		||||
	s, err := options.NewKubeControllerManagerOptions()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
		klog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
@@ -142,12 +142,12 @@ func ResyncPeriod(c *config.CompletedConfig) func() time.Duration {
 | 
			
		||||
// Run runs the KubeControllerManagerOptions.  This should never exit.
 | 
			
		||||
func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
 | 
			
		||||
	if cfgz, err := configz.New(ConfigzName); err == nil {
 | 
			
		||||
		cfgz.Set(c.ComponentConfig)
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.Errorf("unable to register configz: %c", err)
 | 
			
		||||
		klog.Errorf("unable to register configz: %c", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Start the controller manager HTTP server
 | 
			
		||||
@@ -178,7 +178,7 @@ func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
			if len(c.ComponentConfig.SAController.ServiceAccountKeyFile) == 0 {
 | 
			
		||||
				// It'c possible another controller process is creating the tokens for us.
 | 
			
		||||
				// If one isn't, we'll timeout and exit when our client builder is unable to create the tokens.
 | 
			
		||||
				glog.Warningf("--use-service-account-credentials was specified without providing a --service-account-private-key-file")
 | 
			
		||||
				klog.Warningf("--use-service-account-credentials was specified without providing a --service-account-private-key-file")
 | 
			
		||||
			}
 | 
			
		||||
			clientBuilder = controller.SAControllerClientBuilder{
 | 
			
		||||
				ClientConfig:         restclient.AnonymousClientConfig(c.Kubeconfig),
 | 
			
		||||
@@ -191,12 +191,12 @@ func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
		}
 | 
			
		||||
		controllerContext, err := CreateControllerContext(c, rootClientBuilder, clientBuilder, ctx.Done())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("error building controller context: %v", err)
 | 
			
		||||
			klog.Fatalf("error building controller context: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		saTokenControllerInitFunc := serviceAccountTokenControllerStarter{rootClientBuilder: rootClientBuilder}.startServiceAccountTokenController
 | 
			
		||||
 | 
			
		||||
		if err := StartControllers(controllerContext, saTokenControllerInitFunc, NewControllerInitializers(controllerContext.LoopMode), unsecuredMux); err != nil {
 | 
			
		||||
			glog.Fatalf("error starting controllers: %v", err)
 | 
			
		||||
			klog.Fatalf("error starting controllers: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		controllerContext.InformerFactory.Start(controllerContext.Stop)
 | 
			
		||||
@@ -226,7 +226,7 @@ func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
			EventRecorder: c.EventRecorder,
 | 
			
		||||
		})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("error creating lock: %v", err)
 | 
			
		||||
		klog.Fatalf("error creating lock: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	leaderelection.RunOrDie(context.TODO(), leaderelection.LeaderElectionConfig{
 | 
			
		||||
@@ -237,7 +237,7 @@ func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 | 
			
		||||
		Callbacks: leaderelection.LeaderCallbacks{
 | 
			
		||||
			OnStartedLeading: run,
 | 
			
		||||
			OnStoppedLeading: func() {
 | 
			
		||||
				glog.Fatalf("leaderelection lost")
 | 
			
		||||
				klog.Fatalf("leaderelection lost")
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
@@ -476,20 +476,20 @@ func StartControllers(ctx ControllerContext, startSATokenController InitFunc, co
 | 
			
		||||
 | 
			
		||||
	for controllerName, initFn := range controllers {
 | 
			
		||||
		if !ctx.IsControllerEnabled(controllerName) {
 | 
			
		||||
			glog.Warningf("%q is disabled", controllerName)
 | 
			
		||||
			klog.Warningf("%q is disabled", controllerName)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		time.Sleep(wait.Jitter(ctx.ComponentConfig.Generic.ControllerStartInterval.Duration, ControllerStartJitter))
 | 
			
		||||
 | 
			
		||||
		glog.V(1).Infof("Starting %q", controllerName)
 | 
			
		||||
		klog.V(1).Infof("Starting %q", controllerName)
 | 
			
		||||
		debugHandler, started, err := initFn(ctx)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Errorf("Error starting %q", controllerName)
 | 
			
		||||
			klog.Errorf("Error starting %q", controllerName)
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if !started {
 | 
			
		||||
			glog.Warningf("Skipping %q", controllerName)
 | 
			
		||||
			klog.Warningf("Skipping %q", controllerName)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if debugHandler != nil && unsecuredMux != nil {
 | 
			
		||||
@@ -497,7 +497,7 @@ func StartControllers(ctx ControllerContext, startSATokenController InitFunc, co
 | 
			
		||||
			unsecuredMux.UnlistedHandle(basePath, http.StripPrefix(basePath, debugHandler))
 | 
			
		||||
			unsecuredMux.UnlistedHandlePrefix(basePath+"/", http.StripPrefix(basePath, debugHandler))
 | 
			
		||||
		}
 | 
			
		||||
		glog.Infof("Started %q", controllerName)
 | 
			
		||||
		klog.Infof("Started %q", controllerName)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
@@ -512,12 +512,12 @@ type serviceAccountTokenControllerStarter struct {
 | 
			
		||||
 | 
			
		||||
func (c serviceAccountTokenControllerStarter) startServiceAccountTokenController(ctx ControllerContext) (http.Handler, bool, error) {
 | 
			
		||||
	if !ctx.IsControllerEnabled(saTokenControllerName) {
 | 
			
		||||
		glog.Warningf("%q is disabled", saTokenControllerName)
 | 
			
		||||
		klog.Warningf("%q is disabled", saTokenControllerName)
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(ctx.ComponentConfig.SAController.ServiceAccountKeyFile) == 0 {
 | 
			
		||||
		glog.Warningf("%q is disabled because there is no private key", saTokenControllerName)
 | 
			
		||||
		klog.Warningf("%q is disabled because there is no private key", saTokenControllerName)
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
	privateKey, err := certutil.PrivateKeyFromFile(ctx.ComponentConfig.SAController.ServiceAccountKeyFile)
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +73,7 @@ func startServiceController(ctx ControllerContext) (http.Handler, bool, error) {
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		// This error shouldn't fail. It lives like this as a legacy.
 | 
			
		||||
		glog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
		klog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
	go serviceController.Run(ctx.Stop, int(ctx.ComponentConfig.ServiceController.ConcurrentServiceSyncs))
 | 
			
		||||
@@ -92,14 +92,14 @@ func startNodeIpamController(ctx ControllerContext) (http.Handler, bool, error)
 | 
			
		||||
	if len(strings.TrimSpace(ctx.ComponentConfig.KubeCloudShared.ClusterCIDR)) != 0 {
 | 
			
		||||
		_, clusterCIDR, err = net.ParseCIDR(ctx.ComponentConfig.KubeCloudShared.ClusterCIDR)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
			klog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(strings.TrimSpace(ctx.ComponentConfig.NodeIPAMController.ServiceCIDR)) != 0 {
 | 
			
		||||
		_, serviceCIDR, err = net.ParseCIDR(ctx.ComponentConfig.NodeIPAMController.ServiceCIDR)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.ComponentConfig.NodeIPAMController.ServiceCIDR, err)
 | 
			
		||||
			klog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.ComponentConfig.NodeIPAMController.ServiceCIDR, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -148,21 +148,21 @@ func startNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, er
 | 
			
		||||
 | 
			
		||||
func startRouteController(ctx ControllerContext) (http.Handler, bool, error) {
 | 
			
		||||
	if !ctx.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs || !ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes {
 | 
			
		||||
		glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", ctx.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs, ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
 | 
			
		||||
		klog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", ctx.ComponentConfig.KubeCloudShared.AllocateNodeCIDRs, ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
	if ctx.Cloud == nil {
 | 
			
		||||
		glog.Warning("configure-cloud-routes is set, but no cloud provider specified. Will not configure cloud provider routes.")
 | 
			
		||||
		klog.Warning("configure-cloud-routes is set, but no cloud provider specified. Will not configure cloud provider routes.")
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
	routes, ok := ctx.Cloud.Routes()
 | 
			
		||||
	if !ok {
 | 
			
		||||
		glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
 | 
			
		||||
		klog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	}
 | 
			
		||||
	_, clusterCIDR, err := net.ParseCIDR(ctx.ComponentConfig.KubeCloudShared.ClusterCIDR)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
		klog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.ComponentConfig.KubeCloudShared.ClusterCIDR, err)
 | 
			
		||||
	}
 | 
			
		||||
	routeController := routecontroller.New(routes, ctx.ClientBuilder.ClientOrDie("route-controller"), ctx.InformerFactory.Core().V1().Nodes(), ctx.ComponentConfig.KubeCloudShared.ClusterName, clusterCIDR)
 | 
			
		||||
	go routeController.Run(ctx.Stop, ctx.ComponentConfig.KubeCloudShared.RouteReconciliationPeriod.Duration)
 | 
			
		||||
 
 | 
			
		||||
@@ -53,8 +53,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kube-controller-manager/config/v1alpha1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ import (
 | 
			
		||||
	// add the kubernetes feature gates
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/features"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -438,7 +438,7 @@ func (s KubeControllerManagerOptions) Config(allControllers []string, disabledBy
 | 
			
		||||
 | 
			
		||||
func createRecorder(kubeClient clientset.Interface, userAgent string) record.EventRecorder {
 | 
			
		||||
	eventBroadcaster := record.NewBroadcaster()
 | 
			
		||||
	eventBroadcaster.StartLogging(glog.Infof)
 | 
			
		||||
	eventBroadcaster.StartLogging(klog.Infof)
 | 
			
		||||
	eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
 | 
			
		||||
	// TODO: remove dependency on the legacyscheme
 | 
			
		||||
	return eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: userAgent})
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	// Cloud providers
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
@@ -133,7 +133,7 @@ func ProbeControllerVolumePlugins(cloud cloudprovider.Interface, config kubectrl
 | 
			
		||||
		ProvisioningEnabled:      config.EnableHostPathProvisioning,
 | 
			
		||||
	}
 | 
			
		||||
	if err := AttemptToLoadRecycler(config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathHostPath, &hostPathConfig); err != nil {
 | 
			
		||||
		glog.Fatalf("Could not create hostpath recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathHostPath, err)
 | 
			
		||||
		klog.Fatalf("Could not create hostpath recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathHostPath, err)
 | 
			
		||||
	}
 | 
			
		||||
	allPlugins = append(allPlugins, host_path.ProbeVolumePlugins(hostPathConfig)...)
 | 
			
		||||
 | 
			
		||||
@@ -143,7 +143,7 @@ func ProbeControllerVolumePlugins(cloud cloudprovider.Interface, config kubectrl
 | 
			
		||||
		RecyclerPodTemplate:      volume.NewPersistentVolumeRecyclerPodTemplate(),
 | 
			
		||||
	}
 | 
			
		||||
	if err := AttemptToLoadRecycler(config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, &nfsConfig); err != nil {
 | 
			
		||||
		glog.Fatalf("Could not create NFS recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, err)
 | 
			
		||||
		klog.Fatalf("Could not create NFS recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, err)
 | 
			
		||||
	}
 | 
			
		||||
	allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(nfsConfig)...)
 | 
			
		||||
	allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func startDisruptionController(ctx ControllerContext) (http.Handler, bool, error) {
 | 
			
		||||
@@ -35,7 +35,7 @@ func startDisruptionController(ctx ControllerContext) (http.Handler, bool, error
 | 
			
		||||
	var resource = "poddisruptionbudgets"
 | 
			
		||||
 | 
			
		||||
	if !ctx.AvailableResources[schema.GroupVersionResource{Group: group, Version: version, Resource: resource}] {
 | 
			
		||||
		glog.Infof(
 | 
			
		||||
		klog.Infof(
 | 
			
		||||
			"Refusing to start disruption because resource %q in group %q is not available.",
 | 
			
		||||
			resource, group+"/"+version)
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
 
 | 
			
		||||
@@ -61,10 +61,10 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kube-proxy/config/v1alpha1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/pointer:go_default_library",
 | 
			
		||||
    ] + select({
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/mount"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/sysctl"
 | 
			
		||||
@@ -49,7 +49,7 @@ func (rct realConntracker) SetMax(max int) error {
 | 
			
		||||
	if err := rct.setIntSysCtl("nf_conntrack_max", max); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	glog.Infof("Setting nf_conntrack_max to %d", max)
 | 
			
		||||
	klog.Infof("Setting nf_conntrack_max to %d", max)
 | 
			
		||||
 | 
			
		||||
	// Linux does not support writing to /sys/module/nf_conntrack/parameters/hashsize
 | 
			
		||||
	// when the writer process is not in the initial network namespace
 | 
			
		||||
@@ -80,7 +80,7 @@ func (rct realConntracker) SetMax(max int) error {
 | 
			
		||||
		return readOnlySysFSError
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: generify this and sysctl to a new sysfs.WriteInt()
 | 
			
		||||
	glog.Infof("Setting conntrack hashsize to %d", max/4)
 | 
			
		||||
	klog.Infof("Setting conntrack hashsize to %d", max/4)
 | 
			
		||||
	return writeIntStringFile("/sys/module/nf_conntrack/parameters/hashsize", max/4)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -97,7 +97,7 @@ func (realConntracker) setIntSysCtl(name string, value int) error {
 | 
			
		||||
 | 
			
		||||
	sys := sysctl.New()
 | 
			
		||||
	if val, _ := sys.GetSysctl(entry); val != value {
 | 
			
		||||
		glog.Infof("Set sysctl '%v' to %v", entry, value)
 | 
			
		||||
		klog.Infof("Set sysctl '%v' to %v", entry, value)
 | 
			
		||||
		if err := sys.SetSysctl(entry, value); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -112,7 +112,7 @@ func isSysFSWritable() (bool, error) {
 | 
			
		||||
	m := mount.New("" /* default mount path */)
 | 
			
		||||
	mountPoints, err := m.List()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("failed to list mount points: %v", err)
 | 
			
		||||
		klog.Errorf("failed to list mount points: %v", err)
 | 
			
		||||
		return false, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -124,7 +124,7 @@ func isSysFSWritable() (bool, error) {
 | 
			
		||||
		if len(mountPoint.Opts) > 0 && mountPoint.Opts[0] == permWritable {
 | 
			
		||||
			return true, nil
 | 
			
		||||
		}
 | 
			
		||||
		glog.Errorf("sysfs is not writable: %+v (mount options are %v)",
 | 
			
		||||
		klog.Errorf("sysfs is not writable: %+v (mount options are %v)",
 | 
			
		||||
			mountPoint, mountPoint.Opts)
 | 
			
		||||
		return false, readOnlySysFSError
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,10 +72,10 @@ import (
 | 
			
		||||
	"k8s.io/utils/exec"
 | 
			
		||||
	utilpointer "k8s.io/utils/pointer"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/prometheus/client_golang/prometheus"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -191,7 +191,7 @@ func NewOptions() *Options {
 | 
			
		||||
// Complete completes all the required options.
 | 
			
		||||
func (o *Options) Complete() error {
 | 
			
		||||
	if len(o.ConfigFile) == 0 && len(o.WriteConfigTo) == 0 {
 | 
			
		||||
		glog.Warning("WARNING: all flags other than --config, --write-config-to, and --cleanup are deprecated. Please begin using a config file ASAP.")
 | 
			
		||||
		klog.Warning("WARNING: all flags other than --config, --write-config-to, and --cleanup are deprecated. Please begin using a config file ASAP.")
 | 
			
		||||
		o.applyDeprecatedHealthzPortToConfig()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -280,7 +280,7 @@ func (o *Options) writeConfigFile() error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Wrote configuration to: %s\n", o.WriteConfigTo)
 | 
			
		||||
	klog.Infof("Wrote configuration to: %s\n", o.WriteConfigTo)
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
@@ -365,23 +365,23 @@ with the apiserver API to configure the proxy.`,
 | 
			
		||||
			utilflag.PrintFlags(cmd.Flags())
 | 
			
		||||
 | 
			
		||||
			if err := initForOS(opts.WindowsService); err != nil {
 | 
			
		||||
				glog.Fatalf("failed OS init: %v", err)
 | 
			
		||||
				klog.Fatalf("failed OS init: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if err := opts.Complete(); err != nil {
 | 
			
		||||
				glog.Fatalf("failed complete: %v", err)
 | 
			
		||||
				klog.Fatalf("failed complete: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
			if err := opts.Validate(args); err != nil {
 | 
			
		||||
				glog.Fatalf("failed validate: %v", err)
 | 
			
		||||
				klog.Fatalf("failed validate: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
			glog.Fatal(opts.Run())
 | 
			
		||||
			klog.Fatal(opts.Run())
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
	opts.config, err = opts.ApplyDefaults(opts.config)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("unable to create flag defaults: %v", err)
 | 
			
		||||
		klog.Fatalf("unable to create flag defaults: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	opts.AddFlags(cmd.Flags())
 | 
			
		||||
@@ -426,7 +426,7 @@ func createClients(config apimachineryconfig.ClientConnectionConfiguration, mast
 | 
			
		||||
	var err error
 | 
			
		||||
 | 
			
		||||
	if len(config.Kubeconfig) == 0 && len(masterOverride) == 0 {
 | 
			
		||||
		glog.Info("Neither kubeconfig file nor master URL was specified. Falling back to in-cluster config.")
 | 
			
		||||
		klog.Info("Neither kubeconfig file nor master URL was specified. Falling back to in-cluster config.")
 | 
			
		||||
		kubeConfig, err = rest.InClusterConfig()
 | 
			
		||||
	} else {
 | 
			
		||||
		// This creates a client, first loading any specified kubeconfig
 | 
			
		||||
@@ -461,7 +461,7 @@ func createClients(config apimachineryconfig.ClientConnectionConfiguration, mast
 | 
			
		||||
// Run runs the specified ProxyServer.  This should never exit (unless CleanupAndExit is set).
 | 
			
		||||
func (s *ProxyServer) Run() error {
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	// remove iptables rules and exit
 | 
			
		||||
	if s.CleanupAndExit {
 | 
			
		||||
		encounteredError := userspace.CleanupLeftovers(s.IptInterface)
 | 
			
		||||
@@ -478,16 +478,16 @@ func (s *ProxyServer) Run() error {
 | 
			
		||||
	if s.OOMScoreAdj != nil {
 | 
			
		||||
		oomAdjuster = oom.NewOOMAdjuster()
 | 
			
		||||
		if err := oomAdjuster.ApplyOOMScoreAdj(0, int(*s.OOMScoreAdj)); err != nil {
 | 
			
		||||
			glog.V(2).Info(err)
 | 
			
		||||
			klog.V(2).Info(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(s.ResourceContainer) != 0 {
 | 
			
		||||
		// Run in its own container.
 | 
			
		||||
		if err := resourcecontainer.RunInResourceContainer(s.ResourceContainer); err != nil {
 | 
			
		||||
			glog.Warningf("Failed to start in resource-only container %q: %v", s.ResourceContainer, err)
 | 
			
		||||
			klog.Warningf("Failed to start in resource-only container %q: %v", s.ResourceContainer, err)
 | 
			
		||||
		} else {
 | 
			
		||||
			glog.V(2).Infof("Running in resource-only container %q", s.ResourceContainer)
 | 
			
		||||
			klog.V(2).Infof("Running in resource-only container %q", s.ResourceContainer)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -595,7 +595,7 @@ func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (in
 | 
			
		||||
		if config.MaxPerCore != nil && *config.MaxPerCore > 0 {
 | 
			
		||||
			return -1, fmt.Errorf("invalid config: Conntrack Max and Conntrack MaxPerCore are mutually exclusive")
 | 
			
		||||
		}
 | 
			
		||||
		glog.V(3).Infof("getConntrackMax: using absolute conntrack-max (deprecated)")
 | 
			
		||||
		klog.V(3).Infof("getConntrackMax: using absolute conntrack-max (deprecated)")
 | 
			
		||||
		return int(*config.Max), nil
 | 
			
		||||
	}
 | 
			
		||||
	if config.MaxPerCore != nil && *config.MaxPerCore > 0 {
 | 
			
		||||
@@ -605,10 +605,10 @@ func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (in
 | 
			
		||||
		}
 | 
			
		||||
		scaled := int(*config.MaxPerCore) * goruntime.NumCPU()
 | 
			
		||||
		if scaled > floor {
 | 
			
		||||
			glog.V(3).Infof("getConntrackMax: using scaled conntrack-max-per-core")
 | 
			
		||||
			klog.V(3).Infof("getConntrackMax: using scaled conntrack-max-per-core")
 | 
			
		||||
			return scaled, nil
 | 
			
		||||
		}
 | 
			
		||||
		glog.V(3).Infof("getConntrackMax: using conntrack-min")
 | 
			
		||||
		klog.V(3).Infof("getConntrackMax: using conntrack-min")
 | 
			
		||||
		return floor, nil
 | 
			
		||||
	}
 | 
			
		||||
	return 0, nil
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ import (
 | 
			
		||||
	utilsysctl "k8s.io/kubernetes/pkg/util/sysctl"
 | 
			
		||||
	"k8s.io/utils/exec"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NewProxyServer returns a new ProxyServer.
 | 
			
		||||
@@ -75,7 +75,7 @@ func newProxyServer(
 | 
			
		||||
 | 
			
		||||
	protocol := utiliptables.ProtocolIpv4
 | 
			
		||||
	if net.ParseIP(config.BindAddress).To4() == nil {
 | 
			
		||||
		glog.V(0).Infof("IPv6 bind address (%s), assume IPv6 operation", config.BindAddress)
 | 
			
		||||
		klog.V(0).Infof("IPv6 bind address (%s), assume IPv6 operation", config.BindAddress)
 | 
			
		||||
		protocol = utiliptables.ProtocolIpv6
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -145,7 +145,7 @@ func newProxyServer(
 | 
			
		||||
		nodeIP = utilnode.GetNodeIP(client, hostname)
 | 
			
		||||
	}
 | 
			
		||||
	if proxyMode == proxyModeIPTables {
 | 
			
		||||
		glog.V(0).Info("Using iptables Proxier.")
 | 
			
		||||
		klog.V(0).Info("Using iptables Proxier.")
 | 
			
		||||
		if config.IPTables.MasqueradeBit == nil {
 | 
			
		||||
			// MasqueradeBit must be specified or defaulted.
 | 
			
		||||
			return nil, fmt.Errorf("unable to read IPTables MasqueradeBit from config")
 | 
			
		||||
@@ -175,7 +175,7 @@ func newProxyServer(
 | 
			
		||||
		serviceEventHandler = proxierIPTables
 | 
			
		||||
		endpointsEventHandler = proxierIPTables
 | 
			
		||||
		// No turning back. Remove artifacts that might still exist from the userspace Proxier.
 | 
			
		||||
		glog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		klog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		// TODO this has side effects that should only happen when Run() is invoked.
 | 
			
		||||
		userspace.CleanupLeftovers(iptInterface)
 | 
			
		||||
		// IPVS Proxier will generate some iptables rules, need to clean them before switching to other proxy mode.
 | 
			
		||||
@@ -186,7 +186,7 @@ func newProxyServer(
 | 
			
		||||
			ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS)
 | 
			
		||||
		}
 | 
			
		||||
	} else if proxyMode == proxyModeIPVS {
 | 
			
		||||
		glog.V(0).Info("Using ipvs Proxier.")
 | 
			
		||||
		klog.V(0).Info("Using ipvs Proxier.")
 | 
			
		||||
		proxierIPVS, err := ipvs.NewProxier(
 | 
			
		||||
			iptInterface,
 | 
			
		||||
			ipvsInterface,
 | 
			
		||||
@@ -213,12 +213,12 @@ func newProxyServer(
 | 
			
		||||
		proxier = proxierIPVS
 | 
			
		||||
		serviceEventHandler = proxierIPVS
 | 
			
		||||
		endpointsEventHandler = proxierIPVS
 | 
			
		||||
		glog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		klog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		// TODO this has side effects that should only happen when Run() is invoked.
 | 
			
		||||
		userspace.CleanupLeftovers(iptInterface)
 | 
			
		||||
		iptables.CleanupLeftovers(iptInterface)
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.V(0).Info("Using userspace Proxier.")
 | 
			
		||||
		klog.V(0).Info("Using userspace Proxier.")
 | 
			
		||||
		// This is a proxy.LoadBalancer which NewProxier needs but has methods we don't need for
 | 
			
		||||
		// our config.EndpointsConfigHandler.
 | 
			
		||||
		loadBalancer := userspace.NewLoadBalancerRR()
 | 
			
		||||
@@ -244,7 +244,7 @@ func newProxyServer(
 | 
			
		||||
		proxier = proxierUserspace
 | 
			
		||||
 | 
			
		||||
		// Remove artifacts from the iptables and ipvs Proxier, if not on Windows.
 | 
			
		||||
		glog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		klog.V(0).Info("Tearing down inactive rules.")
 | 
			
		||||
		// TODO this has side effects that should only happen when Run() is invoked.
 | 
			
		||||
		iptables.CleanupLeftovers(iptInterface)
 | 
			
		||||
		// IPVS Proxier will generate some iptables rules, need to clean them before switching to other proxy mode.
 | 
			
		||||
@@ -292,7 +292,7 @@ func getProxyMode(proxyMode string, iptver iptables.IPTablesVersioner, khandle i
 | 
			
		||||
	case proxyModeIPVS:
 | 
			
		||||
		return tryIPVSProxy(iptver, khandle, ipsetver, kcompat)
 | 
			
		||||
	}
 | 
			
		||||
	glog.Warningf("Flag proxy-mode=%q unknown, assuming iptables proxy", proxyMode)
 | 
			
		||||
	klog.Warningf("Flag proxy-mode=%q unknown, assuming iptables proxy", proxyMode)
 | 
			
		||||
	return tryIPTablesProxy(iptver, kcompat)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -309,7 +309,7 @@ func tryIPVSProxy(iptver iptables.IPTablesVersioner, khandle ipvs.KernelHandler,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Try to fallback to iptables before falling back to userspace
 | 
			
		||||
	glog.V(1).Infof("Can't use ipvs proxier, trying iptables proxier")
 | 
			
		||||
	klog.V(1).Infof("Can't use ipvs proxier, trying iptables proxier")
 | 
			
		||||
	return tryIPTablesProxy(iptver, kcompat)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -324,6 +324,6 @@ func tryIPTablesProxy(iptver iptables.IPTablesVersioner, kcompat iptables.Kernel
 | 
			
		||||
		return proxyModeIPTables
 | 
			
		||||
	}
 | 
			
		||||
	// Fallback.
 | 
			
		||||
	glog.V(1).Infof("Can't use iptables proxy, using userspace proxier")
 | 
			
		||||
	klog.V(1).Infof("Can't use iptables proxy, using userspace proxier")
 | 
			
		||||
	return proxyModeUserspace
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ import (
 | 
			
		||||
	utilnode "k8s.io/kubernetes/pkg/util/node"
 | 
			
		||||
	"k8s.io/utils/exec"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NewProxyServer returns a new ProxyServer.
 | 
			
		||||
@@ -99,7 +99,7 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
 | 
			
		||||
 | 
			
		||||
	proxyMode := getProxyMode(string(config.Mode), winkernel.WindowsKernelCompatTester{})
 | 
			
		||||
	if proxyMode == proxyModeKernelspace {
 | 
			
		||||
		glog.V(0).Info("Using Kernelspace Proxier.")
 | 
			
		||||
		klog.V(0).Info("Using Kernelspace Proxier.")
 | 
			
		||||
		proxierKernelspace, err := winkernel.NewProxier(
 | 
			
		||||
			config.IPTables.SyncPeriod.Duration,
 | 
			
		||||
			config.IPTables.MinSyncPeriod.Duration,
 | 
			
		||||
@@ -118,7 +118,7 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
 | 
			
		||||
		endpointsEventHandler = proxierKernelspace
 | 
			
		||||
		serviceEventHandler = proxierKernelspace
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.V(0).Info("Using userspace Proxier.")
 | 
			
		||||
		klog.V(0).Info("Using userspace Proxier.")
 | 
			
		||||
		execer := exec.New()
 | 
			
		||||
		var netshInterface utilnetsh.Interface
 | 
			
		||||
		netshInterface = utilnetsh.New(execer)
 | 
			
		||||
@@ -143,7 +143,7 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
 | 
			
		||||
		}
 | 
			
		||||
		proxier = proxierUserspace
 | 
			
		||||
		serviceEventHandler = proxierUserspace
 | 
			
		||||
		glog.V(0).Info("Tearing down pure-winkernel proxy rules.")
 | 
			
		||||
		klog.V(0).Info("Tearing down pure-winkernel proxy rules.")
 | 
			
		||||
		winkernel.CleanupLeftovers()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -182,13 +182,13 @@ func tryWinKernelSpaceProxy(kcompat winkernel.KernelCompatTester) string {
 | 
			
		||||
	// guaranteed false on error, error only necessary for debugging
 | 
			
		||||
	useWinKerelProxy, err := winkernel.CanUseWinKernelProxier(kcompat)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("Can't determine whether to use windows kernel proxy, using userspace proxier: %v", err)
 | 
			
		||||
		klog.Errorf("Can't determine whether to use windows kernel proxy, using userspace proxier: %v", err)
 | 
			
		||||
		return proxyModeUserspace
 | 
			
		||||
	}
 | 
			
		||||
	if useWinKerelProxy {
 | 
			
		||||
		return proxyModeKernelspace
 | 
			
		||||
	}
 | 
			
		||||
	// Fallback.
 | 
			
		||||
	glog.V(1).Infof("Can't use winkernel proxy, using userspace proxier")
 | 
			
		||||
	klog.V(1).Infof("Can't use winkernel proxy, using userspace proxier")
 | 
			
		||||
	return proxyModeUserspace
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,9 +42,9 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kube-scheduler/config/v1alpha1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,8 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	apimachineryconfig "k8s.io/apimachinery/pkg/apis/config"
 | 
			
		||||
@@ -291,7 +291,7 @@ func makeLeaderElectionConfig(config kubeschedulerconfig.KubeSchedulerLeaderElec
 | 
			
		||||
// TODO remove masterOverride when CLI flags are removed.
 | 
			
		||||
func createClients(config apimachineryconfig.ClientConnectionConfiguration, masterOverride string, timeout time.Duration) (clientset.Interface, clientset.Interface, v1core.EventsGetter, error) {
 | 
			
		||||
	if len(config.Kubeconfig) == 0 && len(masterOverride) == 0 {
 | 
			
		||||
		glog.Warningf("Neither --kubeconfig nor --master was specified. Using default API client. This might not work.")
 | 
			
		||||
		klog.Warningf("Neither --kubeconfig nor --master was specified. Using default API client. This might not work.")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// This creates a client, first loading any specified kubeconfig
 | 
			
		||||
 
 | 
			
		||||
@@ -59,16 +59,16 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/version"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/version/verflag"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/prometheus/client_golang/prometheus"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NewSchedulerCommand creates a *cobra.Command object with default parameters
 | 
			
		||||
func NewSchedulerCommand() *cobra.Command {
 | 
			
		||||
	opts, err := options.NewOptions()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
		klog.Fatalf("unable to initialize command options: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
@@ -113,7 +113,7 @@ func runCommand(cmd *cobra.Command, args []string, opts *options.Options) error
 | 
			
		||||
			fmt.Fprintf(os.Stderr, "%v\n", err)
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		glog.Infof("Wrote configuration to: %s\n", opts.WriteConfigTo)
 | 
			
		||||
		klog.Infof("Wrote configuration to: %s\n", opts.WriteConfigTo)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	c, err := opts.Config()
 | 
			
		||||
@@ -128,7 +128,7 @@ func runCommand(cmd *cobra.Command, args []string, opts *options.Options) error
 | 
			
		||||
	cc := c.Complete()
 | 
			
		||||
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
 | 
			
		||||
	// Apply algorithms based on feature gates.
 | 
			
		||||
	// TODO: make configurable?
 | 
			
		||||
 
 | 
			
		||||
@@ -132,7 +132,6 @@
 | 
			
		||||
				"github.com/ghodss/yaml",
 | 
			
		||||
				"github.com/gogo/protobuf/proto",
 | 
			
		||||
				"github.com/gogo/protobuf/sortkeys",
 | 
			
		||||
				"github.com/golang/glog",
 | 
			
		||||
				"github.com/golang/groupcache/lru",
 | 
			
		||||
				"github.com/golang/protobuf/proto",
 | 
			
		||||
				"github.com/golang/protobuf/protoc-gen-go/descriptor",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,10 @@ go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = ["kubeadm.go"],
 | 
			
		||||
    importpath = "k8s.io/kubernetes/cmd/kubeadm",
 | 
			
		||||
    deps = ["//cmd/kubeadm/app:go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//cmd/kubeadm/app:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
 
 | 
			
		||||
@@ -12,8 +12,8 @@ go_library(
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//cmd/kubeadm/app/cmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -67,11 +67,11 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/cert:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cluster-bootstrap/token/api:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cluster-bootstrap/token/util:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/github.com/renstrom/dedent:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
        "//vendor/sigs.k8s.io/yaml:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -20,10 +20,10 @@ import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
 | 
			
		||||
)
 | 
			
		||||
@@ -138,7 +138,7 @@ func RunCompletion(out io.Writer, boilerPlate string, cmd *cobra.Command, args [
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func runCompletionBash(out io.Writer, kubeadm *cobra.Command) error {
 | 
			
		||||
	glog.V(1).Infoln("[completion] writing completion code for Bash")
 | 
			
		||||
	klog.V(1).Infoln("[completion] writing completion code for Bash")
 | 
			
		||||
	return kubeadm.GenBashCompletion(out)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -284,12 +284,12 @@ __kubeadm_convert_bash_to_zsh() {
 | 
			
		||||
	-e "s/\\\$(type${RWORD}/\$(__kubeadm_type/g" \
 | 
			
		||||
	<<'BASH_COMPLETION_EOF'
 | 
			
		||||
`
 | 
			
		||||
	glog.V(1).Infoln("[completion] writing completion code for Zsh")
 | 
			
		||||
	klog.V(1).Infoln("[completion] writing completion code for Zsh")
 | 
			
		||||
	out.Write([]byte(zshInitialization))
 | 
			
		||||
 | 
			
		||||
	buf := new(bytes.Buffer)
 | 
			
		||||
	kubeadm.GenBashCompletion(buf)
 | 
			
		||||
	glog.V(1).Infoln("[completion] writing completion code for Bash")
 | 
			
		||||
	klog.V(1).Infoln("[completion] writing completion code for Bash")
 | 
			
		||||
	out.Write(buf.Bytes())
 | 
			
		||||
 | 
			
		||||
	zshTail := `
 | 
			
		||||
 
 | 
			
		||||
@@ -23,11 +23,11 @@ import (
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	flag "github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
@@ -373,7 +373,7 @@ func NewCmdConfigView(out io.Writer, kubeConfigFile *string) *cobra.Command {
 | 
			
		||||
			The configuration is located in the %q namespace in the %q ConfigMap.
 | 
			
		||||
		`), metav1.NamespaceSystem, constants.KubeadmConfigConfigMap),
 | 
			
		||||
		Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
			glog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			klog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			client, err := kubeconfigutil.ClientSetFromFile(*kubeConfigFile)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
@@ -402,15 +402,15 @@ func NewCmdConfigUploadFromFile(out io.Writer, kubeConfigFile *string) *cobra.Co
 | 
			
		||||
				kubeadmutil.CheckErr(errors.New("The --config flag is mandatory"))
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			glog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			klog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			client, err := kubeconfigutil.ClientSetFromFile(*kubeConfigFile)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			// The default configuration is empty; everything should come from the file on disk
 | 
			
		||||
			glog.V(1).Infoln("[config] creating empty default configuration")
 | 
			
		||||
			klog.V(1).Infoln("[config] creating empty default configuration")
 | 
			
		||||
			defaultcfg := &kubeadmapiv1beta1.InitConfiguration{}
 | 
			
		||||
			// Upload the configuration using the file; don't care about the defaultcfg really
 | 
			
		||||
			glog.V(1).Infof("[config] uploading configuration")
 | 
			
		||||
			klog.V(1).Infof("[config] uploading configuration")
 | 
			
		||||
			err = uploadConfiguration(client, cfgPath, defaultcfg)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
		},
 | 
			
		||||
@@ -438,17 +438,17 @@ func NewCmdConfigUploadFromFlags(out io.Writer, kubeConfigFile *string) *cobra.C
 | 
			
		||||
		`), metav1.NamespaceSystem, constants.KubeadmConfigConfigMap),
 | 
			
		||||
		Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
			var err error
 | 
			
		||||
			glog.V(1).Infoln("[config] creating new FeatureGates")
 | 
			
		||||
			klog.V(1).Infoln("[config] creating new FeatureGates")
 | 
			
		||||
			if cfg.FeatureGates, err = features.NewFeatureGate(&features.InitFeatureGates, featureGatesString); err != nil {
 | 
			
		||||
				kubeadmutil.CheckErr(err)
 | 
			
		||||
			}
 | 
			
		||||
			glog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			klog.V(1).Infoln("[config] retrieving ClientSet from file")
 | 
			
		||||
			client, err := kubeconfigutil.ClientSetFromFile(*kubeConfigFile)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			// Default both statically and dynamically, convert to internal API type, and validate everything
 | 
			
		||||
			// The cfgPath argument is unset here as we shouldn't load a config file from disk, just go with cfg
 | 
			
		||||
			glog.V(1).Infof("[config] uploading configuration")
 | 
			
		||||
			klog.V(1).Infof("[config] uploading configuration")
 | 
			
		||||
			err = uploadConfiguration(client, "", cfg)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
		},
 | 
			
		||||
@@ -460,7 +460,7 @@ func NewCmdConfigUploadFromFlags(out io.Writer, kubeConfigFile *string) *cobra.C
 | 
			
		||||
// RunConfigView gets the configuration persisted in the cluster
 | 
			
		||||
func RunConfigView(out io.Writer, client clientset.Interface) error {
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infoln("[config] getting the cluster configuration")
 | 
			
		||||
	klog.V(1).Infoln("[config] getting the cluster configuration")
 | 
			
		||||
	cfgConfigMap, err := client.CoreV1().ConfigMaps(metav1.NamespaceSystem).Get(constants.KubeadmConfigConfigMap, metav1.GetOptions{})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -478,7 +478,7 @@ func uploadConfiguration(client clientset.Interface, cfgPath string, defaultcfg
 | 
			
		||||
 | 
			
		||||
	// Default both statically and dynamically, convert to internal API type, and validate everything
 | 
			
		||||
	// First argument is unset here as we shouldn't load a config file from disk
 | 
			
		||||
	glog.V(1).Infoln("[config] converting to internal API type")
 | 
			
		||||
	klog.V(1).Infoln("[config] converting to internal API type")
 | 
			
		||||
	internalcfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(cfgPath, defaultcfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 
 | 
			
		||||
@@ -25,13 +25,13 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"text/template"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	flag "github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
@@ -460,7 +460,7 @@ func (d initData) Tokens() []string {
 | 
			
		||||
func runInit(i *initData, out io.Writer) error {
 | 
			
		||||
 | 
			
		||||
	// Get directories to write files to; can be faked if we're dry-running
 | 
			
		||||
	glog.V(1).Infof("[init] Getting certificates directory from configuration")
 | 
			
		||||
	klog.V(1).Infof("[init] Getting certificates directory from configuration")
 | 
			
		||||
	certsDirToWriteTo, kubeConfigDir, _, _, err := getDirectoriesToUse(i.dryRun, i.dryRunDir, i.cfg.CertificatesDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error getting directories to use")
 | 
			
		||||
@@ -481,18 +481,18 @@ func runInit(i *initData, out io.Writer) error {
 | 
			
		||||
	// Upload currently used configuration to the cluster
 | 
			
		||||
	// Note: This is done right in the beginning of cluster initialization; as we might want to make other phases
 | 
			
		||||
	// depend on centralized information from this source in the future
 | 
			
		||||
	glog.V(1).Infof("[init] uploading currently used configuration to the cluster")
 | 
			
		||||
	klog.V(1).Infof("[init] uploading currently used configuration to the cluster")
 | 
			
		||||
	if err := uploadconfigphase.UploadConfiguration(i.cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error uploading configuration")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[init] creating kubelet configuration configmap")
 | 
			
		||||
	klog.V(1).Infof("[init] creating kubelet configuration configmap")
 | 
			
		||||
	if err := kubeletphase.CreateConfigMap(i.cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error creating kubelet configuration ConfigMap")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// PHASE 4: Mark the master with the right label/taint
 | 
			
		||||
	glog.V(1).Infof("[init] marking the master with right label")
 | 
			
		||||
	klog.V(1).Infof("[init] marking the master with right label")
 | 
			
		||||
	if err := markmasterphase.MarkMaster(client, i.cfg.NodeRegistration.Name, i.cfg.NodeRegistration.Taints); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error marking master")
 | 
			
		||||
	}
 | 
			
		||||
@@ -510,12 +510,12 @@ func runInit(i *initData, out io.Writer) error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[init] ensuring DNS addon")
 | 
			
		||||
	klog.V(1).Infof("[init] ensuring DNS addon")
 | 
			
		||||
	if err := dnsaddonphase.EnsureDNSAddon(i.cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error ensuring dns addon")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[init] ensuring proxy addon")
 | 
			
		||||
	klog.V(1).Infof("[init] ensuring proxy addon")
 | 
			
		||||
	if err := proxyaddonphase.EnsureProxyAddon(i.cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error ensuring proxy addon")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,6 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"text/template"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
@@ -33,6 +32,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
 | 
			
		||||
	certutil "k8s.io/client-go/util/cert"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
@@ -180,7 +180,7 @@ func NewCmdJoin(out io.Writer) *cobra.Command {
 | 
			
		||||
				}
 | 
			
		||||
				if len(args) > 0 {
 | 
			
		||||
					if len(cfgPath) == 0 && len(args) > 1 {
 | 
			
		||||
						glog.Warningf("[join] WARNING: More than one API server endpoint supplied on command line %v. Using the first one.", args)
 | 
			
		||||
						klog.Warningf("[join] WARNING: More than one API server endpoint supplied on command line %v. Using the first one.", args)
 | 
			
		||||
					}
 | 
			
		||||
					cfg.Discovery.BootstrapToken.APIServerEndpoint = args[0]
 | 
			
		||||
				}
 | 
			
		||||
@@ -289,11 +289,11 @@ type Join struct {
 | 
			
		||||
func NewJoin(cfgPath string, defaultcfg *kubeadmapiv1beta1.JoinConfiguration, ignorePreflightErrors sets.String) (*Join, error) {
 | 
			
		||||
 | 
			
		||||
	if defaultcfg.NodeRegistration.Name == "" {
 | 
			
		||||
		glog.V(1).Infoln("[join] found NodeName empty; using OS hostname as NodeName")
 | 
			
		||||
		klog.V(1).Infoln("[join] found NodeName empty; using OS hostname as NodeName")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if defaultcfg.APIEndpoint.AdvertiseAddress == "" {
 | 
			
		||||
		glog.V(1).Infoln("[join] found advertiseAddress empty; using default interface's IP address as advertiseAddress")
 | 
			
		||||
		klog.V(1).Infoln("[join] found advertiseAddress empty; using default interface's IP address as advertiseAddress")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	internalCfg, err := configutil.JoinConfigFileAndDefaultsToInternalConfig(cfgPath, defaultcfg)
 | 
			
		||||
@@ -307,20 +307,20 @@ func NewJoin(cfgPath string, defaultcfg *kubeadmapiv1beta1.JoinConfiguration, ig
 | 
			
		||||
	fmt.Println("[preflight] Running pre-flight checks")
 | 
			
		||||
 | 
			
		||||
	// Start with general checks
 | 
			
		||||
	glog.V(1).Infoln("[preflight] Running general checks")
 | 
			
		||||
	klog.V(1).Infoln("[preflight] Running general checks")
 | 
			
		||||
	if err := preflight.RunJoinNodeChecks(utilsexec.New(), internalCfg, ignorePreflightErrors); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Fetch the init configuration based on the join configuration
 | 
			
		||||
	glog.V(1).Infoln("[preflight] Fetching init configuration")
 | 
			
		||||
	klog.V(1).Infoln("[preflight] Fetching init configuration")
 | 
			
		||||
	initCfg, tlsBootstrapCfg, err := fetchInitConfigurationFromJoinConfiguration(internalCfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Continue with more specific checks based on the init configuration
 | 
			
		||||
	glog.V(1).Infoln("[preflight] Running configuration dependant checks")
 | 
			
		||||
	klog.V(1).Infoln("[preflight] Running configuration dependant checks")
 | 
			
		||||
	if err := preflight.RunOptionalJoinNodeChecks(utilsexec.New(), initCfg, ignorePreflightErrors); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -457,7 +457,7 @@ func (j *Join) BootstrapKubelet(tlsBootstrapCfg *clientcmdapi.Config) error {
 | 
			
		||||
	bootstrapKubeConfigFile := kubeadmconstants.GetBootstrapKubeletKubeConfigPath()
 | 
			
		||||
 | 
			
		||||
	// Write the bootstrap kubelet config file or the TLS-Boostrapped kubelet config file down to disk
 | 
			
		||||
	glog.V(1).Infoln("[join] writing bootstrap kubelet config file at", bootstrapKubeConfigFile)
 | 
			
		||||
	klog.V(1).Infoln("[join] writing bootstrap kubelet config file at", bootstrapKubeConfigFile)
 | 
			
		||||
	if err := kubeconfigutil.WriteToDisk(bootstrapKubeConfigFile, tlsBootstrapCfg); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "couldn't save bootstrap-kubelet.conf to disk")
 | 
			
		||||
	}
 | 
			
		||||
@@ -482,7 +482,7 @@ func (j *Join) BootstrapKubelet(tlsBootstrapCfg *clientcmdapi.Config) error {
 | 
			
		||||
 | 
			
		||||
	// Configure the kubelet. In this short timeframe, kubeadm is trying to stop/restart the kubelet
 | 
			
		||||
	// Try to stop the kubelet service so no race conditions occur when configuring it
 | 
			
		||||
	glog.V(1).Infof("Stopping the kubelet")
 | 
			
		||||
	klog.V(1).Infof("Stopping the kubelet")
 | 
			
		||||
	kubeletphase.TryStopKubelet()
 | 
			
		||||
 | 
			
		||||
	// Write the configuration for the kubelet (using the bootstrap token credentials) to disk so the kubelet can start
 | 
			
		||||
@@ -499,7 +499,7 @@ func (j *Join) BootstrapKubelet(tlsBootstrapCfg *clientcmdapi.Config) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Try to start the kubelet service in case it's inactive
 | 
			
		||||
	glog.V(1).Infof("Starting the kubelet")
 | 
			
		||||
	klog.V(1).Infof("Starting the kubelet")
 | 
			
		||||
	kubeletphase.TryStartKubelet()
 | 
			
		||||
 | 
			
		||||
	// Now the kubelet will perform the TLS Bootstrap, transforming /etc/kubernetes/bootstrap-kubelet.conf to /etc/kubernetes/kubelet.conf
 | 
			
		||||
@@ -517,7 +517,7 @@ func (j *Join) BootstrapKubelet(tlsBootstrapCfg *clientcmdapi.Config) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[join] preserving the crisocket information for the node")
 | 
			
		||||
	klog.V(1).Infof("[join] preserving the crisocket information for the node")
 | 
			
		||||
	if err := patchnodephase.AnnotateCRISocket(client, j.cfg.NodeRegistration.Name, j.cfg.NodeRegistration.CRISocket); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error uploading crisocket")
 | 
			
		||||
	}
 | 
			
		||||
@@ -552,18 +552,18 @@ func (j *Join) PostInstallControlPlane(initConfiguration *kubeadmapi.InitConfigu
 | 
			
		||||
		// "If you add a new member to a 1-node cluster, the cluster cannot make progress before the new member starts
 | 
			
		||||
		// because it needs two members as majority to agree on the consensus. You will only see this behavior between the time
 | 
			
		||||
		// etcdctl member add informs the cluster about the new member and the new member successfully establishing a connection to the existing one."
 | 
			
		||||
		glog.V(1).Info("[join] adding etcd")
 | 
			
		||||
		klog.V(1).Info("[join] adding etcd")
 | 
			
		||||
		if err := etcdphase.CreateStackedEtcdStaticPodManifestFile(client, kubeadmconstants.GetStaticPodDirectory(), initConfiguration); err != nil {
 | 
			
		||||
			return errors.Wrap(err, "error creating local etcd static pod manifest file")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Info("[join] uploading currently used configuration to the cluster")
 | 
			
		||||
	klog.V(1).Info("[join] uploading currently used configuration to the cluster")
 | 
			
		||||
	if err := uploadconfigphase.UploadConfiguration(initConfiguration, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error uploading configuration")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Info("[join] marking the master with right label")
 | 
			
		||||
	klog.V(1).Info("[join] marking the master with right label")
 | 
			
		||||
	if err = markmasterphase.MarkMaster(client, initConfiguration.NodeRegistration.Name, initConfiguration.NodeRegistration.Taints); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error applying master label and taints")
 | 
			
		||||
	}
 | 
			
		||||
@@ -587,14 +587,14 @@ func waitForTLSBootstrappedClient() error {
 | 
			
		||||
func fetchInitConfigurationFromJoinConfiguration(cfg *kubeadmapi.JoinConfiguration) (*kubeadmapi.InitConfiguration, *clientcmdapi.Config, error) {
 | 
			
		||||
	// Perform the Discovery, which turns a Bootstrap Token and optionally (and preferably) a CA cert hash into a KubeConfig
 | 
			
		||||
	// file that may be used for the TLS Bootstrapping process the kubelet performs using the Certificates API.
 | 
			
		||||
	glog.V(1).Infoln("[join] Discovering cluster-info")
 | 
			
		||||
	klog.V(1).Infoln("[join] Discovering cluster-info")
 | 
			
		||||
	tlsBootstrapCfg, err := discovery.For(cfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Retrieves the kubeadm configuration
 | 
			
		||||
	glog.V(1).Infoln("[join] Retrieving KubeConfig objects")
 | 
			
		||||
	klog.V(1).Infoln("[join] Retrieving KubeConfig objects")
 | 
			
		||||
	initConfiguration, err := fetchInitConfiguration(tlsBootstrapCfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
 
 | 
			
		||||
@@ -52,10 +52,10 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/github.com/renstrom/dedent:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@ package phases
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
@@ -83,7 +83,7 @@ func EnsureAllAddons(cfg *kubeadmapi.InitConfiguration, client clientset.Interfa
 | 
			
		||||
		proxyaddon.EnsureProxyAddon,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infoln("[addon] installing all addons")
 | 
			
		||||
	klog.V(1).Infoln("[addon] installing all addons")
 | 
			
		||||
	for _, action := range addonActions {
 | 
			
		||||
		err := action(cfg, client)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@ package phases
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
 | 
			
		||||
@@ -93,7 +93,7 @@ func runEtcdPhaseLocal() func(c workflow.RunData) error {
 | 
			
		||||
				return errors.Wrap(err, "error creating local etcd static pod manifest file")
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			glog.V(1).Infof("[etcd] External etcd mode. Skipping the creation of a manifest for local etcd")
 | 
			
		||||
			klog.V(1).Infof("[etcd] External etcd mode. Skipping the creation of a manifest for local etcd")
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,8 @@ limitations under the License.
 | 
			
		||||
package phases
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
 | 
			
		||||
@@ -68,7 +68,7 @@ func runKubeletStart(c workflow.RunData) error {
 | 
			
		||||
	// First off, configure the kubelet. In this short timeframe, kubeadm is trying to stop/restart the kubelet
 | 
			
		||||
	// Try to stop the kubelet service so no race conditions occur when configuring it
 | 
			
		||||
	if !data.DryRun() {
 | 
			
		||||
		glog.V(1).Infof("Stopping the kubelet")
 | 
			
		||||
		klog.V(1).Infof("Stopping the kubelet")
 | 
			
		||||
		kubeletphase.TryStopKubelet()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -86,7 +86,7 @@ func runKubeletStart(c workflow.RunData) error {
 | 
			
		||||
 | 
			
		||||
	// Try to start the kubelet service in case it's inactive
 | 
			
		||||
	if !data.DryRun() {
 | 
			
		||||
		glog.V(1).Infof("Starting the kubelet")
 | 
			
		||||
		klog.V(1).Infof("Starting the kubelet")
 | 
			
		||||
		kubeletphase.TryStartKubelet()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,10 +19,10 @@ package phases
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
 | 
			
		||||
@@ -105,7 +105,7 @@ func runUploadKubeadmConfig(c workflow.RunData) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[upload-config] Uploading the kubeadm ClusterConfiguration to a ConfigMap")
 | 
			
		||||
	klog.V(1).Infof("[upload-config] Uploading the kubeadm ClusterConfiguration to a ConfigMap")
 | 
			
		||||
	if err := uploadconfig.UploadConfiguration(cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error uploading the kubeadm ClusterConfiguration")
 | 
			
		||||
	}
 | 
			
		||||
@@ -119,12 +119,12 @@ func runUploadKubeletConfig(c workflow.RunData) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[upload-config] Uploading the kubelet component config to a ConfigMap")
 | 
			
		||||
	klog.V(1).Infof("[upload-config] Uploading the kubelet component config to a ConfigMap")
 | 
			
		||||
	if err = kubeletphase.CreateConfigMap(cfg, client); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "error creating kubelet configuration ConfigMap")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[upload-config] Preserving the CRISocket information for the control-plane node")
 | 
			
		||||
	klog.V(1).Infof("[upload-config] Preserving the CRISocket information for the control-plane node")
 | 
			
		||||
	if err := patchnodephase.AnnotateCRISocket(client, cfg.NodeRegistration.Name, cfg.NodeRegistration.CRISocket); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "Error writing Crisocket information for the control-plane node")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,10 +23,10 @@ import (
 | 
			
		||||
	"text/template"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
 | 
			
		||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
@@ -86,7 +86,7 @@ func runWaitControlPlanePhase(c workflow.RunData) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// waiter holds the apiclient.Waiter implementation of choice, responsible for querying the API server in various ways and waiting for conditions to be fulfilled
 | 
			
		||||
	glog.V(1).Infof("[wait-control-plane] Waiting for the API server to be healthy")
 | 
			
		||||
	klog.V(1).Infof("[wait-control-plane] Waiting for the API server to be healthy")
 | 
			
		||||
 | 
			
		||||
	client, err := data.Client()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -26,8 +26,8 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
@@ -129,7 +129,7 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
 | 
			
		||||
	// Only clear etcd data when using local etcd.
 | 
			
		||||
	etcdManifestPath := filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.ManifestsSubDirName, "etcd.yaml")
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[reset] checking for etcd config")
 | 
			
		||||
	klog.V(1).Infof("[reset] checking for etcd config")
 | 
			
		||||
	etcdDataDir, err := getEtcdDataDir(etcdManifestPath, client)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		dirsToClean = append(dirsToClean, etcdDataDir)
 | 
			
		||||
@@ -139,16 +139,16 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Try to stop the kubelet service
 | 
			
		||||
	glog.V(1).Infof("[reset] getting init system")
 | 
			
		||||
	klog.V(1).Infof("[reset] getting init system")
 | 
			
		||||
	initSystem, err := initsystem.GetInitSystem()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Warningln("[reset] the kubelet service could not be stopped by kubeadm. Unable to detect a supported init system!")
 | 
			
		||||
		glog.Warningln("[reset] please ensure kubelet is stopped manually")
 | 
			
		||||
		klog.Warningln("[reset] the kubelet service could not be stopped by kubeadm. Unable to detect a supported init system!")
 | 
			
		||||
		klog.Warningln("[reset] please ensure kubelet is stopped manually")
 | 
			
		||||
	} else {
 | 
			
		||||
		fmt.Println("[reset] stopping the kubelet service")
 | 
			
		||||
		if err := initSystem.ServiceStop("kubelet"); err != nil {
 | 
			
		||||
			glog.Warningf("[reset] the kubelet service could not be stopped by kubeadm: [%v]\n", err)
 | 
			
		||||
			glog.Warningln("[reset] please ensure kubelet is stopped manually")
 | 
			
		||||
			klog.Warningf("[reset] the kubelet service could not be stopped by kubeadm: [%v]\n", err)
 | 
			
		||||
			klog.Warningln("[reset] please ensure kubelet is stopped manually")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -156,29 +156,29 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
 | 
			
		||||
	fmt.Printf("[reset] unmounting mounted directories in %q\n", kubeadmconstants.KubeletRunDirectory)
 | 
			
		||||
	umountDirsCmd := fmt.Sprintf("awk '$2 ~ path {print $2}' path=%s /proc/mounts | xargs -r umount", kubeadmconstants.KubeletRunDirectory)
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[reset] executing command %q", umountDirsCmd)
 | 
			
		||||
	klog.V(1).Infof("[reset] executing command %q", umountDirsCmd)
 | 
			
		||||
	umountOutputBytes, err := exec.Command("sh", "-c", umountDirsCmd).Output()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("[reset] failed to unmount mounted directories in %s: %s\n", kubeadmconstants.KubeletRunDirectory, string(umountOutputBytes))
 | 
			
		||||
		klog.Errorf("[reset] failed to unmount mounted directories in %s: %s\n", kubeadmconstants.KubeletRunDirectory, string(umountOutputBytes))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Info("[reset] removing Kubernetes-managed containers")
 | 
			
		||||
	klog.V(1).Info("[reset] removing Kubernetes-managed containers")
 | 
			
		||||
	if err := removeContainers(utilsexec.New(), r.criSocketPath); err != nil {
 | 
			
		||||
		glog.Errorf("[reset] failed to remove containers: %+v", err)
 | 
			
		||||
		klog.Errorf("[reset] failed to remove containers: %+v", err)
 | 
			
		||||
	}
 | 
			
		||||
	dirsToClean = append(dirsToClean, []string{kubeadmconstants.KubeletRunDirectory, "/etc/cni/net.d", "/var/lib/dockershim", "/var/run/kubernetes"}...)
 | 
			
		||||
 | 
			
		||||
	// Then clean contents from the stateful kubelet, etcd and cni directories
 | 
			
		||||
	fmt.Printf("[reset] deleting contents of stateful directories: %v\n", dirsToClean)
 | 
			
		||||
	for _, dir := range dirsToClean {
 | 
			
		||||
		glog.V(1).Infof("[reset] deleting content of %s", dir)
 | 
			
		||||
		klog.V(1).Infof("[reset] deleting content of %s", dir)
 | 
			
		||||
		cleanDir(dir)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Remove contents from the config and pki directories
 | 
			
		||||
	glog.V(1).Infoln("[reset] removing contents from the config and pki directories")
 | 
			
		||||
	klog.V(1).Infoln("[reset] removing contents from the config and pki directories")
 | 
			
		||||
	if r.certsDir != kubeadmapiv1beta1.DefaultCertificatesDir {
 | 
			
		||||
		glog.Warningf("[reset] WARNING: cleaning a non-default certificates directory: %q\n", r.certsDir)
 | 
			
		||||
		klog.Warningf("[reset] WARNING: cleaning a non-default certificates directory: %q\n", r.certsDir)
 | 
			
		||||
	}
 | 
			
		||||
	resetConfigDir(kubeadmconstants.KubernetesDir, r.certsDir)
 | 
			
		||||
 | 
			
		||||
@@ -193,7 +193,7 @@ func getEtcdDataDir(manifestPath string, client clientset.Interface) (string, er
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		return cfg.Etcd.Local.DataDir, nil
 | 
			
		||||
	}
 | 
			
		||||
	glog.Warningf("[reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: %v", err)
 | 
			
		||||
	klog.Warningf("[reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: %v", err)
 | 
			
		||||
 | 
			
		||||
	etcdPod, err := utilstaticpod.ReadStaticPodFromDisk(manifestPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -261,7 +261,7 @@ func resetConfigDir(configPathDir, pkiPathDir string) {
 | 
			
		||||
	fmt.Printf("[reset] deleting contents of config directories: %v\n", dirsToClean)
 | 
			
		||||
	for _, dir := range dirsToClean {
 | 
			
		||||
		if err := cleanDir(dir); err != nil {
 | 
			
		||||
			glog.Errorf("[reset] failed to remove directory: %q [%v]\n", dir, err)
 | 
			
		||||
			klog.Errorf("[reset] failed to remove directory: %q [%v]\n", dir, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -275,7 +275,7 @@ func resetConfigDir(configPathDir, pkiPathDir string) {
 | 
			
		||||
	fmt.Printf("[reset] deleting files: %v\n", filesToClean)
 | 
			
		||||
	for _, path := range filesToClean {
 | 
			
		||||
		if err := os.RemoveAll(path); err != nil {
 | 
			
		||||
			glog.Errorf("[reset] failed to remove file: %q [%v]\n", path, err)
 | 
			
		||||
			klog.Errorf("[reset] failed to remove file: %q [%v]\n", path, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,10 +24,10 @@ import (
 | 
			
		||||
	"text/tabwriter"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/renstrom/dedent"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/fields"
 | 
			
		||||
@@ -113,14 +113,14 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
 | 
			
		||||
			if len(args) > 0 {
 | 
			
		||||
				bto.TokenStr = args[0]
 | 
			
		||||
			}
 | 
			
		||||
			glog.V(1).Infoln("[token] validating mixed arguments")
 | 
			
		||||
			klog.V(1).Infoln("[token] validating mixed arguments")
 | 
			
		||||
			err := validation.ValidateMixedArguments(tokenCmd.Flags())
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			err = bto.ApplyTo(cfg)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			glog.V(1).Infoln("[token] getting Clientsets from kubeconfig file")
 | 
			
		||||
			klog.V(1).Infoln("[token] getting Clientsets from kubeconfig file")
 | 
			
		||||
			kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile)
 | 
			
		||||
			client, err := getClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
@@ -215,13 +215,13 @@ func RunCreateToken(out io.Writer, client clientset.Interface, cfgPath string, c
 | 
			
		||||
	phaseutil.SetKubernetesVersion(cfg)
 | 
			
		||||
 | 
			
		||||
	// This call returns the ready-to-use configuration based on the configuration file that might or might not exist and the default cfg populated by flags
 | 
			
		||||
	glog.V(1).Infoln("[token] loading configurations")
 | 
			
		||||
	klog.V(1).Infoln("[token] loading configurations")
 | 
			
		||||
	internalcfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(cfgPath, cfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infoln("[token] creating token")
 | 
			
		||||
	klog.V(1).Infoln("[token] creating token")
 | 
			
		||||
	if err := tokenphase.CreateNewTokens(client, internalcfg.BootstrapTokens); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -243,7 +243,7 @@ func RunCreateToken(out io.Writer, client clientset.Interface, cfgPath string, c
 | 
			
		||||
 | 
			
		||||
// RunGenerateToken just generates a random token for the user
 | 
			
		||||
func RunGenerateToken(out io.Writer) error {
 | 
			
		||||
	glog.V(1).Infoln("[token] generating random token")
 | 
			
		||||
	klog.V(1).Infoln("[token] generating random token")
 | 
			
		||||
	token, err := bootstraputil.GenerateBootstrapToken()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -256,7 +256,7 @@ func RunGenerateToken(out io.Writer) error {
 | 
			
		||||
// RunListTokens lists details on all existing bootstrap tokens on the server.
 | 
			
		||||
func RunListTokens(out io.Writer, errW io.Writer, client clientset.Interface) error {
 | 
			
		||||
	// First, build our selector for bootstrap tokens only
 | 
			
		||||
	glog.V(1).Infoln("[token] preparing selector for bootstrap token")
 | 
			
		||||
	klog.V(1).Infoln("[token] preparing selector for bootstrap token")
 | 
			
		||||
	tokenSelector := fields.SelectorFromSet(
 | 
			
		||||
		map[string]string{
 | 
			
		||||
			// TODO: We hard-code "type" here until `field_constants.go` that is
 | 
			
		||||
@@ -269,7 +269,7 @@ func RunListTokens(out io.Writer, errW io.Writer, client clientset.Interface) er
 | 
			
		||||
		FieldSelector: tokenSelector.String(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infoln("[token] retrieving list of bootstrap tokens")
 | 
			
		||||
	klog.V(1).Infoln("[token] retrieving list of bootstrap tokens")
 | 
			
		||||
	secrets, err := client.CoreV1().Secrets(metav1.NamespaceSystem).List(listOptions)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to list bootstrap tokens")
 | 
			
		||||
@@ -298,7 +298,7 @@ func RunListTokens(out io.Writer, errW io.Writer, client clientset.Interface) er
 | 
			
		||||
func RunDeleteToken(out io.Writer, client clientset.Interface, tokenIDOrToken string) error {
 | 
			
		||||
	// Assume the given first argument is a token id and try to parse it
 | 
			
		||||
	tokenID := tokenIDOrToken
 | 
			
		||||
	glog.V(1).Infoln("[token] parsing token ID")
 | 
			
		||||
	klog.V(1).Infoln("[token] parsing token ID")
 | 
			
		||||
	if !bootstraputil.IsValidBootstrapTokenID(tokenIDOrToken) {
 | 
			
		||||
		// Okay, the full token with both id and secret was probably passed. Parse it and extract the ID only
 | 
			
		||||
		bts, err := kubeadmapiv1beta1.NewBootstrapTokenString(tokenIDOrToken)
 | 
			
		||||
@@ -310,7 +310,7 @@ func RunDeleteToken(out io.Writer, client clientset.Interface, tokenIDOrToken st
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tokenSecretName := bootstraputil.BootstrapTokenSecretName(tokenID)
 | 
			
		||||
	glog.V(1).Infoln("[token] deleting token")
 | 
			
		||||
	klog.V(1).Infoln("[token] deleting token")
 | 
			
		||||
	if err := client.CoreV1().Secrets(metav1.NamespaceSystem).Delete(tokenSecretName, nil); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to delete bootstrap token")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -39,11 +39,11 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/discovery/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pmezard/go-difflib/difflib:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
 | 
			
		||||
@@ -83,13 +83,13 @@ func NewCmdApply(apf *applyPlanFlags) *cobra.Command {
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			// Ensure the user is root
 | 
			
		||||
			glog.V(1).Infof("running preflight checks")
 | 
			
		||||
			klog.V(1).Infof("running preflight checks")
 | 
			
		||||
			err = runPreflightChecks(flags.ignorePreflightErrorsSet)
 | 
			
		||||
			kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
			// If the version is specified in config file, pick up that value.
 | 
			
		||||
			if flags.cfgPath != "" {
 | 
			
		||||
				glog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
				klog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
				// Note that cfg isn't preserved here, it's just an one-off to populate flags.newK8sVersionStr based on --config
 | 
			
		||||
				cfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(flags.cfgPath, &kubeadmapiv1beta1.InitConfiguration{})
 | 
			
		||||
				kubeadmutil.CheckErr(err)
 | 
			
		||||
@@ -147,8 +147,8 @@ func NewCmdApply(apf *applyPlanFlags) *cobra.Command {
 | 
			
		||||
func RunApply(flags *applyFlags) error {
 | 
			
		||||
 | 
			
		||||
	// Start with the basics, verify that the cluster is healthy and get the configuration from the cluster (using the ConfigMap)
 | 
			
		||||
	glog.V(1).Infof("[upgrade/apply] verifying health of cluster")
 | 
			
		||||
	glog.V(1).Infof("[upgrade/apply] retrieving configuration from cluster")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/apply] verifying health of cluster")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/apply] retrieving configuration from cluster")
 | 
			
		||||
	upgradeVars, err := enforceRequirements(flags.applyPlanFlags, flags.dryRun, flags.newK8sVersionStr)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -160,7 +160,7 @@ func RunApply(flags *applyFlags) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Validate requested and validate actual version
 | 
			
		||||
	glog.V(1).Infof("[upgrade/apply] validating requested and actual version")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/apply] validating requested and actual version")
 | 
			
		||||
	if err := configutil.NormalizeKubernetesVersion(&upgradeVars.cfg.ClusterConfiguration); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -178,7 +178,7 @@ func RunApply(flags *applyFlags) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Enforce the version skew policies
 | 
			
		||||
	glog.V(1).Infof("[upgrade/version] enforcing version skew policies")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/version] enforcing version skew policies")
 | 
			
		||||
	if err := EnforceVersionPolicies(flags, upgradeVars.versionGetter); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "[upgrade/version] FATAL")
 | 
			
		||||
	}
 | 
			
		||||
@@ -192,7 +192,7 @@ func RunApply(flags *applyFlags) error {
 | 
			
		||||
 | 
			
		||||
	// Use a prepuller implementation based on creating DaemonSets
 | 
			
		||||
	// and block until all DaemonSets are ready; then we know for sure that all control plane images are cached locally
 | 
			
		||||
	glog.V(1).Infof("[upgrade/apply] creating prepuller")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/apply] creating prepuller")
 | 
			
		||||
	prepuller := upgrade.NewDaemonSetPrepuller(upgradeVars.client, upgradeVars.waiter, &upgradeVars.cfg.ClusterConfiguration)
 | 
			
		||||
	componentsToPrepull := constants.MasterComponents
 | 
			
		||||
	if upgradeVars.cfg.Etcd.External != nil {
 | 
			
		||||
@@ -203,13 +203,13 @@ func RunApply(flags *applyFlags) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Now; perform the upgrade procedure
 | 
			
		||||
	glog.V(1).Infof("[upgrade/apply] performing upgrade")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/apply] performing upgrade")
 | 
			
		||||
	if err := PerformControlPlaneUpgrade(flags, upgradeVars.client, upgradeVars.waiter, upgradeVars.cfg); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "[upgrade/apply] FATAL")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Upgrade RBAC rules and addons.
 | 
			
		||||
	glog.V(1).Infof("[upgrade/postupgrade] upgrading RBAC rules and addons")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/postupgrade] upgrading RBAC rules and addons")
 | 
			
		||||
	if err := upgrade.PerformPostUpgradeTasks(upgradeVars.client, upgradeVars.cfg, flags.newK8sVersion, flags.dryRun); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "[upgrade/postupgrade] FATAL post-upgrade error")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,12 +20,12 @@ import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/pmezard/go-difflib/difflib"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
 | 
			
		||||
@@ -78,7 +78,7 @@ func NewCmdDiff(out io.Writer) *cobra.Command {
 | 
			
		||||
func runDiff(flags *diffFlags, args []string) error {
 | 
			
		||||
 | 
			
		||||
	// If the version is specified in config file, pick up that value.
 | 
			
		||||
	glog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
	klog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
	cfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(flags.cfgPath, &kubeadmapiv1beta1.InitConfiguration{})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -116,7 +116,7 @@ func runDiff(flags *diffFlags, args []string) error {
 | 
			
		||||
		case constants.KubeScheduler:
 | 
			
		||||
			path = flags.schedulerManifestPath
 | 
			
		||||
		default:
 | 
			
		||||
			glog.Errorf("[diff] unknown spec %v", spec)
 | 
			
		||||
			klog.Errorf("[diff] unknown spec %v", spec)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
@@ -126,7 +126,7 @@ func NewCmdUpgradeControlPlane() *cobra.Command {
 | 
			
		||||
		Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
 | 
			
		||||
			if flags.nodeName == "" {
 | 
			
		||||
				glog.V(1).Infoln("[upgrade] found NodeName empty; considered OS hostname as NodeName")
 | 
			
		||||
				klog.V(1).Infoln("[upgrade] found NodeName empty; considered OS hostname as NodeName")
 | 
			
		||||
			}
 | 
			
		||||
			nodeName, err := node.GetHostname(flags.nodeName)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -24,10 +24,10 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"text/tabwriter"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
@@ -62,7 +62,7 @@ func NewCmdPlan(apf *applyPlanFlags) *cobra.Command {
 | 
			
		||||
 | 
			
		||||
			// If the version is specified in config file, pick up that value.
 | 
			
		||||
			if flags.cfgPath != "" {
 | 
			
		||||
				glog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
				klog.V(1).Infof("fetching configuration from file %s", flags.cfgPath)
 | 
			
		||||
				cfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(flags.cfgPath, &kubeadmapiv1beta1.InitConfiguration{})
 | 
			
		||||
				kubeadmutil.CheckErr(err)
 | 
			
		||||
 | 
			
		||||
@@ -88,8 +88,8 @@ func NewCmdPlan(apf *applyPlanFlags) *cobra.Command {
 | 
			
		||||
// RunPlan takes care of outputting available versions to upgrade to for the user
 | 
			
		||||
func RunPlan(flags *planFlags) error {
 | 
			
		||||
	// Start with the basics, verify that the cluster is healthy, build a client and a versionGetter. Never dry-run when planning.
 | 
			
		||||
	glog.V(1).Infof("[upgrade/plan] verifying health of cluster")
 | 
			
		||||
	glog.V(1).Infof("[upgrade/plan] retrieving configuration from cluster")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/plan] verifying health of cluster")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/plan] retrieving configuration from cluster")
 | 
			
		||||
	upgradeVars, err := enforceRequirements(flags.applyPlanFlags, false, flags.newK8sVersionStr)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -120,7 +120,7 @@ func RunPlan(flags *planFlags) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Compute which upgrade possibilities there are
 | 
			
		||||
	glog.V(1).Infof("[upgrade/plan] computing upgrade possibilities")
 | 
			
		||||
	klog.V(1).Infof("[upgrade/plan] computing upgrade possibilities")
 | 
			
		||||
	availUpgrades, err := upgrade.GetAvailableUpgrades(upgradeVars.versionGetter, flags.allowExperimentalUpgrades, flags.allowRCUpgrades, etcdClient, upgradeVars.cfg.FeatureGates, upgradeVars.client)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.Wrap(err, "[upgrade/versions] FATAL")
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	"sigs.k8s.io/yaml"
 | 
			
		||||
 | 
			
		||||
	apimachineryversion "k8s.io/apimachinery/pkg/version"
 | 
			
		||||
@@ -53,7 +53,7 @@ func NewCmdVersion(out io.Writer) *cobra.Command {
 | 
			
		||||
// RunVersion provides the version information of kubeadm in format depending on arguments
 | 
			
		||||
// specified in cobra.Command.
 | 
			
		||||
func RunVersion(out io.Writer, cmd *cobra.Command) error {
 | 
			
		||||
	glog.V(1).Infoln("[version] retrieving version info")
 | 
			
		||||
	klog.V(1).Infoln("[version] retrieving version info")
 | 
			
		||||
	clientVersion := version.Get()
 | 
			
		||||
	v := Version{
 | 
			
		||||
		ClientVersion: &clientVersion,
 | 
			
		||||
@@ -62,7 +62,7 @@ func RunVersion(out io.Writer, cmd *cobra.Command) error {
 | 
			
		||||
	const flag = "output"
 | 
			
		||||
	of, err := cmd.Flags().GetString(flag)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("error accessing flag %s for command %s: %v", flag, cmd.Name(), err)
 | 
			
		||||
		klog.Fatalf("error accessing flag %s for command %s: %v", flag, cmd.Name(), err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch of {
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,8 @@ import (
 | 
			
		||||
	"flag"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	_ "github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	_ "k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	utilflag "k8s.io/apiserver/pkg/util/flag"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd"
 | 
			
		||||
 
 | 
			
		||||
@@ -34,8 +34,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cluster-bootstrap/token/api:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@ package clusterinfo
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	rbac "k8s.io/api/rbac/v1"
 | 
			
		||||
@@ -44,7 +44,7 @@ func CreateBootstrapConfigMapIfNotExists(client clientset.Interface, file string
 | 
			
		||||
 | 
			
		||||
	fmt.Printf("[bootstraptoken] creating the %q ConfigMap in the %q namespace\n", bootstrapapi.ConfigMapClusterInfo, metav1.NamespacePublic)
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infoln("[bootstraptoken] loading admin kubeconfig")
 | 
			
		||||
	klog.V(1).Infoln("[bootstraptoken] loading admin kubeconfig")
 | 
			
		||||
	adminConfig, err := clientcmd.LoadFromFile(file)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to load admin kubeconfig")
 | 
			
		||||
@@ -52,7 +52,7 @@ func CreateBootstrapConfigMapIfNotExists(client clientset.Interface, file string
 | 
			
		||||
 | 
			
		||||
	adminCluster := adminConfig.Contexts[adminConfig.CurrentContext].Cluster
 | 
			
		||||
	// Copy the cluster from admin.conf to the bootstrap kubeconfig, contains the CA cert and the server URL
 | 
			
		||||
	glog.V(1).Infoln("[bootstraptoken] copying the cluster from admin.conf to the bootstrap kubeconfig")
 | 
			
		||||
	klog.V(1).Infoln("[bootstraptoken] copying the cluster from admin.conf to the bootstrap kubeconfig")
 | 
			
		||||
	bootstrapConfig := &clientcmdapi.Config{
 | 
			
		||||
		Clusters: map[string]*clientcmdapi.Cluster{
 | 
			
		||||
			"": adminConfig.Clusters[adminCluster],
 | 
			
		||||
@@ -64,7 +64,7 @@ func CreateBootstrapConfigMapIfNotExists(client clientset.Interface, file string
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create or update the ConfigMap in the kube-public namespace
 | 
			
		||||
	glog.V(1).Infoln("[bootstraptoken] creating/updating ConfigMap in kube-public namespace")
 | 
			
		||||
	klog.V(1).Infoln("[bootstraptoken] creating/updating ConfigMap in kube-public namespace")
 | 
			
		||||
	return apiclient.CreateOrUpdateConfigMap(client, &v1.ConfigMap{
 | 
			
		||||
		ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
			Name:      bootstrapapi.ConfigMapClusterInfo,
 | 
			
		||||
@@ -78,7 +78,7 @@ func CreateBootstrapConfigMapIfNotExists(client clientset.Interface, file string
 | 
			
		||||
 | 
			
		||||
// CreateClusterInfoRBACRules creates the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace to unauthenticated users
 | 
			
		||||
func CreateClusterInfoRBACRules(client clientset.Interface) error {
 | 
			
		||||
	glog.V(1).Infoln("creating the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace")
 | 
			
		||||
	klog.V(1).Infoln("creating the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace")
 | 
			
		||||
	err := apiclient.CreateOrUpdateRole(client, &rbac.Role{
 | 
			
		||||
		ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
			Name:      BootstrapSignerClusterRoleName,
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,8 @@ go_library(
 | 
			
		||||
        "//cmd/kubeadm/app/constants:go_default_library",
 | 
			
		||||
        "//cmd/kubeadm/app/util/pkiutil:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/cert:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,9 +23,9 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	certutil "k8s.io/client-go/util/cert"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
 | 
			
		||||
@@ -34,7 +34,7 @@ import (
 | 
			
		||||
// CreatePKIAssets will create and write to disk all PKI assets necessary to establish the control plane.
 | 
			
		||||
// If the PKI assets already exists in the target folder, they are used only if evaluated equal; otherwise an error is returned.
 | 
			
		||||
func CreatePKIAssets(cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	glog.V(1).Infoln("creating PKI assets")
 | 
			
		||||
	klog.V(1).Infoln("creating PKI assets")
 | 
			
		||||
 | 
			
		||||
	// This structure cannot handle multilevel CA hierarchies.
 | 
			
		||||
	// This isn't a problem right now, but may become one in the future.
 | 
			
		||||
@@ -69,7 +69,7 @@ func CreatePKIAssets(cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
// CreateServiceAccountKeyAndPublicKeyFiles create a new public/private key files for signing service account users.
 | 
			
		||||
// If the sa public/private key files already exists in the target folder, they are used only if evaluated equals; otherwise an error is returned.
 | 
			
		||||
func CreateServiceAccountKeyAndPublicKeyFiles(cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	glog.V(1).Infoln("creating a new public/private key files for signing service account users")
 | 
			
		||||
	klog.V(1).Infoln("creating a new public/private key files for signing service account users")
 | 
			
		||||
	saSigningKey, err := NewServiceAccountSigningKey()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -110,7 +110,7 @@ func CreateCACertAndKeyFiles(certSpec *KubeadmCert, cfg *kubeadmapi.InitConfigur
 | 
			
		||||
	if certSpec.CAName != "" {
 | 
			
		||||
		return errors.Errorf("this function should only be used for CAs, but cert %s has CA %s", certSpec.Name, certSpec.CAName)
 | 
			
		||||
	}
 | 
			
		||||
	glog.V(1).Infof("creating a new certificate authority for %s", certSpec.Name)
 | 
			
		||||
	klog.V(1).Infof("creating a new certificate authority for %s", certSpec.Name)
 | 
			
		||||
 | 
			
		||||
	certConfig, err := certSpec.GetConfig(cfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -47,8 +47,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,8 +24,8 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
@@ -42,7 +42,7 @@ import (
 | 
			
		||||
 | 
			
		||||
// CreateInitStaticPodManifestFiles will write all static pod manifest files needed to bring up the control plane.
 | 
			
		||||
func CreateInitStaticPodManifestFiles(manifestDir string, cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	glog.V(1).Infoln("[control-plane] creating static Pod files")
 | 
			
		||||
	klog.V(1).Infoln("[control-plane] creating static Pod files")
 | 
			
		||||
	return CreateStaticPodFiles(manifestDir, cfg, kubeadmconstants.KubeAPIServer, kubeadmconstants.KubeControllerManager, kubeadmconstants.KubeScheduler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -97,7 +97,7 @@ func CreateStaticPodFiles(manifestDir string, cfg *kubeadmapi.InitConfiguration,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// gets the StaticPodSpecs, actualized for the current InitConfiguration
 | 
			
		||||
	glog.V(1).Infoln("[control-plane] getting StaticPodSpecs")
 | 
			
		||||
	klog.V(1).Infoln("[control-plane] getting StaticPodSpecs")
 | 
			
		||||
	specs := GetStaticPodSpecs(cfg, k8sVersion)
 | 
			
		||||
 | 
			
		||||
	// creates required static pod specs
 | 
			
		||||
@@ -113,7 +113,7 @@ func CreateStaticPodFiles(manifestDir string, cfg *kubeadmapi.InitConfiguration,
 | 
			
		||||
			return errors.Wrapf(err, "failed to create static pod manifest file for %q", componentName)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		glog.V(1).Infof("[control-plane] wrote static Pod manifest for component %q to %q\n", componentName, kubeadmconstants.GetStaticPodFilepath(componentName, manifestDir))
 | 
			
		||||
		klog.V(1).Infof("[control-plane] wrote static Pod manifest for component %q to %q\n", componentName, kubeadmconstants.GetStaticPodFilepath(componentName, manifestDir))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
 
 | 
			
		||||
@@ -31,8 +31,8 @@ go_library(
 | 
			
		||||
        "//cmd/kubeadm/app/util/staticpod:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
@@ -54,7 +54,7 @@ func CreateLocalEtcdStaticPodManifestFile(manifestDir string, cfg *kubeadmapi.In
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("[etcd] wrote Static Pod manifest for a local etcd instance to %q\n", kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.Etcd, manifestDir))
 | 
			
		||||
	klog.V(1).Infof("[etcd] wrote Static Pod manifest for a local etcd instance to %q\n", kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.Etcd, manifestDir))
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -63,7 +63,7 @@ func CheckLocalEtcdClusterStatus(client clientset.Interface, cfg *kubeadmapi.Ini
 | 
			
		||||
	fmt.Println("[etcd] Checking Etcd cluster health")
 | 
			
		||||
 | 
			
		||||
	// creates an etcd client that connects to all the local/stacked etcd members
 | 
			
		||||
	glog.V(1).Info("creating etcd client that connects to etcd pods")
 | 
			
		||||
	klog.V(1).Info("creating etcd client that connects to etcd pods")
 | 
			
		||||
	etcdClient, err := etcdutil.NewFromCluster(client, cfg.CertificatesDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -83,7 +83,7 @@ func CheckLocalEtcdClusterStatus(client clientset.Interface, cfg *kubeadmapi.Ini
 | 
			
		||||
// Other members of the etcd cluster will be notified of the joining node in beforehand as well.
 | 
			
		||||
func CreateStackedEtcdStaticPodManifestFile(client clientset.Interface, manifestDir string, cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	// creates an etcd client that connects to all the local/stacked etcd members
 | 
			
		||||
	glog.V(1).Info("creating etcd client that connects to etcd pods")
 | 
			
		||||
	klog.V(1).Info("creating etcd client that connects to etcd pods")
 | 
			
		||||
	etcdClient, err := etcdutil.NewFromCluster(client, cfg.CertificatesDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -92,15 +92,15 @@ func CreateStackedEtcdStaticPodManifestFile(client clientset.Interface, manifest
 | 
			
		||||
	// notifies the other members of the etcd cluster about the joining member
 | 
			
		||||
	etcdPeerAddress := fmt.Sprintf("https://%s:%d", cfg.LocalAPIEndpoint.AdvertiseAddress, kubeadmconstants.EtcdListenPeerPort)
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Infof("Adding etcd member: %s", etcdPeerAddress)
 | 
			
		||||
	klog.V(1).Infof("Adding etcd member: %s", etcdPeerAddress)
 | 
			
		||||
	initialCluster, err := etcdClient.AddMember(cfg.NodeRegistration.Name, etcdPeerAddress)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println("[etcd] Announced new etcd member joining to the existing etcd cluster")
 | 
			
		||||
	glog.V(1).Infof("Updated etcd member list: %v", initialCluster)
 | 
			
		||||
	klog.V(1).Infof("Updated etcd member list: %v", initialCluster)
 | 
			
		||||
 | 
			
		||||
	glog.V(1).Info("Creating local etcd static pod manifest file")
 | 
			
		||||
	klog.V(1).Info("Creating local etcd static pod manifest file")
 | 
			
		||||
	// gets etcd StaticPodSpec, actualized for the current InitConfiguration and the new list of etcd members
 | 
			
		||||
	spec := GetEtcdPodSpec(cfg, initialCluster)
 | 
			
		||||
	// writes etcd StaticPod to disk
 | 
			
		||||
 
 | 
			
		||||
@@ -22,8 +22,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/cert:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,11 +25,11 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/client-go/tools/clientcmd"
 | 
			
		||||
	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
 | 
			
		||||
	certutil "k8s.io/client-go/util/cert"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
 | 
			
		||||
@@ -61,7 +61,7 @@ type kubeConfigSpec struct {
 | 
			
		||||
// to establish the control plane, including also the admin kubeconfig file.
 | 
			
		||||
// If kubeconfig files already exists, they are used only if evaluated equal; otherwise an error is returned.
 | 
			
		||||
func CreateInitKubeConfigFiles(outDir string, cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	glog.V(1).Infoln("creating all kubeconfig files")
 | 
			
		||||
	klog.V(1).Infoln("creating all kubeconfig files")
 | 
			
		||||
	return createKubeConfigFiles(
 | 
			
		||||
		outDir,
 | 
			
		||||
		cfg,
 | 
			
		||||
@@ -89,7 +89,7 @@ func CreateJoinControlPlaneKubeConfigFiles(outDir string, cfg *kubeadmapi.InitCo
 | 
			
		||||
// CreateKubeConfigFile creates a kubeconfig file.
 | 
			
		||||
// If the kubeconfig file already exists, it is used only if evaluated equal; otherwise an error is returned.
 | 
			
		||||
func CreateKubeConfigFile(kubeConfigFileName string, outDir string, cfg *kubeadmapi.InitConfiguration) error {
 | 
			
		||||
	glog.V(1).Infof("creating kubeconfig file for %s", kubeConfigFileName)
 | 
			
		||||
	klog.V(1).Infof("creating kubeconfig file for %s", kubeConfigFileName)
 | 
			
		||||
	return createKubeConfigFiles(outDir, cfg, kubeConfigFileName)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,8 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
 | 
			
		||||
@@ -78,7 +78,7 @@ func buildKubeletArgMap(opts kubeletFlagsOpts) map[string]string {
 | 
			
		||||
		kubeletFlags["network-plugin"] = "cni"
 | 
			
		||||
		driver, err := kubeadmutil.GetCgroupDriverDocker(opts.execer)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("cannot automatically assign a '--cgroup-driver' value when starting the Kubelet: %v\n", err)
 | 
			
		||||
			klog.Warningf("cannot automatically assign a '--cgroup-driver' value when starting the Kubelet: %v\n", err)
 | 
			
		||||
		} else {
 | 
			
		||||
			kubeletFlags["cgroup-driver"] = driver
 | 
			
		||||
		}
 | 
			
		||||
@@ -103,7 +103,7 @@ func buildKubeletArgMap(opts kubeletFlagsOpts) map[string]string {
 | 
			
		||||
 | 
			
		||||
	// Make sure the node name we're passed will work with Kubelet
 | 
			
		||||
	if opts.nodeRegOpts.Name != "" && opts.nodeRegOpts.Name != opts.defaultHostname {
 | 
			
		||||
		glog.V(1).Infof("setting kubelet hostname-override to %q", opts.nodeRegOpts.Name)
 | 
			
		||||
		klog.V(1).Infof("setting kubelet hostname-override to %q", opts.nodeRegOpts.Name)
 | 
			
		||||
		kubeletFlags["hostname-override"] = opts.nodeRegOpts.Name
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	apps "k8s.io/api/apps/v1"
 | 
			
		||||
@@ -57,12 +57,12 @@ const (
 | 
			
		||||
//      Otherwise, there is a race condition when we proceed without kubelet having restarted the API server correctly and the next .Create call flakes
 | 
			
		||||
// 9. Do that for the kube-apiserver, kube-controller-manager and kube-scheduler in a loop
 | 
			
		||||
func CreateSelfHostedControlPlane(manifestsDir, kubeConfigDir string, cfg *kubeadmapi.InitConfiguration, client clientset.Interface, waiter apiclient.Waiter, dryRun bool, certsInSecrets bool) error {
 | 
			
		||||
	glog.V(1).Infoln("creating self hosted control plane")
 | 
			
		||||
	klog.V(1).Infoln("creating self hosted control plane")
 | 
			
		||||
	// Adjust the timeout slightly to something self-hosting specific
 | 
			
		||||
	waiter.SetTimeout(selfHostingWaitTimeout)
 | 
			
		||||
 | 
			
		||||
	// Here the map of different mutators to use for the control plane's PodSpec is stored
 | 
			
		||||
	glog.V(1).Infoln("getting mutators")
 | 
			
		||||
	klog.V(1).Infoln("getting mutators")
 | 
			
		||||
	mutators := GetMutatorsFromFeatureGates(certsInSecrets)
 | 
			
		||||
 | 
			
		||||
	if certsInSecrets {
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
 | 
			
		||||
        "//vendor/github.com/PuerkitoBio/purell:go_default_library",
 | 
			
		||||
        "//vendor/github.com/blang/semver:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -36,8 +36,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/PuerkitoBio/purell"
 | 
			
		||||
	"github.com/blang/semver"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	netutil "k8s.io/apimachinery/pkg/util/net"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
@@ -102,7 +102,7 @@ func (ContainerRuntimeCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates the container runtime
 | 
			
		||||
func (crc ContainerRuntimeCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating the container runtime")
 | 
			
		||||
	klog.V(1).Infoln("validating the container runtime")
 | 
			
		||||
	if err := crc.runtime.IsRunning(); err != nil {
 | 
			
		||||
		errorList = append(errorList, err)
 | 
			
		||||
	}
 | 
			
		||||
@@ -128,7 +128,7 @@ func (sc ServiceCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the service is enabled and active.
 | 
			
		||||
func (sc ServiceCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating if the service is enabled and active")
 | 
			
		||||
	klog.V(1).Infoln("validating if the service is enabled and active")
 | 
			
		||||
	initSystem, err := initsystem.GetInitSystem()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []error{err}, nil
 | 
			
		||||
@@ -169,7 +169,7 @@ func (FirewalldCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the firewall is enabled and active.
 | 
			
		||||
func (fc FirewalldCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating if the firewall is enabled and active")
 | 
			
		||||
	klog.V(1).Infoln("validating if the firewall is enabled and active")
 | 
			
		||||
	initSystem, err := initsystem.GetInitSystem()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []error{err}, nil
 | 
			
		||||
@@ -206,7 +206,7 @@ func (poc PortOpenCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the particular port is available.
 | 
			
		||||
func (poc PortOpenCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating availability of port %d", poc.port)
 | 
			
		||||
	klog.V(1).Infof("validating availability of port %d", poc.port)
 | 
			
		||||
	errorList = []error{}
 | 
			
		||||
	ln, err := net.Listen("tcp", fmt.Sprintf(":%d", poc.port))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -243,7 +243,7 @@ func (dac DirAvailableCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if a directory does not exist or empty.
 | 
			
		||||
func (dac DirAvailableCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating the existence and emptiness of directory %s", dac.Path)
 | 
			
		||||
	klog.V(1).Infof("validating the existence and emptiness of directory %s", dac.Path)
 | 
			
		||||
	errorList = []error{}
 | 
			
		||||
	// If it doesn't exist we are good:
 | 
			
		||||
	if _, err := os.Stat(dac.Path); os.IsNotExist(err) {
 | 
			
		||||
@@ -281,7 +281,7 @@ func (fac FileAvailableCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the given file does not already exist.
 | 
			
		||||
func (fac FileAvailableCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating the existence of file %s", fac.Path)
 | 
			
		||||
	klog.V(1).Infof("validating the existence of file %s", fac.Path)
 | 
			
		||||
	errorList = []error{}
 | 
			
		||||
	if _, err := os.Stat(fac.Path); err == nil {
 | 
			
		||||
		errorList = append(errorList, errors.Errorf("%s already exists", fac.Path))
 | 
			
		||||
@@ -305,7 +305,7 @@ func (fac FileExistingCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the given file already exists.
 | 
			
		||||
func (fac FileExistingCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating the existence of file %s", fac.Path)
 | 
			
		||||
	klog.V(1).Infof("validating the existence of file %s", fac.Path)
 | 
			
		||||
	errorList = []error{}
 | 
			
		||||
	if _, err := os.Stat(fac.Path); err != nil {
 | 
			
		||||
		errorList = append(errorList, errors.Errorf("%s doesn't exist", fac.Path))
 | 
			
		||||
@@ -330,7 +330,7 @@ func (fcc FileContentCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the given file contains the given content.
 | 
			
		||||
func (fcc FileContentCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating the contents of file %s", fcc.Path)
 | 
			
		||||
	klog.V(1).Infof("validating the contents of file %s", fcc.Path)
 | 
			
		||||
	f, err := os.Open(fcc.Path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, []error{errors.Errorf("%s does not exist", fcc.Path)}
 | 
			
		||||
@@ -371,7 +371,7 @@ func (ipc InPathCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if the given executable is present in the path.
 | 
			
		||||
func (ipc InPathCheck) Check() (warnings, errs []error) {
 | 
			
		||||
	glog.V(1).Infof("validating the presence of executable %s", ipc.executable)
 | 
			
		||||
	klog.V(1).Infof("validating the presence of executable %s", ipc.executable)
 | 
			
		||||
	_, err := ipc.exec.LookPath(ipc.executable)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if ipc.mandatory {
 | 
			
		||||
@@ -401,7 +401,7 @@ func (HostnameCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates if hostname match dns sub domain regex.
 | 
			
		||||
func (hc HostnameCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("checking whether the given node name is reachable using net.LookupHost")
 | 
			
		||||
	klog.V(1).Infof("checking whether the given node name is reachable using net.LookupHost")
 | 
			
		||||
	errorList = []error{}
 | 
			
		||||
	warnings = []error{}
 | 
			
		||||
	addr, err := net.LookupHost(hc.nodeName)
 | 
			
		||||
@@ -428,7 +428,7 @@ func (hst HTTPProxyCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates http connectivity type, direct or via proxy.
 | 
			
		||||
func (hst HTTPProxyCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infof("validating if the connectivity type is via proxy or direct")
 | 
			
		||||
	klog.V(1).Infof("validating if the connectivity type is via proxy or direct")
 | 
			
		||||
	u := (&url.URL{Scheme: hst.Proto, Host: hst.Host}).String()
 | 
			
		||||
 | 
			
		||||
	req, err := http.NewRequest("GET", u, nil)
 | 
			
		||||
@@ -464,7 +464,7 @@ func (HTTPProxyCIDRCheck) Name() string {
 | 
			
		||||
// Check validates http connectivity to first IP address in the CIDR.
 | 
			
		||||
// If it is not directly connected and goes via proxy it will produce warning.
 | 
			
		||||
func (subnet HTTPProxyCIDRCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating http connectivity to first IP address in the CIDR")
 | 
			
		||||
	klog.V(1).Infoln("validating http connectivity to first IP address in the CIDR")
 | 
			
		||||
	if len(subnet.CIDR) == 0 {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
@@ -513,7 +513,7 @@ func (SystemVerificationCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check runs all individual checks
 | 
			
		||||
func (sysver SystemVerificationCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("running all checks")
 | 
			
		||||
	klog.V(1).Infoln("running all checks")
 | 
			
		||||
	// Create a buffered writer and choose a quite large value (1M) and suppose the output from the system verification test won't exceed the limit
 | 
			
		||||
	// Run the system verification check, but write to out buffered writer instead of stdout
 | 
			
		||||
	bufw := bufio.NewWriterSize(os.Stdout, 1*1024*1024)
 | 
			
		||||
@@ -570,7 +570,7 @@ func (KubernetesVersionCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates Kubernetes and kubeadm versions
 | 
			
		||||
func (kubever KubernetesVersionCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating Kubernetes and kubeadm version")
 | 
			
		||||
	klog.V(1).Infoln("validating Kubernetes and kubeadm version")
 | 
			
		||||
	// Skip this check for "super-custom builds", where apimachinery/the overall codebase version is not set.
 | 
			
		||||
	if strings.HasPrefix(kubever.KubeadmVersion, "v0.0.0") {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
@@ -611,7 +611,7 @@ func (KubeletVersionCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates kubelet version. It should be not less than minimal supported version
 | 
			
		||||
func (kubever KubeletVersionCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating kubelet version")
 | 
			
		||||
	klog.V(1).Infoln("validating kubelet version")
 | 
			
		||||
	kubeletVersion, err := GetKubeletVersion(kubever.exec)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, []error{errors.Wrap(err, "couldn't get kubelet version")}
 | 
			
		||||
@@ -642,7 +642,7 @@ func (SwapCheck) Name() string {
 | 
			
		||||
 | 
			
		||||
// Check validates whether swap is enabled or not
 | 
			
		||||
func (swc SwapCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating whether swap is enabled or not")
 | 
			
		||||
	klog.V(1).Infoln("validating whether swap is enabled or not")
 | 
			
		||||
	f, err := os.Open("/proc/swaps")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		// /proc/swaps not available, thus no reasons to warn
 | 
			
		||||
@@ -683,7 +683,7 @@ func (ExternalEtcdVersionCheck) Name() string {
 | 
			
		||||
// Check validates external etcd version
 | 
			
		||||
// TODO: Use the official etcd Golang client for this instead?
 | 
			
		||||
func (evc ExternalEtcdVersionCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	glog.V(1).Infoln("validating the external etcd version")
 | 
			
		||||
	klog.V(1).Infoln("validating the external etcd version")
 | 
			
		||||
 | 
			
		||||
	// Return quickly if the user isn't using external etcd
 | 
			
		||||
	if evc.Etcd.External.Endpoints == nil {
 | 
			
		||||
@@ -831,13 +831,13 @@ func (ipc ImagePullCheck) Check() (warnings, errorList []error) {
 | 
			
		||||
	for _, image := range ipc.imageList {
 | 
			
		||||
		ret, err := ipc.runtime.ImageExists(image)
 | 
			
		||||
		if ret && err == nil {
 | 
			
		||||
			glog.V(1).Infof("image exists: %s", image)
 | 
			
		||||
			klog.V(1).Infof("image exists: %s", image)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			errorList = append(errorList, errors.Wrapf(err, "failed to check if image %s exists", image))
 | 
			
		||||
		}
 | 
			
		||||
		glog.V(1).Infof("pulling %s", image)
 | 
			
		||||
		klog.V(1).Infof("pulling %s", image)
 | 
			
		||||
		if err := ipc.runtime.PullImage(image); err != nil {
 | 
			
		||||
			errorList = append(errorList, errors.Wrapf(err, "failed to pull image %s", image))
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -34,8 +34,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
        "//vendor/sigs.k8s.io/yaml:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -35,8 +35,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/cert:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cluster-bootstrap/token/util:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@ import (
 | 
			
		||||
	"net"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	netutil "k8s.io/apimachinery/pkg/util/net"
 | 
			
		||||
@@ -103,7 +103,7 @@ func DetectUnsupportedVersion(b []byte) error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if mutuallyExclusiveCount > 1 {
 | 
			
		||||
		glog.Warningf("WARNING: Detected resource kinds that may not apply: %v", mutuallyExclusive)
 | 
			
		||||
		klog.Warningf("WARNING: Detected resource kinds that may not apply: %v", mutuallyExclusive)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
@@ -141,7 +141,7 @@ func LowercaseSANs(sans []string) {
 | 
			
		||||
	for i, san := range sans {
 | 
			
		||||
		lowercase := strings.ToLower(san)
 | 
			
		||||
		if lowercase != san {
 | 
			
		||||
			glog.V(1).Infof("lowercasing SAN %q to %q", san, lowercase)
 | 
			
		||||
			klog.V(1).Infof("lowercasing SAN %q to %q", san, lowercase)
 | 
			
		||||
			sans[i] = lowercase
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -166,7 +166,7 @@ func ChooseAPIServerBindAddress(bindAddress net.IP) (net.IP, error) {
 | 
			
		||||
	ip, err := netutil.ChooseBindAddress(bindAddress)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if netutil.IsNoRoutesError(err) {
 | 
			
		||||
			glog.Warningf("WARNING: could not obtain a bind address for the API Server: %v; using: %s", err, constants.DefaultAPIServerBindAddress)
 | 
			
		||||
			klog.Warningf("WARNING: could not obtain a bind address for the API Server: %v; using: %s", err, constants.DefaultAPIServerBindAddress)
 | 
			
		||||
			defaultIP := net.ParseIP(constants.DefaultAPIServerBindAddress)
 | 
			
		||||
			if defaultIP == nil {
 | 
			
		||||
				return nil, errors.Errorf("cannot parse default IP address: %s", constants.DefaultAPIServerBindAddress)
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,8 @@ import (
 | 
			
		||||
	"sort"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
@@ -165,7 +165,7 @@ func ConfigFileAndDefaultsToInternalConfig(cfgPath string, defaultversionedcfg *
 | 
			
		||||
	if cfgPath != "" {
 | 
			
		||||
		// Loads configuration from config file, if provided
 | 
			
		||||
		// Nb. --config overrides command line flags
 | 
			
		||||
		glog.V(1).Infoln("loading configuration from the given file")
 | 
			
		||||
		klog.V(1).Infoln("loading configuration from the given file")
 | 
			
		||||
 | 
			
		||||
		b, err := ioutil.ReadFile(cfgPath)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@ package config
 | 
			
		||||
import (
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
@@ -56,7 +56,7 @@ func JoinConfigFileAndDefaultsToInternalConfig(cfgPath string, defaultversionedc
 | 
			
		||||
	if cfgPath != "" {
 | 
			
		||||
		// Loads configuration from config file, if provided
 | 
			
		||||
		// Nb. --config overrides command line flags, TODO: fix this
 | 
			
		||||
		glog.V(1).Infoln("loading configuration from the given file")
 | 
			
		||||
		klog.V(1).Infoln("loading configuration from the given file")
 | 
			
		||||
 | 
			
		||||
		b, err := ioutil.ReadFile(cfgPath)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,8 +13,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/github.com/coreos/etcd/clientv3:go_default_library",
 | 
			
		||||
        "//vendor/github.com/coreos/etcd/pkg/transport:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,9 +26,9 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/coreos/etcd/clientv3"
 | 
			
		||||
	"github.com/coreos/etcd/pkg/transport"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/config"
 | 
			
		||||
@@ -145,7 +145,7 @@ func NewFromCluster(client clientset.Interface, certificatesDir string) (*Client
 | 
			
		||||
	for _, e := range clusterStatus.APIEndpoints {
 | 
			
		||||
		endpoints = append(endpoints, fmt.Sprintf("https://%s:%d", e.AdvertiseAddress, constants.EtcdListenClientPort))
 | 
			
		||||
	}
 | 
			
		||||
	glog.V(1).Infof("etcd endpoints read from pods: %s", strings.Join(endpoints, ","))
 | 
			
		||||
	klog.V(1).Infof("etcd endpoints read from pods: %s", strings.Join(endpoints, ","))
 | 
			
		||||
 | 
			
		||||
	// Creates an etcd client
 | 
			
		||||
	etcdClient, err := New(
 | 
			
		||||
@@ -185,7 +185,7 @@ func (c Client) Sync() error {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	glog.V(1).Infof("etcd endpoints read from etcd: %s", strings.Join(cli.Endpoints(), ","))
 | 
			
		||||
	klog.V(1).Infof("etcd endpoints read from etcd: %s", strings.Join(cli.Endpoints(), ","))
 | 
			
		||||
 | 
			
		||||
	c.Endpoints = cli.Endpoints()
 | 
			
		||||
	return nil
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,8 @@ go_library(
 | 
			
		||||
        "//vendor/github.com/blang/semver:go_default_library",
 | 
			
		||||
        "//vendor/github.com/docker/docker/api/types:go_default_library",
 | 
			
		||||
        "//vendor/github.com/docker/docker/client:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/pkg/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,8 @@ import (
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	pkgerrors "github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/errors"
 | 
			
		||||
)
 | 
			
		||||
@@ -254,7 +254,7 @@ func (k *KernelValidator) parseKernelConfig(r io.Reader) (map[string]kConfigOpti
 | 
			
		||||
		}
 | 
			
		||||
		fields := strings.Split(line, "=")
 | 
			
		||||
		if len(fields) != 2 {
 | 
			
		||||
			glog.Errorf("Unexpected fields number in config %q", line)
 | 
			
		||||
			klog.Errorf("Unexpected fields number in config %q", line)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		config[fields[0]] = kConfigOption(fields[1])
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,8 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/errors"
 | 
			
		||||
 | 
			
		||||
	"github.com/blang/semver"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	pkgerrors "github.com/pkg/errors"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// semVerDotsCount is the number of dots in a valid semantic version.
 | 
			
		||||
@@ -127,7 +127,7 @@ func (self *packageValidator) validate(packageSpecs []PackageSpec, manager packa
 | 
			
		||||
		// Get the version of the package on the running machine.
 | 
			
		||||
		version, err := manager.getPackageVersion(packageName)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.V(1).Infof("Failed to get the version for the package %q: %s\n", packageName, err)
 | 
			
		||||
			klog.V(1).Infof("Failed to get the version for the package %q: %s\n", packageName, err)
 | 
			
		||||
			errs = append(errs, err)
 | 
			
		||||
			self.reporter.Report(nameWithVerRange, "not installed", bad)
 | 
			
		||||
			continue
 | 
			
		||||
@@ -145,7 +145,7 @@ func (self *packageValidator) validate(packageSpecs []PackageSpec, manager packa
 | 
			
		||||
		// the version is in the range.
 | 
			
		||||
		sv, err := semver.Make(toSemVer(version))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Errorf("Failed to convert %q to semantic version: %s\n", version, err)
 | 
			
		||||
			klog.Errorf("Failed to convert %q to semantic version: %s\n", version, err)
 | 
			
		||||
			errs = append(errs, err)
 | 
			
		||||
			self.reporter.Report(nameWithVerRange, "internal error", bad)
 | 
			
		||||
			continue
 | 
			
		||||
 
 | 
			
		||||
@@ -25,10 +25,10 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	pkgerrors "github.com/pkg/errors"
 | 
			
		||||
	netutil "k8s.io/apimachinery/pkg/util/net"
 | 
			
		||||
	versionutil "k8s.io/apimachinery/pkg/util/version"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	pkgversion "k8s.io/kubernetes/pkg/version"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -91,8 +91,8 @@ func KubernetesReleaseVersion(version string) (string, error) {
 | 
			
		||||
				return "", err
 | 
			
		||||
			}
 | 
			
		||||
			// Handle air-gapped environments by falling back to the client version.
 | 
			
		||||
			glog.Infof("could not fetch a Kubernetes version from the internet: %v", err)
 | 
			
		||||
			glog.Infof("falling back to the local client version: %s", clientVersion)
 | 
			
		||||
			klog.Infof("could not fetch a Kubernetes version from the internet: %v", err)
 | 
			
		||||
			klog.Infof("falling back to the local client version: %s", clientVersion)
 | 
			
		||||
			return KubernetesReleaseVersion(clientVersion)
 | 
			
		||||
		}
 | 
			
		||||
		// both the client and the remote version are obtained; validate them and pick a stable version
 | 
			
		||||
@@ -160,7 +160,7 @@ func splitVersion(version string) (string, string, error) {
 | 
			
		||||
 | 
			
		||||
// Internal helper: return content of URL
 | 
			
		||||
func fetchFromURL(url string, timeout time.Duration) (string, error) {
 | 
			
		||||
	glog.V(2).Infof("fetching Kubernetes version from URL: %s", url)
 | 
			
		||||
	klog.V(2).Infof("fetching Kubernetes version from URL: %s", url)
 | 
			
		||||
	client := &http.Client{Timeout: timeout, Transport: netutil.SetOldTransportDefaults(&http.Transport{})}
 | 
			
		||||
	resp, err := client.Get(url)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -217,7 +217,7 @@ func kubeadmVersion(info string) (string, error) {
 | 
			
		||||
// the same Patch level release.
 | 
			
		||||
func validateStableVersion(remoteVersion, clientVersion string) (string, error) {
 | 
			
		||||
	if clientVersion == "" {
 | 
			
		||||
		glog.Infof("could not obtain client version; using remote version: %s", remoteVersion)
 | 
			
		||||
		klog.Infof("could not obtain client version; using remote version: %s", remoteVersion)
 | 
			
		||||
		return remoteVersion, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -234,7 +234,7 @@ func validateStableVersion(remoteVersion, clientVersion string) (string, error)
 | 
			
		||||
	if verClient.Major() < verRemote.Major() ||
 | 
			
		||||
		(verClient.Major() == verRemote.Major()) && verClient.Minor() < verRemote.Minor() {
 | 
			
		||||
		estimatedRelease := fmt.Sprintf("stable-%d.%d", verClient.Major(), verClient.Minor())
 | 
			
		||||
		glog.Infof("remote version is much newer: %s; falling back to: %s", remoteVersion, estimatedRelease)
 | 
			
		||||
		klog.Infof("remote version is much newer: %s; falling back to: %s", remoteVersion, estimatedRelease)
 | 
			
		||||
		return estimatedRelease, nil
 | 
			
		||||
	}
 | 
			
		||||
	return remoteVersion, nil
 | 
			
		||||
 
 | 
			
		||||
@@ -20,10 +20,12 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	klog.InitFlags(nil)
 | 
			
		||||
	if err := app.Run(); err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "error: %v\n", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
 
 | 
			
		||||
@@ -123,9 +123,9 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/csi-api/pkg/client/clientset/versioned:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kubelet/config/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/coreos/go-systemd/daemon:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ] + select({
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:linux": [
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,8 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/logs:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/kubelet/config/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ] + select({
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:linux": [
 | 
			
		||||
            "//vendor/github.com/google/cadvisor/container/common:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/version/verflag"
 | 
			
		||||
 | 
			
		||||
	// ensure libs have a chance to globally register their flags
 | 
			
		||||
	_ "github.com/golang/glog"
 | 
			
		||||
	_ "k8s.io/klog"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/credentialprovider/azure"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/credentialprovider/gcp"
 | 
			
		||||
)
 | 
			
		||||
@@ -91,7 +91,7 @@ func addCredentialProviderFlags(fs *pflag.FlagSet) {
 | 
			
		||||
	fs.AddFlagSet(local)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// addGlogFlags adds flags from github.com/golang/glog
 | 
			
		||||
// addGlogFlags adds flags from k8s.io/klog
 | 
			
		||||
func addGlogFlags(fs *pflag.FlagSet) {
 | 
			
		||||
	// lookup flags in global flag set and re-register the values with our flagset
 | 
			
		||||
	global := flag.CommandLine
 | 
			
		||||
 
 | 
			
		||||
@@ -34,9 +34,9 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/coreos/go-systemd/daemon"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
			
		||||
@@ -111,7 +111,7 @@ func NewKubeletCommand(stopCh <-chan struct{}) *cobra.Command {
 | 
			
		||||
	kubeletConfig, err := options.NewKubeletConfiguration()
 | 
			
		||||
	// programmer error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatal(err)
 | 
			
		||||
		klog.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
@@ -144,20 +144,20 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
			// initial flag parse, since we disable cobra's flag parsing
 | 
			
		||||
			if err := cleanFlagSet.Parse(args); err != nil {
 | 
			
		||||
				cmd.Usage()
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// check if there are non-flag arguments in the command line
 | 
			
		||||
			cmds := cleanFlagSet.Args()
 | 
			
		||||
			if len(cmds) > 0 {
 | 
			
		||||
				cmd.Usage()
 | 
			
		||||
				glog.Fatalf("unknown command: %s", cmds[0])
 | 
			
		||||
				klog.Fatalf("unknown command: %s", cmds[0])
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// short-circuit on help
 | 
			
		||||
			help, err := cleanFlagSet.GetBool("help")
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				glog.Fatal(`"help" flag is non-bool, programmer error, please correct`)
 | 
			
		||||
				klog.Fatal(`"help" flag is non-bool, programmer error, please correct`)
 | 
			
		||||
			}
 | 
			
		||||
			if help {
 | 
			
		||||
				cmd.Help()
 | 
			
		||||
@@ -170,40 +170,40 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
 | 
			
		||||
			// set feature gates from initial flags-based config
 | 
			
		||||
			if err := utilfeature.DefaultFeatureGate.SetFromMap(kubeletConfig.FeatureGates); err != nil {
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// validate the initial KubeletFlags
 | 
			
		||||
			if err := options.ValidateKubeletFlags(kubeletFlags); err != nil {
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if kubeletFlags.ContainerRuntime == "remote" && cleanFlagSet.Changed("pod-infra-container-image") {
 | 
			
		||||
				glog.Warning("Warning: For remote container runtime, --pod-infra-container-image is ignored in kubelet, which should be set in that remote runtime instead")
 | 
			
		||||
				klog.Warning("Warning: For remote container runtime, --pod-infra-container-image is ignored in kubelet, which should be set in that remote runtime instead")
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// load kubelet config file, if provided
 | 
			
		||||
			if configFile := kubeletFlags.KubeletConfigFile; len(configFile) > 0 {
 | 
			
		||||
				kubeletConfig, err = loadConfigFile(configFile)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					glog.Fatal(err)
 | 
			
		||||
					klog.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
				// We must enforce flag precedence by re-parsing the command line into the new object.
 | 
			
		||||
				// This is necessary to preserve backwards-compatibility across binary upgrades.
 | 
			
		||||
				// See issue #56171 for more details.
 | 
			
		||||
				if err := kubeletConfigFlagPrecedence(kubeletConfig, args); err != nil {
 | 
			
		||||
					glog.Fatal(err)
 | 
			
		||||
					klog.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
				// update feature gates based on new config
 | 
			
		||||
				if err := utilfeature.DefaultFeatureGate.SetFromMap(kubeletConfig.FeatureGates); err != nil {
 | 
			
		||||
					glog.Fatal(err)
 | 
			
		||||
					klog.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// We always validate the local configuration (command line + config file).
 | 
			
		||||
			// This is the default "last-known-good" config for dynamic config, and must always remain valid.
 | 
			
		||||
			if err := kubeletconfigvalidation.ValidateKubeletConfiguration(kubeletConfig); err != nil {
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// use dynamic kubelet config, if enabled
 | 
			
		||||
@@ -219,7 +219,7 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
						return kubeletConfigFlagPrecedence(kc, args)
 | 
			
		||||
					})
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					glog.Fatal(err)
 | 
			
		||||
					klog.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
				// If we should just use our existing, local config, the controller will return a nil config
 | 
			
		||||
				if dynamicKubeletConfig != nil {
 | 
			
		||||
@@ -227,7 +227,7 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
					// Note: flag precedence was already enforced in the controller, prior to validation,
 | 
			
		||||
					// by our above transform function. Now we simply update feature gates from the new config.
 | 
			
		||||
					if err := utilfeature.DefaultFeatureGate.SetFromMap(kubeletConfig.FeatureGates); err != nil {
 | 
			
		||||
						glog.Fatal(err)
 | 
			
		||||
						klog.Fatal(err)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -241,7 +241,7 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
			// use kubeletServer to construct the default KubeletDeps
 | 
			
		||||
			kubeletDeps, err := UnsecuredDependencies(kubeletServer)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// add the kubelet config controller to kubeletDeps
 | 
			
		||||
@@ -250,15 +250,15 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
 | 
			
		||||
			// start the experimental docker shim, if enabled
 | 
			
		||||
			if kubeletServer.KubeletFlags.ExperimentalDockershim {
 | 
			
		||||
				if err := RunDockershim(&kubeletServer.KubeletFlags, kubeletConfig, stopCh); err != nil {
 | 
			
		||||
					glog.Fatal(err)
 | 
			
		||||
					klog.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// run the kubelet
 | 
			
		||||
			glog.V(5).Infof("KubeletConfiguration: %#v", kubeletServer.KubeletConfiguration)
 | 
			
		||||
			klog.V(5).Infof("KubeletConfiguration: %#v", kubeletServer.KubeletConfiguration)
 | 
			
		||||
			if err := Run(kubeletServer, kubeletDeps, stopCh); err != nil {
 | 
			
		||||
				glog.Fatal(err)
 | 
			
		||||
				klog.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
@@ -361,7 +361,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
 | 
			
		||||
	mounter := mount.New(s.ExperimentalMounterPath)
 | 
			
		||||
	var pluginRunner = exec.New()
 | 
			
		||||
	if s.Containerized {
 | 
			
		||||
		glog.V(2).Info("Running kubelet in containerized mode")
 | 
			
		||||
		klog.V(2).Info("Running kubelet in containerized mode")
 | 
			
		||||
		ne, err := nsenter.NewNsenter(nsenter.DefaultHostRootFsPath, exec.New())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
@@ -404,7 +404,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
 | 
			
		||||
// not be generated.
 | 
			
		||||
func Run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan struct{}) error {
 | 
			
		||||
	// To help debugging, immediately log version
 | 
			
		||||
	glog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	klog.Infof("Version: %+v", version.Get())
 | 
			
		||||
	if err := initForOS(s.KubeletFlags.WindowsService); err != nil {
 | 
			
		||||
		return fmt.Errorf("failed OS init: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
@@ -439,11 +439,11 @@ func setConfigz(cz *configz.Config, kc *kubeletconfiginternal.KubeletConfigurati
 | 
			
		||||
func initConfigz(kc *kubeletconfiginternal.KubeletConfiguration) error {
 | 
			
		||||
	cz, err := configz.New("kubeletconfig")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("unable to register configz: %s", err)
 | 
			
		||||
		klog.Errorf("unable to register configz: %s", err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := setConfigz(cz, kc); err != nil {
 | 
			
		||||
		glog.Errorf("unable to register config: %s", err)
 | 
			
		||||
		klog.Errorf("unable to register config: %s", err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
@@ -456,12 +456,12 @@ func makeEventRecorder(kubeDeps *kubelet.Dependencies, nodeName types.NodeName)
 | 
			
		||||
	}
 | 
			
		||||
	eventBroadcaster := record.NewBroadcaster()
 | 
			
		||||
	kubeDeps.Recorder = eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: componentKubelet, Host: string(nodeName)})
 | 
			
		||||
	eventBroadcaster.StartLogging(glog.V(3).Infof)
 | 
			
		||||
	eventBroadcaster.StartLogging(klog.V(3).Infof)
 | 
			
		||||
	if kubeDeps.EventClient != nil {
 | 
			
		||||
		glog.V(4).Infof("Sending events to api server.")
 | 
			
		||||
		klog.V(4).Infof("Sending events to api server.")
 | 
			
		||||
		eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeDeps.EventClient.Events("")})
 | 
			
		||||
	} else {
 | 
			
		||||
		glog.Warning("No api server defined - no events will be sent to API server.")
 | 
			
		||||
		klog.Warning("No api server defined - no events will be sent to API server.")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -482,12 +482,12 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
	}
 | 
			
		||||
	done := make(chan struct{})
 | 
			
		||||
	if s.LockFilePath != "" {
 | 
			
		||||
		glog.Infof("acquiring file lock on %q", s.LockFilePath)
 | 
			
		||||
		klog.Infof("acquiring file lock on %q", s.LockFilePath)
 | 
			
		||||
		if err := flock.Acquire(s.LockFilePath); err != nil {
 | 
			
		||||
			return fmt.Errorf("unable to acquire file lock on %q: %v", s.LockFilePath, err)
 | 
			
		||||
		}
 | 
			
		||||
		if s.ExitOnLockContention {
 | 
			
		||||
			glog.Infof("watching for inotify events for: %v", s.LockFilePath)
 | 
			
		||||
			klog.Infof("watching for inotify events for: %v", s.LockFilePath)
 | 
			
		||||
			if err := watchForLockfileContention(s.LockFilePath, done); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
@@ -497,7 +497,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
	// Register current configuration with /configz endpoint
 | 
			
		||||
	err = initConfigz(&s.KubeletConfiguration)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("unable to register KubeletConfiguration with configz, error: %v", err)
 | 
			
		||||
		klog.Errorf("unable to register KubeletConfiguration with configz, error: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// About to get clients and such, detect standaloneMode
 | 
			
		||||
@@ -520,9 +520,9 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if cloud == nil {
 | 
			
		||||
				glog.V(2).Infof("No cloud provider specified: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile)
 | 
			
		||||
				klog.V(2).Infof("No cloud provider specified: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile)
 | 
			
		||||
			} else {
 | 
			
		||||
				glog.V(2).Infof("Successfully initialized cloud provider: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile)
 | 
			
		||||
				klog.V(2).Infof("Successfully initialized cloud provider: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile)
 | 
			
		||||
			}
 | 
			
		||||
			kubeDeps.Cloud = cloud
 | 
			
		||||
		}
 | 
			
		||||
@@ -549,7 +549,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
		kubeDeps.DynamicKubeClient = nil
 | 
			
		||||
		kubeDeps.EventClient = nil
 | 
			
		||||
		kubeDeps.HeartbeatClient = nil
 | 
			
		||||
		glog.Warningf("standalone mode, no API client")
 | 
			
		||||
		klog.Warningf("standalone mode, no API client")
 | 
			
		||||
	} else if kubeDeps.KubeClient == nil || kubeDeps.EventClient == nil || kubeDeps.HeartbeatClient == nil || kubeDeps.DynamicKubeClient == nil {
 | 
			
		||||
		// initialize clients if not standalone mode and any of the clients are not provided
 | 
			
		||||
		var kubeClient clientset.Interface
 | 
			
		||||
@@ -579,15 +579,15 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
 | 
			
		||||
		kubeClient, err = clientset.NewForConfig(clientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("New kubeClient from clientConfig error: %v", err)
 | 
			
		||||
			klog.Warningf("New kubeClient from clientConfig error: %v", err)
 | 
			
		||||
		} else if kubeClient.CertificatesV1beta1() != nil && clientCertificateManager != nil {
 | 
			
		||||
			glog.V(2).Info("Starting client certificate rotation.")
 | 
			
		||||
			klog.V(2).Info("Starting client certificate rotation.")
 | 
			
		||||
			clientCertificateManager.SetCertificateSigningRequestClient(kubeClient.CertificatesV1beta1().CertificateSigningRequests())
 | 
			
		||||
			clientCertificateManager.Start()
 | 
			
		||||
		}
 | 
			
		||||
		dynamicKubeClient, err = dynamic.NewForConfig(clientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Failed to initialize dynamic KubeClient: %v", err)
 | 
			
		||||
			klog.Warningf("Failed to initialize dynamic KubeClient: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// make a separate client for events
 | 
			
		||||
@@ -596,7 +596,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
		eventClientConfig.Burst = int(s.EventBurst)
 | 
			
		||||
		eventClient, err = v1core.NewForConfig(&eventClientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Failed to create API Server client for Events: %v", err)
 | 
			
		||||
			klog.Warningf("Failed to create API Server client for Events: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// make a separate client for heartbeat with throttling disabled and a timeout attached
 | 
			
		||||
@@ -612,14 +612,14 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
		heartbeatClientConfig.QPS = float32(-1)
 | 
			
		||||
		heartbeatClient, err = clientset.NewForConfig(&heartbeatClientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Failed to create API Server client for heartbeat: %v", err)
 | 
			
		||||
			klog.Warningf("Failed to create API Server client for heartbeat: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// csiClient works with CRDs that support json only
 | 
			
		||||
		clientConfig.ContentType = "application/json"
 | 
			
		||||
		csiClient, err := csiclientset.NewForConfig(clientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Warningf("Failed to create CSI API client: %v", err)
 | 
			
		||||
			klog.Warningf("Failed to create CSI API client: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		kubeDeps.KubeClient = kubeClient
 | 
			
		||||
@@ -663,7 +663,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
 | 
			
		||||
	if kubeDeps.ContainerManager == nil {
 | 
			
		||||
		if s.CgroupsPerQOS && s.CgroupRoot == "" {
 | 
			
		||||
			glog.Infof("--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /")
 | 
			
		||||
			klog.Infof("--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /")
 | 
			
		||||
			s.CgroupRoot = "/"
 | 
			
		||||
		}
 | 
			
		||||
		kubeReserved, err := parseResourceList(s.KubeReserved)
 | 
			
		||||
@@ -727,7 +727,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := checkPermissions(); err != nil {
 | 
			
		||||
		glog.Error(err)
 | 
			
		||||
		klog.Error(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	utilruntime.ReallyCrash = s.ReallyCrashForTesting
 | 
			
		||||
@@ -737,7 +737,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
	// TODO(vmarmol): Do this through container config.
 | 
			
		||||
	oomAdjuster := kubeDeps.OOMAdjuster
 | 
			
		||||
	if err := oomAdjuster.ApplyOOMScoreAdj(0, int(s.OOMScoreAdj)); err != nil {
 | 
			
		||||
		glog.Warning(err)
 | 
			
		||||
		klog.Warning(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := RunKubelet(s, kubeDeps, s.RunOnce); err != nil {
 | 
			
		||||
@@ -749,7 +749,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
 | 
			
		||||
		go wait.Until(func() {
 | 
			
		||||
			err := http.ListenAndServe(net.JoinHostPort(s.HealthzBindAddress, strconv.Itoa(int(s.HealthzPort))), nil)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				glog.Errorf("Starting health server failed: %v", err)
 | 
			
		||||
				klog.Errorf("Starting health server failed: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		}, 5*time.Second, wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
@@ -788,7 +788,7 @@ func getNodeName(cloud cloudprovider.Interface, hostname string) (types.NodeName
 | 
			
		||||
		return "", fmt.Errorf("error fetching current node name from cloud provider: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName)
 | 
			
		||||
	klog.V(2).Infof("cloud provider determined current node name to be %s", nodeName)
 | 
			
		||||
 | 
			
		||||
	return nodeName, nil
 | 
			
		||||
}
 | 
			
		||||
@@ -822,7 +822,7 @@ func InitializeTLS(kf *options.KubeletFlags, kc *kubeletconfiginternal.KubeletCo
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			glog.V(4).Infof("Using self-signed cert (%s, %s)", kc.TLSCertFile, kc.TLSPrivateKeyFile)
 | 
			
		||||
			klog.V(4).Infof("Using self-signed cert (%s, %s)", kc.TLSCertFile, kc.TLSPrivateKeyFile)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -938,7 +938,7 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
 | 
			
		||||
	capabilities.Setup(kubeServer.AllowPrivileged, privilegedSources, 0)
 | 
			
		||||
 | 
			
		||||
	credentialprovider.SetPreferredDockercfgPath(kubeServer.RootDirectory)
 | 
			
		||||
	glog.V(2).Infof("Using root directory: %v", kubeServer.RootDirectory)
 | 
			
		||||
	klog.V(2).Infof("Using root directory: %v", kubeServer.RootDirectory)
 | 
			
		||||
 | 
			
		||||
	if kubeDeps.OSInterface == nil {
 | 
			
		||||
		kubeDeps.OSInterface = kubecontainer.RealOS{}
 | 
			
		||||
@@ -993,10 +993,10 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
 | 
			
		||||
		if _, err := k.RunOnce(podCfg.Updates()); err != nil {
 | 
			
		||||
			return fmt.Errorf("runonce failed: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		glog.Infof("Started kubelet as runonce")
 | 
			
		||||
		klog.Infof("Started kubelet as runonce")
 | 
			
		||||
	} else {
 | 
			
		||||
		startKubelet(k, podCfg, &kubeServer.KubeletConfiguration, kubeDeps, kubeServer.EnableServer)
 | 
			
		||||
		glog.Infof("Started kubelet")
 | 
			
		||||
		klog.Infof("Started kubelet")
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
@@ -1180,7 +1180,7 @@ func RunDockershim(f *options.KubeletFlags, c *kubeletconfiginternal.KubeletConf
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	glog.V(2).Infof("Starting the GRPC server for the docker CRI shim.")
 | 
			
		||||
	klog.V(2).Infof("Starting the GRPC server for the docker CRI shim.")
 | 
			
		||||
	server := dockerremote.NewDockerServer(f.RemoteRuntimeEndpoint, ds)
 | 
			
		||||
	if err := server.Start(); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 
 | 
			
		||||
@@ -17,26 +17,26 @@ limitations under the License.
 | 
			
		||||
package app
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"golang.org/x/exp/inotify"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func watchForLockfileContention(path string, done chan struct{}) error {
 | 
			
		||||
	watcher, err := inotify.NewWatcher()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Errorf("unable to create watcher for lockfile: %v", err)
 | 
			
		||||
		klog.Errorf("unable to create watcher for lockfile: %v", err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err = watcher.AddWatch(path, inotify.IN_OPEN|inotify.IN_DELETE_SELF); err != nil {
 | 
			
		||||
		glog.Errorf("unable to watch lockfile: %v", err)
 | 
			
		||||
		klog.Errorf("unable to watch lockfile: %v", err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	go func() {
 | 
			
		||||
		select {
 | 
			
		||||
		case ev := <-watcher.Event:
 | 
			
		||||
			glog.Infof("inotify event: %v", ev)
 | 
			
		||||
			klog.Infof("inotify event: %v", ev)
 | 
			
		||||
		case err = <-watcher.Error:
 | 
			
		||||
			glog.Errorf("inotify watcher error: %v", err)
 | 
			
		||||
			klog.Errorf("inotify watcher error: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		close(done)
 | 
			
		||||
	}()
 | 
			
		||||
 
 | 
			
		||||
@@ -35,9 +35,9 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/github.com/spf13/pflag:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec/testing:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -23,9 +23,9 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
@@ -138,18 +138,18 @@ func newHollowNodeCommand() *cobra.Command {
 | 
			
		||||
 | 
			
		||||
func run(config *HollowNodeConfig) {
 | 
			
		||||
	if !knownMorphs.Has(config.Morph) {
 | 
			
		||||
		glog.Fatalf("Unknown morph: %v. Allowed values: %v", config.Morph, knownMorphs.List())
 | 
			
		||||
		klog.Fatalf("Unknown morph: %v. Allowed values: %v", config.Morph, knownMorphs.List())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// create a client to communicate with API server.
 | 
			
		||||
	clientConfig, err := config.createClientConfigFromFile()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Failed to create a ClientConfig: %v. Exiting.", err)
 | 
			
		||||
		klog.Fatalf("Failed to create a ClientConfig: %v. Exiting.", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	client, err := clientset.NewForConfig(clientConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Failed to create a ClientSet: %v. Exiting.", err)
 | 
			
		||||
		klog.Fatalf("Failed to create a ClientSet: %v. Exiting.", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if config.Morph == "kubelet" {
 | 
			
		||||
@@ -181,7 +181,7 @@ func run(config *HollowNodeConfig) {
 | 
			
		||||
	if config.Morph == "proxy" {
 | 
			
		||||
		client, err := clientset.NewForConfig(clientConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("Failed to create API Server client: %v", err)
 | 
			
		||||
			klog.Fatalf("Failed to create API Server client: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		iptInterface := fakeiptables.NewFake()
 | 
			
		||||
		sysctl := fakesysctl.NewFake()
 | 
			
		||||
@@ -203,7 +203,7 @@ func run(config *HollowNodeConfig) {
 | 
			
		||||
			config.ProxierMinSyncPeriod,
 | 
			
		||||
		)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("Failed to create hollowProxy instance: %v", err)
 | 
			
		||||
			klog.Fatalf("Failed to create hollowProxy instance: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		hollowProxy.Run()
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user