Browse code

kubernetes : 1.9.6 and 1.10.2.

Change-Id: Ic1b90ff28b4bc56fe8618feefb720f6463b173ce
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/5122
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Sharath George

Xiaolin Li authored on 2018/05/05 07:22:57
Showing 5 changed files
... ...
@@ -1,6 +1,6 @@
1
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1alpha1.json cascade-kubernetes/api/swagger-spec/apps_v1alpha1.json
2
-+++ cascade-kubernetes/api/swagger-spec/apps_v1alpha1.json	2018-01-31 02:12:47.000000000 +0000
1
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/apps_v1alpha1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/apps_v1alpha1.json
2
+--- kubernetes-original/api/swagger-spec/apps_v1alpha1.json	2018-03-20 19:21:10.000000000 +0000
3 3
 @@ -1459,6 +1459,10 @@
4 4
       "photonPersistentDisk": {
5 5
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
... ...
@@ -36,10 +36,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1alpha1.json
36 36
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
37 37
       }
38 38
      }
39
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta1.json cascade-kubernetes/api/swagger-spec/apps_v1beta1.json
40
-+++ cascade-kubernetes/api/swagger-spec/apps_v1beta1.json	2018-01-31 02:12:47.000000000 +0000
41
-@@ -4400,6 +4400,10 @@
39
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/apps_v1beta1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/apps_v1beta1.json
40
+--- kubernetes-original/api/swagger-spec/apps_v1beta1.json	2018-03-20 19:21:10.000000000 +0000
41
+@@ -4479,6 +4479,10 @@
42 42
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
43 43
        "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
44 44
       },
... ...
@@ -50,7 +50,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta1.json c
50 50
       "projected": {
51 51
        "$ref": "v1.ProjectedVolumeSource",
52 52
        "description": "Items for all in one resources secrets, configmaps, and downward API"
53
-@@ -5123,6 +5127,23 @@
53
+@@ -5202,6 +5206,23 @@
54 54
       },
55 55
       "fsType": {
56 56
        "type": "string",
... ...
@@ -74,10 +74,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta1.json c
74 74
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
75 75
       }
76 76
      }
77
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta2.json cascade-kubernetes/api/swagger-spec/apps_v1beta2.json
78
-+++ cascade-kubernetes/api/swagger-spec/apps_v1beta2.json	2018-01-31 02:12:47.000000000 +0000
79
-@@ -6730,6 +6730,10 @@
77
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/apps_v1beta2.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/apps_v1beta2.json
78
+--- kubernetes-original/api/swagger-spec/apps_v1beta2.json	2018-03-20 19:21:10.000000000 +0000
79
+@@ -6845,6 +6845,10 @@
80 80
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
81 81
        "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
82 82
       },
... ...
@@ -88,7 +88,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta2.json c
88 88
       "projected": {
89 89
        "$ref": "v1.ProjectedVolumeSource",
90 90
        "description": "Items for all in one resources secrets, configmaps, and downward API"
91
-@@ -7453,6 +7457,23 @@
91
+@@ -7568,6 +7572,23 @@
92 92
       },
93 93
       "fsType": {
94 94
        "type": "string",
... ...
@@ -112,10 +112,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/apps_v1beta2.json c
112 112
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
113 113
       }
114 114
      }
115
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1beta1.json cascade-kubernetes/api/swagger-spec/batch_v1beta1.json
116
-+++ cascade-kubernetes/api/swagger-spec/batch_v1beta1.json	2018-01-31 02:12:47.000000000 +0000
117
-@@ -1850,6 +1850,10 @@
115
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/batch_v1beta1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/batch_v1beta1.json
116
+--- kubernetes-original/api/swagger-spec/batch_v1beta1.json	2018-03-20 19:21:10.000000000 +0000
117
+@@ -1874,6 +1874,10 @@
118 118
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
119 119
        "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
120 120
       },
... ...
@@ -126,7 +126,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1beta1.json
126 126
       "projected": {
127 127
        "$ref": "v1.ProjectedVolumeSource",
128 128
        "description": "Items for all in one resources secrets, configmaps, and downward API"
129
-@@ -2573,6 +2577,23 @@
129
+@@ -2597,6 +2601,23 @@
130 130
       },
131 131
       "fsType": {
132 132
        "type": "string",
... ...
@@ -150,10 +150,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1beta1.json
150 150
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
151 151
       }
152 152
      }
153
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1.json cascade-kubernetes/api/swagger-spec/batch_v1.json
154
-+++ cascade-kubernetes/api/swagger-spec/batch_v1.json	2018-01-31 02:12:47.000000000 +0000
155
-@@ -1795,6 +1795,10 @@
153
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/batch_v1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/batch_v1.json
154
+--- kubernetes-original/api/swagger-spec/batch_v1.json	2018-03-20 19:21:10.000000000 +0000
155
+@@ -1819,6 +1819,10 @@
156 156
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
157 157
        "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
158 158
       },
... ...
@@ -164,7 +164,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1.json casca
164 164
       "projected": {
165 165
        "$ref": "v1.ProjectedVolumeSource",
166 166
        "description": "Items for all in one resources secrets, configmaps, and downward API"
167
-@@ -2518,6 +2522,23 @@
167
+@@ -2542,6 +2546,23 @@
168 168
       },
169 169
       "fsType": {
170 170
        "type": "string",
... ...
@@ -188,10 +188,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v1.json casca
188 188
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
189 189
       }
190 190
      }
191
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v2alpha1.json cascade-kubernetes/api/swagger-spec/batch_v2alpha1.json
192
-+++ cascade-kubernetes/api/swagger-spec/batch_v2alpha1.json	2018-01-31 02:12:47.000000000 +0000
193
-@@ -1865,6 +1865,10 @@
191
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/batch_v2alpha1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/batch_v2alpha1.json
192
+--- kubernetes-original/api/swagger-spec/batch_v2alpha1.json	2018-03-20 19:21:10.000000000 +0000
193
+@@ -1889,6 +1889,10 @@
194 194
       "storageos": {
195 195
        "$ref": "v1.StorageOSVolumeSource",
196 196
        "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes."
... ...
@@ -202,7 +202,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v2alpha1.json
202 202
       }
203 203
      }
204 204
     },
205
-@@ -2769,6 +2773,23 @@
205
+@@ -2793,6 +2797,23 @@
206 206
       }
207 207
      }
208 208
     },
... ...
@@ -226,10 +226,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/batch_v2alpha1.json
226 226
     "v1.Container": {
227 227
      "id": "v1.Container",
228 228
      "description": "A single application container that you want to run within a pod.",
229
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/extensions_v1beta1.json cascade-kubernetes/api/swagger-spec/extensions_v1beta1.json
230
-+++ cascade-kubernetes/api/swagger-spec/extensions_v1beta1.json	2018-01-31 02:12:47.000000000 +0000
231
-@@ -7363,6 +7363,10 @@
229
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/extensions_v1beta1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/extensions_v1beta1.json
230
+--- kubernetes-original/api/swagger-spec/extensions_v1beta1.json	2018-03-20 19:21:10.000000000 +0000
231
+@@ -7502,6 +7502,10 @@
232 232
       "storageos": {
233 233
        "$ref": "v1.StorageOSVolumeSource",
234 234
        "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes."
... ...
@@ -240,7 +240,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/extensions_v1beta1.
240 240
       }
241 241
      }
242 242
     },
243
-@@ -8071,6 +8075,23 @@
243
+@@ -8210,6 +8214,23 @@
244 244
       },
245 245
       "fsType": {
246 246
        "type": "string",
... ...
@@ -264,10 +264,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/extensions_v1beta1.
264 264
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
265 265
       }
266 266
      }
267
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/settings.k8s.io_v1alpha1.json cascade-kubernetes/api/swagger-spec/settings.k8s.io_v1alpha1.json
268
-+++ cascade-kubernetes/api/swagger-spec/settings.k8s.io_v1alpha1.json	2018-01-31 02:12:47.000000000 +0000
269
-@@ -1661,6 +1661,10 @@
267
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/settings.k8s.io_v1alpha1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/settings.k8s.io_v1alpha1.json
268
+--- kubernetes-original/api/swagger-spec/settings.k8s.io_v1alpha1.json	2018-03-20 19:21:10.000000000 +0000
269
+@@ -1676,6 +1676,10 @@
270 270
       "storageos": {
271 271
        "$ref": "v1.StorageOSVolumeSource",
272 272
        "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes."
... ...
@@ -278,7 +278,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/settings.k8s.io_v1a
278 278
       }
279 279
      }
280 280
     },
281
-@@ -2331,6 +2335,23 @@
281
+@@ -2346,6 +2350,23 @@
282 282
       },
283 283
       "fsType": {
284 284
        "type": "string",
... ...
@@ -302,10 +302,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/settings.k8s.io_v1a
302 302
        "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."
303 303
       }
304 304
      }
305
-diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/v1.json cascade-kubernetes/api/swagger-spec/v1.json
306
-+++ cascade-kubernetes/api/swagger-spec/v1.json	2018-01-31 02:12:47.000000000 +0000
307
-@@ -20271,6 +20271,10 @@
305
+diff -uNr --no-dereference kubernetes-original/api/swagger-spec/v1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/v1.json
306
+--- kubernetes-original/api/swagger-spec/v1.json	2018-03-20 19:21:10.000000000 +0000
307
+@@ -20629,6 +20629,10 @@
308 308
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
309 309
        "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
310 310
       },
... ...
@@ -316,7 +316,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/v1.json cascade-kub
316 316
       "portworxVolume": {
317 317
        "$ref": "v1.PortworxVolumeSource",
318 318
        "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine"
319
-@@ -20834,6 +20838,23 @@
319
+@@ -21200,6 +21204,23 @@
320 320
       }
321 321
      }
322 322
     },
... ...
@@ -340,7 +340,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/v1.json cascade-kub
340 340
     "v1.PortworxVolumeSource": {
341 341
      "id": "v1.PortworxVolumeSource",
342 342
      "description": "PortworxVolumeSource represents a Portworx volume resource.",
343
-@@ -21265,6 +21286,10 @@
343
+@@ -21657,6 +21678,10 @@
344 344
       "storageos": {
345 345
        "$ref": "v1.StorageOSVolumeSource",
346 346
        "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes."
... ...
@@ -351,73 +351,56 @@ diff -uNr --no-dereference kubernetes-1.8.1/api/swagger-spec/v1.json cascade-kub
351 351
       }
352 352
      }
353 353
     },
354
-diff -uNr --no-dereference kubernetes-1.8.1/cmd/kube-controller-manager/app/BUILD cascade-kubernetes/cmd/kube-controller-manager/app/BUILD
355
-+++ cascade-kubernetes/cmd/kube-controller-manager/app/BUILD	2018-01-31 02:12:47.000000000 +0000
356
-@@ -42,6 +42,7 @@
357
-         "//pkg/cloudprovider/providers:go_default_library",
358
-         "//pkg/cloudprovider/providers/aws:go_default_library",
359
-         "//pkg/cloudprovider/providers/azure:go_default_library",
360
-+        "//pkg/cloudprovider/providers/cascade:go_default_library",
361
-         "//pkg/cloudprovider/providers/gce:go_default_library",
362
-         "//pkg/cloudprovider/providers/openstack:go_default_library",
363
-         "//pkg/cloudprovider/providers/photon:go_default_library",
364
-@@ -84,6 +85,7 @@
354
+diff -uNr --no-dereference kubernetes-original/cmd/kube-controller-manager/app/BUILD kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD
355
+--- kubernetes-original/cmd/kube-controller-manager/app/BUILD	2018-03-20 19:21:10.000000000 +0000
356
+@@ -86,6 +86,7 @@
365 357
          "//pkg/volume/aws_ebs:go_default_library",
366 358
          "//pkg/volume/azure_dd:go_default_library",
367 359
          "//pkg/volume/azure_file:go_default_library",
368 360
 +        "//pkg/volume/cascade_disk:go_default_library",
369 361
          "//pkg/volume/cinder:go_default_library",
362
+         "//pkg/volume/csi:go_default_library",
370 363
          "//pkg/volume/fc:go_default_library",
371
-         "//pkg/volume/flexvolume:go_default_library",
372
-diff -uNr --no-dereference kubernetes-1.8.1/cmd/kube-controller-manager/app/plugins.go cascade-kubernetes/cmd/kube-controller-manager/app/plugins.go
373
-+++ cascade-kubernetes/cmd/kube-controller-manager/app/plugins.go	2018-01-31 02:12:47.000000000 +0000
374
-@@ -32,6 +32,7 @@
375
- 	"k8s.io/kubernetes/pkg/cloudprovider"
376
- 	"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
377
- 	"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
378
-+	"k8s.io/kubernetes/pkg/cloudprovider/providers/cascade"
379
- 	"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
380
- 	"k8s.io/kubernetes/pkg/cloudprovider/providers/openstack"
381
- 	"k8s.io/kubernetes/pkg/cloudprovider/providers/photon"
382
-@@ -58,6 +59,7 @@
383
- 	"k8s.io/kubernetes/pkg/volume/storageos"
384
- 	volumeutil "k8s.io/kubernetes/pkg/volume/util"
385
- 	"k8s.io/kubernetes/pkg/volume/vsphere_volume"
364
+diff -uNr --no-dereference kubernetes-original/cmd/kube-controller-manager/app/plugins.go kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go
365
+--- kubernetes-original/cmd/kube-controller-manager/app/plugins.go	2018-03-20 19:21:10.000000000 +0000
366
+@@ -34,6 +34,7 @@
367
+ 	"k8s.io/kubernetes/pkg/volume/aws_ebs"
368
+ 	"k8s.io/kubernetes/pkg/volume/azure_dd"
369
+ 	"k8s.io/kubernetes/pkg/volume/azure_file"
386 370
 +	"k8s.io/kubernetes/pkg/volume/cascade_disk"
387
- )
388
- 
389
- // ProbeAttachableVolumePlugins collects all volume plugins for the attach/
390
-@@ -78,6 +80,7 @@
391
- 	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
371
+ 	"k8s.io/kubernetes/pkg/volume/cinder"
372
+ 	"k8s.io/kubernetes/pkg/volume/csi"
373
+ 	"k8s.io/kubernetes/pkg/volume/fc"
374
+@@ -77,6 +78,7 @@
392 375
  	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
393 376
  	allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
377
+ 	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
394 378
 +	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
395
- 	return allPlugins
396
- }
397
- 
398
-@@ -104,6 +107,7 @@
379
+ 	if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
380
+ 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
381
+ 	}
382
+@@ -106,6 +108,7 @@
399 383
  	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
400 384
  	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
401 385
  	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
402 386
 +	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
403
- 	return allPlugins
404
- }
405
- 
406
-@@ -168,6 +172,8 @@
407
- 			allPlugins = append(allPlugins, azure_dd.ProbeVolumePlugins()...)
408
- 		case photon.ProviderName == cloud.ProviderName():
409
- 			allPlugins = append(allPlugins, photon_pd.ProbeVolumePlugins()...)
410
-+		case cascade.ProviderName == cloud.ProviderName():
411
-+			allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
412
- 		}
387
+ 	if !utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
388
+ 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
413 389
  	}
390
+@@ -165,6 +168,7 @@
391
+ 	allPlugins = append(allPlugins, vsphere_volume.ProbeVolumePlugins()...)
392
+ 	allPlugins = append(allPlugins, azure_dd.ProbeVolumePlugins()...)
393
+ 	allPlugins = append(allPlugins, photon_pd.ProbeVolumePlugins()...)
394
++	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
414 395
  
415
-diff -uNr --no-dereference kubernetes-1.8.1/cmd/kubelet/app/BUILD cascade-kubernetes/cmd/kubelet/app/BUILD
416
-+++ cascade-kubernetes/cmd/kubelet/app/BUILD	2018-01-31 02:12:47.000000000 +0000
417
-@@ -73,6 +73,7 @@
396
+ 	return allPlugins
397
+ }
398
+diff -uNr --no-dereference kubernetes-original/cmd/kubelet/app/BUILD kubernetes-modified/src/k8s.io/kubernetes/cmd/kubelet/app/BUILD
399
+--- kubernetes-original/cmd/kubelet/app/BUILD	2018-03-20 19:21:10.000000000 +0000
400
+@@ -74,6 +74,7 @@
418 401
          "//pkg/volume/aws_ebs:go_default_library",
419 402
          "//pkg/volume/azure_dd:go_default_library",
420 403
          "//pkg/volume/azure_file:go_default_library",
... ...
@@ -425,9 +408,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/cmd/kubelet/app/BUILD cascade-kubern
425 425
          "//pkg/volume/cephfs:go_default_library",
426 426
          "//pkg/volume/cinder:go_default_library",
427 427
          "//pkg/volume/configmap:go_default_library",
428
-diff -uNr --no-dereference kubernetes-1.8.1/cmd/kubelet/app/plugins.go cascade-kubernetes/cmd/kubelet/app/plugins.go
429
-+++ cascade-kubernetes/cmd/kubelet/app/plugins.go	2018-01-31 02:12:47.000000000 +0000
428
+diff -uNr --no-dereference kubernetes-original/cmd/kubelet/app/plugins.go kubernetes-modified/src/k8s.io/kubernetes/cmd/kubelet/app/plugins.go
429
+--- kubernetes-original/cmd/kubelet/app/plugins.go	2018-03-20 19:21:10.000000000 +0000
430 430
 @@ -32,6 +32,7 @@
431 431
  	"k8s.io/kubernetes/pkg/volume/aws_ebs"
432 432
  	"k8s.io/kubernetes/pkg/volume/azure_dd"
... ...
@@ -436,54 +419,266 @@ diff -uNr --no-dereference kubernetes-1.8.1/cmd/kubelet/app/plugins.go cascade-k
436 436
  	"k8s.io/kubernetes/pkg/volume/cephfs"
437 437
  	"k8s.io/kubernetes/pkg/volume/cinder"
438 438
  	"k8s.io/kubernetes/pkg/volume/configmap"
439
-@@ -96,6 +97,7 @@
439
+@@ -100,6 +101,7 @@
440 440
  	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
441 441
  	allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
442 442
  	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
443 443
 +	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
444
- 	return allPlugins
445
- }
446
- 
447
-diff -uNr --no-dereference kubernetes-1.8.1/federation/apis/openapi-spec/swagger.json cascade-kubernetes/federation/apis/openapi-spec/swagger.json
448
-+++ cascade-kubernetes/federation/apis/openapi-spec/swagger.json	2018-01-31 02:12:47.000000000 +0000
449
-@@ -10540,6 +10540,22 @@
450
-      }
451
-     }
452
-    },
453
-+   "io.k8s.api.core.v1.CascadeDiskVolumeSource": {
454
-+    "description": "Represents a Cascade persistent disk resource.",
455
-+    "required": [
456
-+     "diskID"
457
-+    ],
458
-+    "properties": {
459
-+     "fsType": {
460
-+      "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.",
461
-+      "type": "string"
462
-+     },
463
-+     "diskID": {
464
-+      "description": "ID that identifies Cascade persistent disk",
465
-+      "type": "string"
466
-+     }
467
-+    }
468
-+   },
469
-    "io.k8s.api.core.v1.Capabilities": {
470
-     "description": "Adds and removes POSIX capabilities from running containers.",
471
-     "properties": {
472
-@@ -12865,6 +12881,10 @@
473
-      "vsphereVolume": {
474
-       "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine",
475
-       "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"
476
-+     },
477
-+     "cascadeDisk": {
478
-+      "description": "CascadeDisk represents a Cascade persistent disk attached and mounted on kubelets host machine",
479
-+      "$ref": "#/definitions/io.k8s.api.core.v1.CascadeDiskVolumeSource"
480
-      }
481
-     }
482
-    },
483
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/types.go cascade-kubernetes/pkg/api/types.go
484
-+++ cascade-kubernetes/pkg/api/types.go	2018-01-31 02:12:47.000000000 +0000
444
+ 	if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
445
+ 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
446
+ 	}
447
+diff -uNr --no-dereference kubernetes-original/.idea/kubernetes.iml kubernetes-modified/src/k8s.io/kubernetes/.idea/kubernetes.iml
448
+--- kubernetes-original/.idea/kubernetes.iml	1970-01-01 00:00:00.000000000 +0000
449
+@@ -0,0 +1,9 @@
450
++<?xml version="1.0" encoding="UTF-8"?>
451
++<module type="JAVA_MODULE" version="4">
452
++  <component name="NewModuleRootManager" inherit-compiler-output="true">
453
++    <exclude-output />
454
++    <content url="file://$MODULE_DIR$" />
455
++    <orderEntry type="inheritedJdk" />
456
++    <orderEntry type="sourceFolder" forTests="false" />
457
++  </component>
458
++</module>
459
+\ No newline at end of file
460
+diff -uNr --no-dereference kubernetes-original/.idea/modules.xml kubernetes-modified/src/k8s.io/kubernetes/.idea/modules.xml
461
+--- kubernetes-original/.idea/modules.xml	1970-01-01 00:00:00.000000000 +0000
462
+@@ -0,0 +1,8 @@
463
++<?xml version="1.0" encoding="UTF-8"?>
464
++<project version="4">
465
++  <component name="ProjectModuleManager">
466
++    <modules>
467
++      <module fileurl="file://$PROJECT_DIR$/.idea/kubernetes.iml" filepath="$PROJECT_DIR$/.idea/kubernetes.iml" />
468
++    </modules>
469
++  </component>
470
++</project>
471
+\ No newline at end of file
472
+diff -uNr --no-dereference kubernetes-original/.idea/workspace.xml kubernetes-modified/src/k8s.io/kubernetes/.idea/workspace.xml
473
+--- kubernetes-original/.idea/workspace.xml	1970-01-01 00:00:00.000000000 +0000
474
+@@ -0,0 +1,217 @@
475
++<?xml version="1.0" encoding="UTF-8"?>
476
++<project version="4">
477
++  <component name="ChangeListManager">
478
++    <list default="true" id="76c7d3c7-31f8-4430-8717-7c15514d1ce9" name="Default" comment="" />
479
++    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
480
++    <option name="TRACKING_ENABLED" value="true" />
481
++    <option name="SHOW_DIALOG" value="false" />
482
++    <option name="HIGHLIGHT_CONFLICTS" value="true" />
483
++    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
484
++    <option name="LAST_RESOLUTION" value="IGNORE" />
485
++  </component>
486
++  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
487
++  <component name="GradleLocalSettings">
488
++    <option name="externalProjectsViewState">
489
++      <projects_view />
490
++    </option>
491
++  </component>
492
++  <component name="ProjectFrameBounds">
493
++    <option name="x" value="1680" />
494
++    <option name="y" value="-235" />
495
++    <option name="width" value="2560" />
496
++    <option name="height" value="1417" />
497
++  </component>
498
++  <component name="ProjectView">
499
++    <navigator currentView="ProjectPane" proportions="" version="1">
500
++      <flattenPackages />
501
++      <showMembers />
502
++      <showModules />
503
++      <showLibraryContents />
504
++      <hideEmptyPackages />
505
++      <abbreviatePackageNames />
506
++      <autoscrollToSource />
507
++      <autoscrollFromSource />
508
++      <sortByType />
509
++      <manualOrder />
510
++      <foldersAlwaysOnTop value="true" />
511
++    </navigator>
512
++    <panes>
513
++      <pane id="Scope" />
514
++      <pane id="Scratches" />
515
++      <pane id="PackagesPane" />
516
++      <pane id="ProjectPane">
517
++        <subPane>
518
++          <PATH>
519
++            <PATH_ELEMENT>
520
++              <option name="myItemId" value="kubernetes" />
521
++              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
522
++            </PATH_ELEMENT>
523
++            <PATH_ELEMENT>
524
++              <option name="myItemId" value="kubernetes" />
525
++              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
526
++            </PATH_ELEMENT>
527
++          </PATH>
528
++        </subPane>
529
++      </pane>
530
++    </panes>
531
++  </component>
532
++  <component name="PropertiesComponent">
533
++    <property name="settings.editor.selected.configurable" value="com.goide.configuration.GoLibrariesConfigurableProvider$1" />
534
++    <property name="configurable.Global.libraries.is.expanded" value="true" />
535
++    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
536
++  </component>
537
++  <component name="RunDashboard">
538
++    <option name="ruleStates">
539
++      <list>
540
++        <RuleState>
541
++          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
542
++        </RuleState>
543
++        <RuleState>
544
++          <option name="name" value="StatusDashboardGroupingRule" />
545
++        </RuleState>
546
++      </list>
547
++    </option>
548
++  </component>
549
++  <component name="RunManager">
550
++    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
551
++      <module name="" />
552
++      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
553
++      <option name="PROGRAM_PARAMETERS" />
554
++      <predefined_log_file id="idea.log" enabled="true" />
555
++      <method />
556
++    </configuration>
557
++    <configuration default="true" type="Applet" factoryName="Applet">
558
++      <option name="HTML_USED" value="false" />
559
++      <option name="WIDTH" value="400" />
560
++      <option name="HEIGHT" value="300" />
561
++      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
562
++      <module />
563
++      <method />
564
++    </configuration>
565
++    <configuration default="true" type="Application" factoryName="Application">
566
++      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
567
++      <option name="MAIN_CLASS_NAME" />
568
++      <option name="VM_PARAMETERS" />
569
++      <option name="PROGRAM_PARAMETERS" />
570
++      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
571
++      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
572
++      <option name="ALTERNATIVE_JRE_PATH" />
573
++      <option name="ENABLE_SWING_INSPECTOR" value="false" />
574
++      <option name="ENV_VARIABLES" />
575
++      <option name="PASS_PARENT_ENVS" value="true" />
576
++      <module name="" />
577
++      <envs />
578
++      <method />
579
++    </configuration>
580
++    <configuration default="true" type="JUnit" factoryName="JUnit">
581
++      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
582
++      <module name="" />
583
++      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
584
++      <option name="ALTERNATIVE_JRE_PATH" />
585
++      <option name="PACKAGE_NAME" />
586
++      <option name="MAIN_CLASS_NAME" />
587
++      <option name="METHOD_NAME" />
588
++      <option name="TEST_OBJECT" value="class" />
589
++      <option name="VM_PARAMETERS" value="-ea" />
590
++      <option name="PARAMETERS" />
591
++      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
592
++      <option name="ENV_VARIABLES" />
593
++      <option name="PASS_PARENT_ENVS" value="true" />
594
++      <option name="TEST_SEARCH_SCOPE">
595
++        <value defaultName="singleModule" />
596
++      </option>
597
++      <envs />
598
++      <patterns />
599
++      <method />
600
++    </configuration>
601
++    <configuration default="true" type="Remote" factoryName="Remote">
602
++      <option name="USE_SOCKET_TRANSPORT" value="true" />
603
++      <option name="SERVER_MODE" value="false" />
604
++      <option name="SHMEM_ADDRESS" value="javadebug" />
605
++      <option name="HOST" value="localhost" />
606
++      <option name="PORT" value="5005" />
607
++      <method />
608
++    </configuration>
609
++    <configuration default="true" type="TestNG" factoryName="TestNG">
610
++      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
611
++      <module name="" />
612
++      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
613
++      <option name="ALTERNATIVE_JRE_PATH" />
614
++      <option name="SUITE_NAME" />
615
++      <option name="PACKAGE_NAME" />
616
++      <option name="MAIN_CLASS_NAME" />
617
++      <option name="METHOD_NAME" />
618
++      <option name="GROUP_NAME" />
619
++      <option name="TEST_OBJECT" value="CLASS" />
620
++      <option name="VM_PARAMETERS" value="-ea" />
621
++      <option name="PARAMETERS" />
622
++      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
623
++      <option name="OUTPUT_DIRECTORY" />
624
++      <option name="ANNOTATION_TYPE" />
625
++      <option name="ENV_VARIABLES" />
626
++      <option name="PASS_PARENT_ENVS" value="true" />
627
++      <option name="TEST_SEARCH_SCOPE">
628
++        <value defaultName="singleModule" />
629
++      </option>
630
++      <option name="USE_DEFAULT_REPORTERS" value="false" />
631
++      <option name="PROPERTIES_FILE" />
632
++      <envs />
633
++      <properties />
634
++      <listeners />
635
++      <method />
636
++    </configuration>
637
++  </component>
638
++  <component name="ShelveChangesManager" show_recycled="false">
639
++    <option name="remove_strategy" value="false" />
640
++  </component>
641
++  <component name="TaskManager">
642
++    <task active="true" id="Default" summary="Default task">
643
++      <changelist id="76c7d3c7-31f8-4430-8717-7c15514d1ce9" name="Default" comment="" />
644
++      <created>1510772775522</created>
645
++      <option name="number" value="Default" />
646
++      <option name="presentableId" value="Default" />
647
++      <updated>1510772775522</updated>
648
++    </task>
649
++    <servers />
650
++  </component>
651
++  <component name="ToolWindowManager">
652
++    <frame x="1680" y="-235" width="2560" height="1417" extended-state="6" />
653
++    <layout>
654
++      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
655
++      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
656
++      <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
657
++      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
658
++      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
659
++      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
660
++      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
661
++      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
662
++      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
663
++      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
664
++      <window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
665
++      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
666
++      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
667
++      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
668
++      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25178713" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
669
++      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
670
++      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
671
++      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
672
++      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
673
++      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
674
++      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
675
++      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
676
++      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
677
++      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
678
++      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
679
++      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
680
++      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
681
++      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
682
++    </layout>
683
++  </component>
684
++  <component name="VcsContentAnnotationSettings">
685
++    <option name="myLimit" value="2678400000" />
686
++  </component>
687
++  <component name="XDebuggerManager">
688
++    <breakpoint-manager />
689
++    <watches-manager />
690
++  </component>
691
++</project>
692
+\ No newline at end of file
693
+diff -uNr --no-dereference kubernetes-original/pkg/apis/core/types.go kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/core/types.go
694
+--- kubernetes-original/pkg/apis/core/types.go	2018-03-20 19:21:10.000000000 +0000
485 695
 @@ -316,6 +316,8 @@
486 696
  	// StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
487 697
  	// +optional
... ...
@@ -493,16 +688,16 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/types.go cascade-kubernetes/
493 493
  }
494 494
  
495 495
  // Similar to VolumeSource but meant for the administrator who creates PVs.
496
-@@ -391,6 +393,8 @@
497
- 	// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
496
+@@ -394,6 +396,8 @@
497
+ 	// CSI (Container Storage Interface) represents storage that handled by an external CSI driver
498 498
  	// +optional
499
- 	StorageOS *StorageOSPersistentVolumeSource
499
+ 	CSI *CSIPersistentVolumeSource
500 500
 +	// CascadeDisk represents a Cascade persistent disk attached and mounted on kubelets host machine
501 501
 +	CascadeDisk *CascadeDiskVolumeSource
502 502
  }
503 503
  
504 504
  type PersistentVolumeClaimVolumeSource struct {
505
-@@ -1333,6 +1337,16 @@
505
+@@ -1471,6 +1475,16 @@
506 506
  	SecretRef *ObjectReference
507 507
  }
508 508
  
... ...
@@ -519,10 +714,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/types.go cascade-kubernetes/
519 519
  // Adapts a ConfigMap into a volume.
520 520
  //
521 521
  // The contents of the target ConfigMap's Data field will be presented in a
522
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/validation/validation.go cascade-kubernetes/pkg/api/validation/validation.go
523
-+++ cascade-kubernetes/pkg/api/validation/validation.go	2018-01-31 02:12:47.000000000 +0000
524
-@@ -612,6 +612,14 @@
522
+diff -uNr --no-dereference kubernetes-original/pkg/apis/core/validation/validation.go kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/core/validation/validation.go
523
+--- kubernetes-original/pkg/apis/core/validation/validation.go	2018-03-20 19:21:10.000000000 +0000
524
+@@ -681,6 +681,14 @@
525 525
  			allErrs = append(allErrs, validateScaleIOVolumeSource(source.ScaleIO, fldPath.Child("scaleIO"))...)
526 526
  		}
527 527
  	}
... ...
@@ -537,11 +732,11 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/validation/validation.go cas
537 537
  
538 538
  	if numVolumes == 0 {
539 539
  		allErrs = append(allErrs, field.Required(fldPath, "must specify a volume type"))
540
-@@ -1283,6 +1291,14 @@
540
+@@ -1440,6 +1448,14 @@
541 541
  	return allErrs
542 542
  }
543 543
  
544
-+func validateCascadeDiskVolumeSource(cd *api.CascadeDiskVolumeSource, fldPath *field.Path) field.ErrorList {
544
++func validateCascadeDiskVolumeSource(cd *core.CascadeDiskVolumeSource, fldPath *field.Path) field.ErrorList {
545 545
 +	allErrs := field.ErrorList{}
546 546
 +	if len(cd.DiskID) == 0 {
547 547
 +		allErrs = append(allErrs, field.Required(fldPath.Child("diskID"), ""))
... ...
@@ -552,10 +747,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/validation/validation.go cas
552 552
  // ValidatePersistentVolumeName checks that a name is appropriate for a
553 553
  // PersistentVolumeName object.
554 554
  var ValidatePersistentVolumeName = NameIsDNSSubdomain
555
-@@ -1504,6 +1520,14 @@
556
- 			allErrs = append(allErrs, validateStorageOSPersistentVolumeSource(pv.Spec.StorageOS, specPath.Child("storageos"))...)
555
+@@ -1674,6 +1690,15 @@
557 556
  		}
558 557
  	}
558
+ 
559 559
 +	if pv.Spec.CascadeDisk != nil {
560 560
 +		if numVolumes > 0 {
561 561
 +			allErrs = append(allErrs, field.Forbidden(specPath.Child("cascadeDisk"), "may not specify more than 1 volume type"))
... ...
@@ -564,24 +759,25 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/api/validation/validation.go cas
564 564
 +			allErrs = append(allErrs, validateCascadeDiskVolumeSource(pv.Spec.CascadeDisk, specPath.Child("cascadeDisk"))...)
565 565
 +		}
566 566
 +	}
567
- 
567
++
568 568
  	if numVolumes == 0 {
569 569
  		allErrs = append(allErrs, field.Required(specPath, "must specify a volume type"))
570
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/apis/extensions/types.go cascade-kubernetes/pkg/apis/extensions/types.go
571
-+++ cascade-kubernetes/pkg/apis/extensions/types.go	2018-01-31 02:12:47.000000000 +0000
572
-@@ -1002,6 +1002,7 @@
573
- 	Projected             FSType = "projected"
570
+ 	}
571
+diff -uNr --no-dereference kubernetes-original/pkg/apis/extensions/types.go kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/extensions/types.go
572
+--- kubernetes-original/pkg/apis/extensions/types.go	2018-03-20 19:21:10.000000000 +0000
573
+@@ -925,6 +925,7 @@
574 574
  	PortworxVolume        FSType = "portworxVolume"
575 575
  	ScaleIO               FSType = "scaleIO"
576
+ 	CSI                   FSType = "csi"
576 577
 +	CascadeDisk           FSType = "cascadeDisk"
577 578
  	All                   FSType = "*"
578 579
  )
579 580
  
580
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/BUILD cascade-kubernetes/pkg/cloudprovider/providers/BUILD
581
-+++ cascade-kubernetes/pkg/cloudprovider/providers/BUILD	2018-01-31 02:12:47.000000000 +0000
582
-@@ -11,6 +11,7 @@
581
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/BUILD kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/BUILD
582
+--- kubernetes-original/pkg/cloudprovider/providers/BUILD	2018-03-20 19:21:10.000000000 +0000
583
+@@ -12,6 +12,7 @@
583 584
      deps = [
584 585
          "//pkg/cloudprovider/providers/aws:go_default_library",
585 586
          "//pkg/cloudprovider/providers/azure:go_default_library",
... ...
@@ -597,17 +793,19 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/BUILD ca
597 597
          "//pkg/cloudprovider/providers/cloudstack:all-srcs",
598 598
          "//pkg/cloudprovider/providers/fake:all-srcs",
599 599
          "//pkg/cloudprovider/providers/gce:all-srcs",
600
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/apitypes.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/apitypes.go
601
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/apitypes.go	2018-01-31 02:12:47.000000000 +0000
602
-@@ -0,0 +1,224 @@
600
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/apitypes.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/apitypes.go
601
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/apitypes.go	1970-01-01 00:00:00.000000000 +0000
602
+@@ -0,0 +1,227 @@
603 603
 +package cascade
604 604
 +
605 605
 +import "fmt"
606 606
 +
607 607
 +const (
608 608
 +	NotFoundError     = 1408
609
++	VMNotFoundError   = 2006
609 610
 +	DiskNotFoundError = 3011
611
++	DiskInUseError    = 3012
610 612
 +)
611 613
 +
612 614
 +// Represents APIError returned by the API in case of an error.
... ...
@@ -763,7 +961,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
763 763
 +	SelfLink    string           `json:"selfLink,omitempty"`
764 764
 +	State       *string          `json:"state"`
765 765
 +	Tags        []string         `json:"tags"`
766
-+	VM          string            `json:"vm"`
766
++	VM          string           `json:"vm"`
767 767
 +	MountDevice string           `json:"mountDevice,omitempty"`
768 768
 +	Zone        *string          `json:"zone"`
769 769
 +}
... ...
@@ -796,6 +994,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
796 796
 +	Name        *string                  `json:"name"`
797 797
 +	PortMaps    []*LoadBalancerPortMap   `json:"portMaps"`
798 798
 +	Type        *string                  `json:"type"`
799
++	SubDomain   *string                  `json:"subDomain"`
799 800
 +}
800 801
 +
801 802
 +// Represents the health check spec for a load balancer.
... ...
@@ -825,10 +1024,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
825 825
 +type LoadBalancerVMUpdate struct {
826 826
 +	VMIds []*LoadBalancerVM `json:"vmIds"`
827 827
 +}
828
-\ No newline at end of file
829
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/auth.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/auth.go
830
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/auth.go	2018-01-31 02:12:47.000000000 +0000
828
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/auth.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/auth.go
829
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/auth.go	1970-01-01 00:00:00.000000000 +0000
831 830
 @@ -0,0 +1,145 @@
832 831
 +package cascade
833 832
 +
... ...
@@ -928,7 +1126,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
928 928
 +
929 929
 +func buildOIDCClient(authEndpoint string) (*OIDCClient, error) {
930 930
 +	options := &OIDCClientOptions{
931
-+		IgnoreCertificate: true,
931
++		IgnoreCertificate: false,
932 932
 +		RootCAs:           nil,
933 933
 +		TokenScope:        tScope,
934 934
 +	}
... ...
@@ -976,9 +1174,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
976 976
 +	return pwd, nil
977 977
 +}
978 978
 \ No newline at end of file
979
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/BUILD cascade-kubernetes/pkg/cloudprovider/providers/cascade/BUILD
980
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/BUILD	2018-01-31 02:12:47.000000000 +0000
979
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/BUILD kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/BUILD
980
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/BUILD	1970-01-01 00:00:00.000000000 +0000
981 981
 @@ -0,0 +1,44 @@
982 982
 +package(default_visibility = ["//visibility:public"])
983 983
 +
... ...
@@ -1024,45 +1222,56 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1024 1024
 +    srcs = [":package-srcs"],
1025 1025
 +    tags = ["automanaged"],
1026 1026
 +)
1027
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/cascade_disks.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_disks.go
1028
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_disks.go	2018-01-31 02:12:47.000000000 +0000
1029
-@@ -0,0 +1,197 @@
1027
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_disks.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/cascade_disks.go
1028
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_disks.go	1970-01-01 00:00:00.000000000 +0000
1029
+@@ -0,0 +1,225 @@
1030 1030
 +package cascade
1031 1031
 +
1032 1032
 +import (
1033 1033
 +	"github.com/golang/glog"
1034 1034
 +	k8stypes "k8s.io/apimachinery/pkg/types"
1035
-+	"k8s.io/kubernetes/pkg/volume"
1036 1035
 +	"k8s.io/apimachinery/pkg/util/sets"
1037 1036
 +	"k8s.io/kubernetes/pkg/kubelet/apis"
1037
++	"k8s.io/kubernetes/pkg/volume"
1038 1038
 +)
1039 1039
 +
1040 1040
 +// Attaches given virtual disk volume to the node running kubelet.
1041 1041
 +func (cc *CascadeCloud) AttachDisk(diskID string, nodeName k8stypes.NodeName) (string, error) {
1042
-+	operation := &VMDiskOperation{
1043
-+		DiskID: StringPtr(diskID),
1044
-+	}
1045
-+
1046
-+	vmID, err := cc.InstanceID(nodeName)
1042
++	// Check if disk is already attached to that node.
1043
++	attached, err := cc.DiskIsAttached(diskID, nodeName)
1047 1044
 +	if err != nil {
1048
-+		glog.Errorf("Cascade Cloud Provider: cc.InstanceID failed for AttachDisk. Error[%v]", err)
1045
++		glog.Errorf("Cascade Cloud Provider: cc.DiskIsAttached failed during AttachDisk. Error[%v]", err)
1049 1046
 +		return "", err
1050 1047
 +	}
1051 1048
 +
1052
-+	task, err := cc.apiClient.AttachDisk(vmID, operation)
1053
-+	if err != nil {
1054
-+		glog.Errorf("Cascade Cloud Provider: Failed to attach disk with ID %s. Error[%v]", diskID, err)
1055
-+		return "", err
1056
-+	}
1049
++	// If not already attached, attach the disk.
1050
++	if !attached {
1051
++		operation := &VMDiskOperation{
1052
++			DiskID: StringPtr(diskID),
1053
++		}
1057 1054
 +
1058
-+	_, err = cc.apiClient.WaitForTask(StringVal(task.ID))
1059
-+	if err != nil {
1060
-+		glog.Errorf("Cascade Cloud Provider: Failed to wait for task to attach disk with ID %s. Error[%v]",
1061
-+			diskID, err)
1062
-+		return "", err
1055
++		vmID, err := cc.InstanceID(nodeName)
1056
++		if err != nil {
1057
++			glog.Errorf("Cascade Cloud Provider: cc.InstanceID failed for AttachDisk. Error[%v]", err)
1058
++			return "", err
1059
++		}
1060
++
1061
++		task, err := cc.apiClient.AttachDisk(vmID, operation)
1062
++		if err != nil {
1063
++			glog.Errorf("Cascade Cloud Provider: Failed to attach disk with ID %s. Error[%v]", diskID, err)
1064
++			return "", err
1065
++		}
1066
++
1067
++		_, err = cc.apiClient.WaitForTask(StringVal(task.ID))
1068
++		if err != nil {
1069
++			glog.Errorf("Cascade Cloud Provider: Failed to wait for task to attach disk with ID %s. Error[%v]",
1070
++				diskID, err)
1071
++			return "", err
1072
++		}
1063 1073
 +	}
1064 1074
 +
1075
++	// Get mount device of the attached disk.
1065 1076
 +	disk, err := cc.apiClient.GetDisk(diskID)
1066 1077
 +	if err != nil {
1067 1078
 +		glog.Errorf("Cascade Cloud Provider: Failed to Get disk with diskID %s. Error[%v]", diskID, err)
... ...
@@ -1102,15 +1311,29 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1102 1102
 +
1103 1103
 +// DiskIsAttached returns if disk is attached to the VM using controllers supported by the plugin.
1104 1104
 +func (cc *CascadeCloud) DiskIsAttached(diskID string, nodeName k8stypes.NodeName) (bool, error) {
1105
-+	disk, err := cc.apiClient.GetDisk(diskID)
1105
++	vmID, err := cc.InstanceID(nodeName)
1106 1106
 +	if err != nil {
1107
-+		glog.Errorf("Cascade Cloud Provider: Failed to Get disk with diskID %s. Error[%v]", diskID, err)
1107
++		glog.Errorf("Cascade Cloud Provider: cc.InstanceID failed for DiskIsAttached. Error[%v]", err)
1108 1108
 +		return false, err
1109 1109
 +	}
1110 1110
 +
1111
-+	vmID, err := cc.InstanceID(nodeName)
1111
++	_, err = cc.apiClient.GetVM(vmID)
1112 1112
 +	if err != nil {
1113
-+		glog.Errorf("Cascade Cloud Provider: cc.InstanceID failed for DiskIsAttached. Error[%v]", err)
1113
++		switch err.(type) {
1114
++		case APIError:
1115
++			if err.(APIError).ErrorCode == VMNotFoundError {
1116
++				// If instance no longer exists, we will assume that the volume is not attached.
1117
++				glog.Warningf("Cascade Cloud Provider: Instance %s does not exist. DiskIsAttached will assume"+
1118
++					" disk %s is not attached to it.", nodeName, diskID)
1119
++				return false, nil
1120
++			}
1121
++		}
1122
++		return false, err
1123
++	}
1124
++
1125
++	disk, err := cc.apiClient.GetDisk(diskID)
1126
++	if err != nil {
1127
++		glog.Errorf("Cascade Cloud Provider: Failed to Get disk with diskID %s. Error[%v]", diskID, err)
1114 1128
 +		return false, err
1115 1129
 +	}
1116 1130
 +
... ...
@@ -1198,6 +1421,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1198 1198
 +			if err.(APIError).ErrorCode == DiskNotFoundError {
1199 1199
 +				return nil
1200 1200
 +			}
1201
++			if err.(APIError).ErrorCode == DiskInUseError {
1202
++				return volume.NewDeletedVolumeInUseError(err.Error())
1203
++			}
1201 1204
 +		}
1202 1205
 +		return err
1203 1206
 +	}
... ...
@@ -1223,12 +1449,11 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1223 1223
 +	labels[apis.LabelZoneFailureDomain] = StringVal(disk.Zone)
1224 1224
 +	labels[apis.LabelZoneRegion] = cc.cfg.Global.Region
1225 1225
 +
1226
-+	return labels,nil
1226
++	return labels, nil
1227 1227
 +}
1228
-\ No newline at end of file
1229
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/cascade.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade.go
1230
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade.go	2018-01-31 02:12:47.000000000 +0000
1228
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/cascade.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/cascade.go
1229
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/cascade.go	1970-01-01 00:00:00.000000000 +0000
1231 1230
 @@ -0,0 +1,216 @@
1232 1231
 +// The use of Cascade cloud provider requires the kubelet, kube-apiserver, and kube-controller-manager to be started
1233 1232
 +// with config flag: '--cloud-provider=cascade --cloud-config=[path_to_config_file]'.
... ...
@@ -1447,9 +1672,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1447 1447
 +	return true
1448 1448
 +}
1449 1449
 \ No newline at end of file
1450
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/cascade_instances.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_instances.go
1451
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_instances.go	2018-01-31 02:12:47.000000000 +0000
1450
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_instances.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/cascade_instances.go
1451
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_instances.go	1970-01-01 00:00:00.000000000 +0000
1452 1452
 @@ -0,0 +1,90 @@
1453 1453
 +package cascade
1454 1454
 +
... ...
@@ -1541,10 +1766,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1541 1541
 +func (cc *CascadeCloud) InstanceType(nodeName k8stypes.NodeName) (string, error) {
1542 1542
 +	return "", nil
1543 1543
 +}
1544
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
1545
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go	2018-01-31 02:12:47.000000000 +0000
1546
-@@ -0,0 +1,283 @@
1544
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
1545
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go	1970-01-01 00:00:00.000000000 +0000
1546
+@@ -0,0 +1,284 @@
1547 1547
 +package cascade
1548 1548
 +
1549 1549
 +import (
... ...
@@ -1624,6 +1849,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1624 1624
 +		Type:        StringPtr("PUBLIC"),
1625 1625
 +		PortMaps:    portMaps,
1626 1626
 +		HealthCheck: healthCheck,
1627
++		SubDomain:   StringPtr(k8sService.Name),
1627 1628
 +	}
1628 1629
 +	logger.Infof("Load balancer create spec: %+v", *createSpec)
1629 1630
 +
... ...
@@ -1829,22 +2055,22 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1829 1829
 +	glog.Infoln(l.getLogMsg(msgTemplate, args))
1830 1830
 +}
1831 1831
 \ No newline at end of file
1832
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/client.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/client.go
1833
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/client.go	2018-01-31 02:12:47.000000000 +0000
1834
-@@ -0,0 +1,382 @@
1832
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/client.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/client.go
1833
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/client.go	1970-01-01 00:00:00.000000000 +0000
1834
+@@ -0,0 +1,394 @@
1835 1835
 +package cascade
1836 1836
 +
1837 1837
 +import (
1838
++	"bytes"
1838 1839
 +	"crypto/tls"
1839 1840
 +	"crypto/x509"
1840 1841
 +	"encoding/json"
1841 1842
 +	"fmt"
1843
++	"github.com/golang/glog"
1842 1844
 +	"net/http"
1843 1845
 +	"strings"
1844 1846
 +	"time"
1845
-+	"bytes"
1846
-+	"github.com/golang/glog"
1847 1847
 +)
1848 1848
 +
1849 1849
 +// Represents stateless context needed to call Cascade APIs.
... ...
@@ -1891,10 +2117,6 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1891 1891
 +	// nil by default.
1892 1892
 +	RootCAs *x509.CertPool
1893 1893
 +
1894
-+	// For tasks APIs, defines the delay between each polling attempt.
1895
-+	// Default is 100 milliseconds.
1896
-+	TaskPollDelay time.Duration
1897
-+
1898 1894
 +	// For tasks APIs, defines the number of retries to make in the event
1899 1895
 +	// of an error. Default is 3.
1900 1896
 +	TaskRetryCount int
... ...
@@ -1903,6 +2125,8 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1903 1903
 +	TokenOptions *TokenOptions
1904 1904
 +}
1905 1905
 +
1906
++const minimumTaskPollDelay = 500 * time.Millisecond
1907
++
1906 1908
 +// Creates a new Cascade client which can be used to make API calls to Cascade.
1907 1909
 +func NewClient(cfg *CascadeConfig, authClient *AuthClient) (c *Client, err error) {
1908 1910
 +	tokenOptions, err := authClient.GetTokensByMachineAccount()
... ...
@@ -1913,7 +2137,6 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1913 1913
 +
1914 1914
 +	options := &ClientOptions{
1915 1915
 +		TaskPollTimeout:   30 * time.Minute,
1916
-+		TaskPollDelay:     100 * time.Millisecond,
1917 1916
 +		TaskRetryCount:    3,
1918 1917
 +		TokenOptions:      tokenOptions,
1919 1918
 +		IgnoreCertificate: false,
... ...
@@ -1936,7 +2159,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1936 1936
 +		UpdateAccessTokenCallback: tokenCallback,
1937 1937
 +	}
1938 1938
 +
1939
-+	clientConfig := &ClientConfig {
1939
++	clientConfig := &ClientConfig{
1940 1940
 +		tenantName: cfg.Global.TenantName,
1941 1941
 +		clusterID:  cfg.Global.ClusterID,
1942 1942
 +		region:     cfg.Global.Region,
... ...
@@ -1948,7 +2171,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
1948 1948
 +		restClient: restClient,
1949 1949
 +		// Ensure a copy of options is made, rather than using a pointer
1950 1950
 +		// which may change out from underneath if misused by the caller.
1951
-+		options:    *options,
1951
++		options: *options,
1952 1952
 +	}
1953 1953
 +
1954 1954
 +	return
... ...
@@ -2072,6 +2295,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2072 2072
 +	start := time.Now()
2073 2073
 +	numErrors := 0
2074 2074
 +	maxErrors := api.options.TaskRetryCount
2075
++	backoffMultiplier := 1
2075 2076
 +
2076 2077
 +	for time.Since(start) < api.options.TaskPollTimeout {
2077 2078
 +		task, err = api.GetTask(taskID)
... ...
@@ -2098,7 +2322,21 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2098 2098
 +				return
2099 2099
 +			}
2100 2100
 +		}
2101
-+		time.Sleep(api.options.TaskPollDelay)
2101
++
2102
++		// Perform backoff based on how long it has been since we started polling. The logic is as follows:
2103
++		// For the first 10 seconds, poll every 500 milliseconds.
2104
++		// From there till the first 1 minute, poll every 1 second.
2105
++		// From there till the first 10 minutes, poll every 5 seconds.
2106
++		// From there till the timeout (30 minutes), poll every 10 seconds.
2107
++		elapsedTime := time.Since(start)
2108
++		if elapsedTime > 10*time.Second && elapsedTime <= 60*time.Second {
2109
++			backoffMultiplier = 2
2110
++		} else if elapsedTime > 60*time.Second && elapsedTime <= 600*time.Second {
2111
++			backoffMultiplier = 10
2112
++		} else if elapsedTime > 600*time.Second && elapsedTime <= api.options.TaskPollTimeout {
2113
++			backoffMultiplier = 20
2114
++		}
2115
++		time.Sleep(time.Duration(backoffMultiplier) * minimumTaskPollDelay)
2102 2116
 +	}
2103 2117
 +	err = TaskTimeoutError{taskID}
2104 2118
 +	return
... ...
@@ -2215,10 +2453,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2215 2215
 +
2216 2216
 +	return errorStep
2217 2217
 +}
2218
-\ No newline at end of file
2219
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/oidcclient.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/oidcclient.go
2220
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/oidcclient.go	2018-01-31 02:12:47.000000000 +0000
2218
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/oidcclient.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/oidcclient.go
2219
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/oidcclient.go	1970-01-01 00:00:00.000000000 +0000
2221 2220
 @@ -0,0 +1,297 @@
2222 2221
 +package cascade
2223 2222
 +
... ...
@@ -2324,7 +2561,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2324 2324
 +
2325 2325
 +	tr := &http.Transport{
2326 2326
 +		TLSClientConfig: &tls.Config{
2327
-+			InsecureSkipVerify: true,
2327
++			InsecureSkipVerify: false,
2328 2328
 +		},
2329 2329
 +	}
2330 2330
 +	client.setTransport(tr)
... ...
@@ -2517,16 +2754,16 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2517 2517
 +
2518 2518
 +	return oidcErr
2519 2519
 +}
2520
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/OWNERS cascade-kubernetes/pkg/cloudprovider/providers/cascade/OWNERS
2521
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/OWNERS	2018-01-31 02:12:47.000000000 +0000
2520
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/OWNERS kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/OWNERS
2521
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/OWNERS	1970-01-01 00:00:00.000000000 +0000
2522 2522
 @@ -0,0 +1,3 @@
2523 2523
 +maintainers:
2524 2524
 +- ashokc
2525 2525
 +- ysheng
2526
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/restclient.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/restclient.go
2527
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/restclient.go	2018-01-31 02:12:47.000000000 +0000
2526
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/restclient.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/restclient.go
2527
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/restclient.go	1970-01-01 00:00:00.000000000 +0000
2528 2528
 @@ -0,0 +1,262 @@
2529 2529
 +package cascade
2530 2530
 +
... ...
@@ -2790,9 +3027,18 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2790 2790
 +	apiError.HttpStatusCode = res.StatusCode
2791 2791
 +	return nil, apiError
2792 2792
 +}
2793
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/utils.go cascade-kubernetes/pkg/cloudprovider/providers/cascade/utils.go
2794
-+++ cascade-kubernetes/pkg/cloudprovider/providers/cascade/utils.go	2018-01-31 02:12:47.000000000 +0000
2793
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/tests_owed kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/tests_owed
2794
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/tests_owed	1970-01-01 00:00:00.000000000 +0000
2795
+@@ -0,0 +1,5 @@
2796
++
2797
++Yu Sheng
2798
++Change-Id: Ifc11818f65a3e018aeea6988d9e2c0719b592920
2799
++
2800
++
2801
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/cascade/utils.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/utils.go
2802
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/utils.go	1970-01-01 00:00:00.000000000 +0000
2795 2803
 @@ -0,0 +1,25 @@
2796 2804
 +package cascade
2797 2805
 +
... ...
@@ -2820,9 +3066,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/cascade/
2820 2820
 +	return &s
2821 2821
 +}
2822 2822
 \ No newline at end of file
2823
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/providers.go cascade-kubernetes/pkg/cloudprovider/providers/providers.go
2824
-+++ cascade-kubernetes/pkg/cloudprovider/providers/providers.go	2018-01-31 02:12:47.000000000 +0000
2823
+diff -uNr --no-dereference kubernetes-original/pkg/cloudprovider/providers/providers.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/providers.go
2824
+--- kubernetes-original/pkg/cloudprovider/providers/providers.go	2018-03-20 19:21:10.000000000 +0000
2825 2825
 @@ -20,6 +20,7 @@
2826 2826
  	// Cloud providers
2827 2827
  	_ "k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
... ...
@@ -2831,10 +3077,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/cloudprovider/providers/provider
2831 2831
  	_ "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack"
2832 2832
  	_ "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
2833 2833
  	_ "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack"
2834
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/printers/internalversion/describe.go cascade-kubernetes/pkg/printers/internalversion/describe.go
2835
-+++ cascade-kubernetes/pkg/printers/internalversion/describe.go	2018-01-31 02:12:47.000000000 +0000
2836
-@@ -764,6 +764,8 @@
2834
+diff -uNr --no-dereference kubernetes-original/pkg/printers/internalversion/describe.go kubernetes-modified/src/k8s.io/kubernetes/pkg/printers/internalversion/describe.go
2835
+--- kubernetes-original/pkg/printers/internalversion/describe.go	2018-03-20 19:21:10.000000000 +0000
2836
+@@ -751,6 +751,8 @@
2837 2837
  			printFlexVolumeSource(volume.VolumeSource.FlexVolume, w)
2838 2838
  		case volume.VolumeSource.Flocker != nil:
2839 2839
  			printFlockerVolumeSource(volume.VolumeSource.Flocker, w)
... ...
@@ -2843,8 +3089,8 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/printers/internalversion/describ
2843 2843
  		default:
2844 2844
  			w.Write(LEVEL_1, "<unknown>\n")
2845 2845
  		}
2846
-@@ -1047,6 +1049,13 @@
2847
- 		flocker.DatasetName, flocker.DatasetUUID)
2846
+@@ -1101,6 +1103,13 @@
2847
+ 		csi.Driver, csi.VolumeHandle, csi.ReadOnly)
2848 2848
  }
2849 2849
  
2850 2850
 +func printCascadeDiskVolumeSource(cascade *api.CascadeDiskVolumeSource, w PrefixWriter) {
... ...
@@ -2857,27 +3103,27 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/printers/internalversion/describ
2857 2857
  type PersistentVolumeDescriber struct {
2858 2858
  	clientset.Interface
2859 2859
  }
2860
-@@ -1130,6 +1139,8 @@
2861
- 			printFlexVolumeSource(pv.Spec.FlexVolume, w)
2862
- 		case pv.Spec.Flocker != nil:
2860
+@@ -1189,6 +1198,8 @@
2863 2861
  			printFlockerVolumeSource(pv.Spec.Flocker, w)
2862
+ 		case pv.Spec.CSI != nil:
2863
+ 			printCSIPersistentVolumeSource(pv.Spec.CSI, w)
2864 2864
 +		case pv.Spec.CascadeDisk != nil:
2865 2865
 +			printCascadeDiskVolumeSource(pv.Spec.CascadeDisk, w)
2866 2866
  		default:
2867 2867
  			w.Write(LEVEL_1, "<unknown>\n")
2868 2868
  		}
2869
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/security/podsecuritypolicy/util/util.go cascade-kubernetes/pkg/security/podsecuritypolicy/util/util.go
2870
-+++ cascade-kubernetes/pkg/security/podsecuritypolicy/util/util.go	2018-01-31 02:12:47.000000000 +0000
2871
-@@ -67,6 +67,7 @@
2872
- 		string(extensions.Projected),
2869
+diff -uNr --no-dereference kubernetes-original/pkg/security/podsecuritypolicy/util/util.go kubernetes-modified/src/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/util.go
2870
+--- kubernetes-original/pkg/security/podsecuritypolicy/util/util.go	2018-03-20 19:21:10.000000000 +0000
2871
+@@ -68,6 +68,7 @@
2873 2872
  		string(extensions.PortworxVolume),
2874 2873
  		string(extensions.ScaleIO),
2874
+ 		string(extensions.CSI),
2875 2875
 +		string(extensions.CascadeDisk),
2876 2876
  	)
2877 2877
  	return fstypes
2878 2878
  }
2879
-@@ -128,6 +129,8 @@
2879
+@@ -129,6 +130,8 @@
2880 2880
  		return extensions.PortworxVolume, nil
2881 2881
  	case v.ScaleIO != nil:
2882 2882
  		return extensions.ScaleIO, nil
... ...
@@ -2886,10 +3132,10 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/security/podsecuritypolicy/util/
2886 2886
  	}
2887 2887
  
2888 2888
  	return "", fmt.Errorf("unknown volume type for volume: %#v", v)
2889
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go cascade-kubernetes/pkg/volume/cascade_disk/attacher.go
2890
-+++ cascade-kubernetes/pkg/volume/cascade_disk/attacher.go	2018-01-31 02:12:47.000000000 +0000
2891
-@@ -0,0 +1,278 @@
2889
+diff -uNr --no-dereference kubernetes-original/pkg/volume/cascade_disk/attacher.go kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/cascade_disk/attacher.go
2890
+--- kubernetes-original/pkg/volume/cascade_disk/attacher.go	1970-01-01 00:00:00.000000000 +0000
2891
+@@ -0,0 +1,269 @@
2892 2892
 +package cascade_disk
2893 2893
 +
2894 2894
 +import (
... ...
@@ -2925,7 +3171,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
2925 2925
 +	}
2926 2926
 +
2927 2927
 +	return &cascadeDiskAttacher{
2928
-+		host:        plugin.host,
2928
++		host:         plugin.host,
2929 2929
 +		cascadeDisks: cascadeCloud,
2930 2930
 +	}, nil
2931 2931
 +}
... ...
@@ -2940,22 +3186,13 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
2940 2940
 +		return "", err
2941 2941
 +	}
2942 2942
 +
2943
-+	attached, err := attacher.cascadeDisks.DiskIsAttached(volumeSource.DiskID, nodeName)
2943
++	// cascadeDisks.AttachDisk checks if disk is already attached to the node. So we don't have to do that separately
2944
++	// here.
2945
++	glog.V(4).Infof("Cascade: Attach disk called for host %s", hostName)
2946
++	devicePath, err := attacher.cascadeDisks.AttachDisk(volumeSource.DiskID, nodeName)
2944 2947
 +	if err != nil {
2945
-+		glog.Warningf("Cascade: couldn't check if disk is Attached for host %s, will try attach disk: %+v",
2946
-+			hostName, err)
2947
-+		attached = false
2948
-+	}
2949
-+
2950
-+	var devicePath string
2951
-+	if !attached {
2952
-+		glog.V(4).Infof("Cascade: Attach disk called for host %s", hostName)
2953
-+
2954
-+		devicePath, err = attacher.cascadeDisks.AttachDisk(volumeSource.DiskID, nodeName)
2955
-+		if err != nil {
2956
-+			glog.Errorf("Error attaching volume %q to node %q: %+v", volumeSource.DiskID, nodeName, err)
2957
-+			return "", err
2958
-+		}
2948
++		glog.Errorf("Error attaching volume %q to node %q: %+v", volumeSource.DiskID, nodeName, err)
2949
++		return "", err
2959 2950
 +	}
2960 2951
 +
2961 2952
 +	// Cacsade uses device names of the format /dev/sdX, but newer Linux Kernels mount them under /dev/xvdX
... ...
@@ -3026,7 +3263,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
3026 3026
 +			checkPath, err := verifyDevicePath(devicePath)
3027 3027
 +			if err != nil {
3028 3028
 +				// Log error, if any, and continue checking periodically. See issue #11321
3029
-+				glog.Warningf("Cascade attacher: WaitForAttach with devicePath %s Checking PD %s Error verify " +
3029
++				glog.Warningf("Cascade attacher: WaitForAttach with devicePath %s Checking PD %s Error verify "+
3030 3030
 +					"path", devicePath, volumeSource.DiskID)
3031 3031
 +			} else if checkPath != "" {
3032 3032
 +				// A device path has successfully been created for the disk
... ...
@@ -3034,7 +3271,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
3034 3034
 +				return devicePath, nil
3035 3035
 +			}
3036 3036
 +		case <-timer.C:
3037
-+			return "", fmt.Errorf("Could not find attached disk %s. Timeout waiting for mount paths to be " +
3037
++			return "", fmt.Errorf("Could not find attached disk %s. Timeout waiting for mount paths to be "+
3038 3038
 +				"created.", volumeSource.DiskID)
3039 3039
 +		}
3040 3040
 +	}
... ...
@@ -3111,7 +3348,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
3111 3111
 +	}
3112 3112
 +
3113 3113
 +	return &cascadeDiskDetacher{
3114
-+		mounter:     plugin.host.GetMounter(plugin.GetPluginName()),
3114
++		mounter:      plugin.host.GetMounter(plugin.GetPluginName()),
3115 3115
 +		cascadeDisks: cascadeCloud,
3116 3116
 +	}, nil
3117 3117
 +}
... ...
@@ -3124,13 +3361,13 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
3124 3124
 +	if err != nil {
3125 3125
 +		// Log error and continue with detach
3126 3126
 +		glog.Errorf(
3127
-+			"Error checking if persistent disk (%q) is already attached to current node (%q). " +
3127
++			"Error checking if persistent disk (%q) is already attached to current node (%q). "+
3128 3128
 +				"Will continue and try detach anyway. err=%v", diskID, hostName, err)
3129 3129
 +	}
3130 3130
 +
3131 3131
 +	if err == nil && !attached {
3132 3132
 +		// Volume is already detached from node.
3133
-+		glog.V(4).Infof("detach operation was successful. persistent disk %q is already detached " +
3133
++		glog.V(4).Infof("detach operation was successful. persistent disk %q is already detached "+
3134 3134
 +			"from node %q.", diskID, hostName)
3135 3135
 +		return nil
3136 3136
 +	}
... ...
@@ -3168,9 +3405,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/attacher.go
3168 3168
 +func (detacher *cascadeDiskDetacher) UnmountDevice(deviceMountPath string) error {
3169 3169
 +	return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
3170 3170
 +}
3171
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/BUILD cascade-kubernetes/pkg/volume/cascade_disk/BUILD
3172
-+++ cascade-kubernetes/pkg/volume/cascade_disk/BUILD	2018-01-31 02:12:47.000000000 +0000
3171
+diff -uNr --no-dereference kubernetes-original/pkg/volume/cascade_disk/BUILD kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/cascade_disk/BUILD
3172
+--- kubernetes-original/pkg/volume/cascade_disk/BUILD	1970-01-01 00:00:00.000000000 +0000
3173 3173
 @@ -0,0 +1,43 @@
3174 3174
 +package(default_visibility = ["//visibility:public"])
3175 3175
 +
... ...
@@ -3215,9 +3452,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/BUILD cascad
3215 3215
 +    srcs = [":package-srcs"],
3216 3216
 +    tags = ["automanaged"],
3217 3217
 +)
3218
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/cascade_disk.go cascade-kubernetes/pkg/volume/cascade_disk/cascade_disk.go
3219
-+++ cascade-kubernetes/pkg/volume/cascade_disk/cascade_disk.go	2018-01-31 02:12:47.000000000 +0000
3218
+diff -uNr --no-dereference kubernetes-original/pkg/volume/cascade_disk/cascade_disk.go kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/cascade_disk/cascade_disk.go
3219
+--- kubernetes-original/pkg/volume/cascade_disk/cascade_disk.go	1970-01-01 00:00:00.000000000 +0000
3220 3220
 @@ -0,0 +1,391 @@
3221 3221
 +package cascade_disk
3222 3222
 +
... ...
@@ -3611,9 +3848,9 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/cascade_disk
3611 3611
 +	return nil, false, fmt.Errorf("Spec does not reference a Cascade disk type")
3612 3612
 +}
3613 3613
 \ No newline at end of file
3614
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/cascade_util.go cascade-kubernetes/pkg/volume/cascade_disk/cascade_util.go
3615
-+++ cascade-kubernetes/pkg/volume/cascade_disk/cascade_util.go	2018-01-31 02:12:47.000000000 +0000
3614
+diff -uNr --no-dereference kubernetes-original/pkg/volume/cascade_disk/cascade_util.go kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/cascade_disk/cascade_util.go
3615
+--- kubernetes-original/pkg/volume/cascade_disk/cascade_util.go	1970-01-01 00:00:00.000000000 +0000
3616 3616
 @@ -0,0 +1,107 @@
3617 3617
 +package cascade_disk
3618 3618
 +
... ...
@@ -3722,23 +3959,23 @@ diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/cascade_util
3722 3722
 +	}
3723 3723
 +	return cc, nil
3724 3724
 +}
3725
-diff -uNr --no-dereference kubernetes-1.8.1/pkg/volume/cascade_disk/OWNERS cascade-kubernetes/pkg/volume/cascade_disk/OWNERS
3726
-+++ cascade-kubernetes/pkg/volume/cascade_disk/OWNERS	2018-01-31 02:12:47.000000000 +0000
3725
+diff -uNr --no-dereference kubernetes-original/pkg/volume/cascade_disk/OWNERS kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/cascade_disk/OWNERS
3726
+--- kubernetes-original/pkg/volume/cascade_disk/OWNERS	1970-01-01 00:00:00.000000000 +0000
3727 3727
 @@ -0,0 +1,2 @@
3728 3728
 +maintainers:
3729 3729
 +- ashokc
3730
-diff -uNr --no-dereference kubernetes-1.8.1/plugin/pkg/admission/persistentvolume/label/admission.go cascade-kubernetes/plugin/pkg/admission/persistentvolume/label/admission.go
3731
-+++ cascade-kubernetes/plugin/pkg/admission/persistentvolume/label/admission.go	2018-01-31 02:12:47.000000000 +0000
3732
-@@ -31,6 +31,7 @@
3730
+diff -uNr --no-dereference kubernetes-original/plugin/pkg/admission/persistentvolume/label/admission.go kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label/admission.go
3731
+--- kubernetes-original/plugin/pkg/admission/persistentvolume/label/admission.go	2018-03-20 19:21:10.000000000 +0000
3732
+@@ -27,6 +27,7 @@
3733
+ 	api "k8s.io/kubernetes/pkg/apis/core"
3734
+ 	"k8s.io/kubernetes/pkg/cloudprovider"
3735
+ 	"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
3736
++	"k8s.io/kubernetes/pkg/cloudprovider/providers/cascade"
3737
+ 	"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
3733 3738
  	kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
3734 3739
  	kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
3735
- 	vol "k8s.io/kubernetes/pkg/volume"
3736
-+	"k8s.io/kubernetes/pkg/cloudprovider/providers/cascade"
3737
- )
3738
- 
3739
- // Register registers a plugin
3740 3740
 @@ -50,6 +51,7 @@
3741 3741
  	ebsVolumes       aws.Volumes
3742 3742
  	cloudConfig      []byte
... ...
@@ -3746,8 +3983,8 @@ diff -uNr --no-dereference kubernetes-1.8.1/plugin/pkg/admission/persistentvolum
3746 3746
 +	cascadeDisks     cascade.Disks
3747 3747
  }
3748 3748
  
3749
- var _ kubeapiserveradmission.WantsCloudConfig = &persistentVolumeLabel{}
3750
-@@ -101,6 +103,13 @@
3749
+ var _ admission.MutationInterface = &persistentVolumeLabel{}
3750
+@@ -102,6 +104,13 @@
3751 3751
  		}
3752 3752
  		volumeLabels = labels
3753 3753
  	}
... ...
@@ -3761,7 +3998,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/plugin/pkg/admission/persistentvolum
3761 3761
  
3762 3762
  	if len(volumeLabels) != 0 {
3763 3763
  		if volume.Labels == nil {
3764
-@@ -213,3 +222,48 @@
3764
+@@ -214,3 +223,48 @@
3765 3765
  	}
3766 3766
  	return l.gceCloudProvider, nil
3767 3767
  }
... ...
@@ -3810,40 +4047,53 @@ diff -uNr --no-dereference kubernetes-1.8.1/plugin/pkg/admission/persistentvolum
3810 3810
 +	}
3811 3811
 +	return l.cascadeDisks, nil
3812 3812
 +}
3813
-\ No newline at end of file
3814
-diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/generated.pb.go cascade-kubernetes/staging/src/k8s.io/api/core/v1/generated.pb.go
3815
-+++ cascade-kubernetes/staging/src/k8s.io/api/core/v1/generated.pb.go	2018-01-31 02:12:47.000000000 +0000
3816
-@@ -34,6 +34,7 @@
3817
- 		AzureFileVolumeSource
3813
+diff -uNr --no-dereference kubernetes-original/staging/src/k8s.io/api/core/v1/generated.pb.go kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/core/v1/generated.pb.go
3814
+--- kubernetes-original/staging/src/k8s.io/api/core/v1/generated.pb.go	2018-03-20 19:21:10.000000000 +0000
3815
+@@ -35,6 +35,7 @@
3818 3816
  		Binding
3817
+ 		CSIPersistentVolumeSource
3819 3818
  		Capabilities
3820 3819
 +		CascadeDiskVolumeSource
3821 3820
  		CephFSPersistentVolumeSource
3822 3821
  		CephFSVolumeSource
3823 3822
  		CinderVolumeSource
3824
-@@ -992,6 +993,12 @@
3825
- 	return fileDescriptorGenerated, []int{177}
3826
- }
3823
+@@ -260,9 +261,11 @@
3824
+ func (*AvoidPods) ProtoMessage()               {}
3825
+ func (*AvoidPods) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
3827 3826
  
3827
+-func (m *AzureDiskVolumeSource) Reset()                    { *m = AzureDiskVolumeSource{} }
3828
+-func (*AzureDiskVolumeSource) ProtoMessage()               {}
3829
+-func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
3828 3830
 +func (m *CascadeDiskVolumeSource) Reset()      { *m = CascadeDiskVolumeSource{} }
3829 3831
 +func (*CascadeDiskVolumeSource) ProtoMessage() {}
3830 3832
 +func (*CascadeDiskVolumeSource) Descriptor() ([]byte, []int) {
3831
-+	return fileDescriptorGenerated, []int{178}
3833
++	return fileDescriptorGenerated, []int{4}
3832 3834
 +}
3835
+ 
3836
+ func (m *AzureFilePersistentVolumeSource) Reset()      { *m = AzureFilePersistentVolumeSource{} }
3837
+ func (*AzureFilePersistentVolumeSource) ProtoMessage() {}
3838
+@@ -1040,6 +1043,11 @@
3839
+ 	return fileDescriptorGenerated, []int{185}
3840
+ }
3841
+ 
3842
++func (m *AzureDiskVolumeSource) Reset()                    { *m = AzureDiskVolumeSource{} }
3843
++func (*AzureDiskVolumeSource) ProtoMessage()               {}
3844
++func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{186} }
3845
++
3833 3846
 +
3834 3847
  func init() {
3835 3848
  	proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource")
3836 3849
  	proto.RegisterType((*Affinity)(nil), "k8s.io.api.core.v1.Affinity")
3837
-@@ -1002,6 +1009,7 @@
3838
- 	proto.RegisterType((*AzureFileVolumeSource)(nil), "k8s.io.api.core.v1.AzureFileVolumeSource")
3850
+@@ -1051,6 +1059,7 @@
3839 3851
  	proto.RegisterType((*Binding)(nil), "k8s.io.api.core.v1.Binding")
3852
+ 	proto.RegisterType((*CSIPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CSIPersistentVolumeSource")
3840 3853
  	proto.RegisterType((*Capabilities)(nil), "k8s.io.api.core.v1.Capabilities")
3841 3854
 +	proto.RegisterType((*CascadeDiskVolumeSource)(nil), "k8s.io.api.core.v1.CascadeDiskVolumeSource")
3842 3855
  	proto.RegisterType((*CephFSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CephFSPersistentVolumeSource")
3843 3856
  	proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource")
3844 3857
  	proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource")
3845
-@@ -1523,6 +1531,32 @@
3858
+@@ -1613,6 +1622,32 @@
3846 3859
  	return i, nil
3847 3860
  }
3848 3861
  
... ...
@@ -3876,45 +4126,79 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
3876 3876
  func (m *CephFSPersistentVolumeSource) Marshal() (dAtA []byte, err error) {
3877 3877
  	size := m.Size()
3878 3878
  	dAtA = make([]byte, size)
3879
-@@ -6080,6 +6114,18 @@
3879
+@@ -6283,13 +6318,13 @@
3880 3880
  		}
3881
- 		i += n121
3881
+ 		i += n120
3882 3882
  	}
3883
+-	if m.AzureDisk != nil {
3883 3884
 +	if m.CascadeDisk != nil {
3884
-+		dAtA[i] = 0xb2
3885
+ 		dAtA[i] = 0x82
3886
+ 		i++
3887
+ 		dAtA[i] = 0x1
3888
+ 		i++
3889
+-		i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size()))
3890
+-		n121, err := m.AzureDisk.MarshalTo(dAtA[i:])
3891
++		i = encodeVarintGenerated(dAtA, i, uint64(m.CascadeDisk.Size()))
3892
++		n121, err := m.CascadeDisk.MarshalTo(dAtA[i:])
3893
+ 		if err != nil {
3894
+ 			return 0, err
3895
+ 		}
3896
+@@ -6367,6 +6402,18 @@
3897
+ 		}
3898
+ 		i += n127
3899
+ 	}
3900
++	if m.AzureDisk != nil {
3901
++		dAtA[i] = 0xba
3885 3902
 +		i++
3886 3903
 +		dAtA[i] = 0x1
3887 3904
 +		i++
3888
-+		i = encodeVarintGenerated(dAtA, i, uint64(m.CascadeDisk.Size()))
3889
-+		n122, err := m.CascadeDisk.MarshalTo(dAtA[i:])
3905
++		i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size()))
3906
++		n128, err := m.AzureDisk.MarshalTo(dAtA[i:])
3890 3907
 +		if err != nil {
3891 3908
 +			return 0, err
3892 3909
 +		}
3893
-+		i += n122
3910
++		i += n128
3894 3911
 +	}
3895 3912
  	return i, nil
3896 3913
  }
3897 3914
  
3898
-@@ -9824,6 +9870,18 @@
3915
+@@ -10316,13 +10363,13 @@
3899 3916
  		}
3900
- 		i += n220
3917
+ 		i += n223
3901 3918
  	}
3919
+-	if m.AzureDisk != nil {
3902 3920
 +	if m.CascadeDisk != nil {
3921
+ 		dAtA[i] = 0xb2
3922
+ 		i++
3923
+ 		dAtA[i] = 0x1
3924
+ 		i++
3925
+-		i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size()))
3926
+-		n224, err := m.AzureDisk.MarshalTo(dAtA[i:])
3927
++		i = encodeVarintGenerated(dAtA, i, uint64(m.CascadeDisk.Size()))
3928
++		n224, err := m.CascadeDisk.MarshalTo(dAtA[i:])
3929
+ 		if err != nil {
3930
+ 			return 0, err
3931
+ 		}
3932
+@@ -10388,6 +10435,18 @@
3933
+ 		}
3934
+ 		i += n229
3935
+ 	}
3936
++	if m.AzureDisk != nil {
3903 3937
 +		dAtA[i] = 0xe2
3904 3938
 +		i++
3905 3939
 +		dAtA[i] = 0x1
3906 3940
 +		i++
3907
-+		i = encodeVarintGenerated(dAtA, i, uint64(m.CascadeDisk.Size()))
3908
-+		n221, err := m.CascadeDisk.MarshalTo(dAtA[i:])
3941
++		i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size()))
3942
++		n230, err := m.AzureDisk.MarshalTo(dAtA[i:])
3909 3943
 +		if err != nil {
3910 3944
 +			return 0, err
3911 3945
 +		}
3912
-+		i += n221
3946
++		i += n230
3913 3947
 +	}
3914 3948
  	return i, nil
3915 3949
  }
3916 3950
  
3917
-@@ -10048,6 +10106,16 @@
3951
+@@ -10623,6 +10682,16 @@
3918 3952
  	return n
3919 3953
  }
3920 3954
  
... ...
@@ -3931,29 +4215,51 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
3931 3931
  func (m *CephFSPersistentVolumeSource) Size() (n int) {
3932 3932
  	var l int
3933 3933
  	_ = l
3934
-@@ -11711,6 +11779,10 @@
3935
- 		l = m.StorageOS.Size()
3936
- 		n += 2 + l + sovGenerated(uint64(l))
3934
+@@ -12331,8 +12400,8 @@
3935
+ 		l = m.Quobyte.Size()
3936
+ 		n += 1 + l + sovGenerated(uint64(l))
3937 3937
  	}
3938
+-	if m.AzureDisk != nil {
3939
+-		l = m.AzureDisk.Size()
3938 3940
 +	if m.CascadeDisk != nil {
3939 3941
 +		l = m.CascadeDisk.Size()
3942
+ 		n += 2 + l + sovGenerated(uint64(l))
3943
+ 	}
3944
+ 	if m.PhotonPersistentDisk != nil {
3945
+@@ -12359,6 +12428,10 @@
3946
+ 		l = m.CSI.Size()
3947
+ 		n += 2 + l + sovGenerated(uint64(l))
3948
+ 	}
3949
++	if m.AzureDisk != nil {
3950
++		l = m.AzureDisk.Size()
3940 3951
 +		n += 2 + l + sovGenerated(uint64(l))
3941 3952
 +	}
3942 3953
  	return n
3943 3954
  }
3944 3955
  
3945
-@@ -13055,6 +13127,10 @@
3946
- 		l = m.StorageOS.Size()
3956
+@@ -13788,8 +13861,8 @@
3957
+ 		l = m.Quobyte.Size()
3947 3958
  		n += 2 + l + sovGenerated(uint64(l))
3948 3959
  	}
3960
+-	if m.AzureDisk != nil {
3961
+-		l = m.AzureDisk.Size()
3949 3962
 +	if m.CascadeDisk != nil {
3950 3963
 +		l = m.CascadeDisk.Size()
3964
+ 		n += 2 + l + sovGenerated(uint64(l))
3965
+ 	}
3966
+ 	if m.PhotonPersistentDisk != nil {
3967
+@@ -13812,6 +13885,10 @@
3968
+ 		l = m.StorageOS.Size()
3969
+ 		n += 2 + l + sovGenerated(uint64(l))
3970
+ 	}
3971
++	if m.AzureDisk != nil {
3972
++		l = m.AzureDisk.Size()
3951 3973
 +		n += 2 + l + sovGenerated(uint64(l))
3952 3974
 +	}
3953 3975
  	return n
3954 3976
  }
3955 3977
  
3956
-@@ -13202,6 +13278,17 @@
3978
+@@ -13971,6 +14048,17 @@
3957 3979
  	}, "")
3958 3980
  	return s
3959 3981
  }
... ...
@@ -3971,29 +4277,67 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
3971 3971
  func (this *CephFSPersistentVolumeSource) String() string {
3972 3972
  	if this == nil {
3973 3973
  		return "nil"
3974
-@@ -14532,6 +14619,7 @@
3975
- 		`ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`,
3974
+@@ -15335,13 +15423,14 @@
3975
+ 		`AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFilePersistentVolumeSource", "AzureFilePersistentVolumeSource", 1) + `,`,
3976
+ 		`VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`,
3977
+ 		`Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`,
3978
+-		`AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`,
3979
++		`CascadeDisk:` + strings.Replace(fmt.Sprintf("%v", this.CascadeDisk), "CascadeDiskVolumeSource", "CascadeDiskVolumeSource", 1) + `,`,
3980
+ 		`PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`,
3981
+ 		`PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`,
3982
+ 		`ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOPersistentVolumeSource", "ScaleIOPersistentVolumeSource", 1) + `,`,
3976 3983
  		`Local:` + strings.Replace(fmt.Sprintf("%v", this.Local), "LocalVolumeSource", "LocalVolumeSource", 1) + `,`,
3977 3984
  		`StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSPersistentVolumeSource", "StorageOSPersistentVolumeSource", 1) + `,`,
3978
-+		`CascadeDisk:` + strings.Replace(fmt.Sprintf("%v", this.CascadeDisk), "CascadeDiskVolumeSource", "CascadeDiskVolumeSource", 1) + `,`,
3985
+ 		`CSI:` + strings.Replace(fmt.Sprintf("%v", this.CSI), "CSIPersistentVolumeSource", "CSIPersistentVolumeSource", 1) + `,`,
3986
++		`AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`,
3979 3987
  		`}`,
3980 3988
  	}, "")
3981 3989
  	return s
3982
-@@ -15592,6 +15680,7 @@
3990
+@@ -16468,12 +16557,13 @@
3991
+ 		`ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapVolumeSource", "ConfigMapVolumeSource", 1) + `,`,
3992
+ 		`VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`,
3993
+ 		`Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`,
3994
+-		`AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`,
3995
++		`CascadeDisk:` + strings.Replace(fmt.Sprintf("%v", this.CascadeDisk), "CascadeDiskVolumeSource", "CascadeDiskVolumeSource", 1) + `,`,
3996
+ 		`PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`,
3997
+ 		`PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`,
3983 3998
  		`ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`,
3984 3999
  		`Projected:` + strings.Replace(fmt.Sprintf("%v", this.Projected), "ProjectedVolumeSource", "ProjectedVolumeSource", 1) + `,`,
3985 4000
  		`StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSVolumeSource", "StorageOSVolumeSource", 1) + `,`,
3986
-+		`CascadeDisk:` + strings.Replace(fmt.Sprintf("%v", this.CascadeDisk), "CascadeDiskVolumeSource", "CascadeDiskVolumeSource", 1) + `,`,
4001
++		`AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`,
3987 4002
  		`}`,
3988 4003
  	}, "")
3989 4004
  	return s
3990
-@@ -32799,6 +32888,39 @@
4005
+@@ -34322,7 +34412,7 @@
4006
+ 			iNdEx = postIndex
4007
+ 		case 16:
4008
+ 			if wireType != 2 {
4009
+-				return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType)
4010
++				return fmt.Errorf("proto: wrong wireType = %d for field CascadeDisk", wireType)
4011
+ 			}
4012
+ 			var msglen int
4013
+ 			for shift := uint(0); ; shift += 7 {
4014
+@@ -34346,10 +34436,10 @@
4015
+ 			if postIndex > l {
4016
+ 				return io.ErrUnexpectedEOF
4017
+ 			}
4018
+-			if m.AzureDisk == nil {
4019
+-				m.AzureDisk = &AzureDiskVolumeSource{}
4020
++			if m.CascadeDisk == nil {
4021
++				m.CascadeDisk = &CascadeDiskVolumeSource{}
4022
+ 			}
4023
+-			if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4024
++			if err := m.CascadeDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4025
+ 				return err
4026
+ 			}
4027
+ 			iNdEx = postIndex
4028
+@@ -34551,6 +34641,39 @@
3991 4029
  				return err
3992 4030
  			}
3993 4031
  			iNdEx = postIndex
3994
-+		case 22:
4032
++		case 23:
3995 4033
 +			if wireType != 2 {
3996
-+				return fmt.Errorf("proto: wrong wireType = %d for field CascadeDisk", wireType)
4034
++				return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType)
3997 4035
 +			}
3998 4036
 +			var msglen int
3999 4037
 +			for shift := uint(0); ; shift += 7 {
... ...
@@ -4017,17 +4361,17 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
4017 4017
 +			if postIndex > l {
4018 4018
 +				return io.ErrUnexpectedEOF
4019 4019
 +			}
4020
-+			if m.CascadeDisk == nil {
4021
-+				m.CascadeDisk = &CascadeDiskVolumeSource{}
4020
++			if m.AzureDisk == nil {
4021
++				m.AzureDisk = &AzureDiskVolumeSource{}
4022 4022
 +			}
4023
-+			if err := m.CascadeDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4023
++			if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4024 4024
 +				return err
4025 4025
 +			}
4026 4026
 +			iNdEx = postIndex
4027 4027
  		default:
4028 4028
  			iNdEx = preIndex
4029 4029
  			skippy, err := skipGenerated(dAtA[iNdEx:])
4030
-@@ -33307,6 +33429,114 @@
4030
+@@ -35089,6 +35212,114 @@
4031 4031
  	}
4032 4032
  	return nil
4033 4033
  }
... ...
@@ -4142,13 +4486,36 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
4142 4142
  func (m *PhotonPersistentDiskVolumeSource) Unmarshal(dAtA []byte) error {
4143 4143
  	l := len(dAtA)
4144 4144
  	iNdEx := 0
4145
-@@ -45941,6 +46171,39 @@
4145
+@@ -48522,7 +48753,7 @@
4146
+ 			iNdEx = postIndex
4147
+ 		case 22:
4148
+ 			if wireType != 2 {
4149
+-				return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType)
4150
++				return fmt.Errorf("proto: wrong wireType = %d for field CascadeDisk", wireType)
4151
+ 			}
4152
+ 			var msglen int
4153
+ 			for shift := uint(0); ; shift += 7 {
4154
+@@ -48546,10 +48777,10 @@
4155
+ 			if postIndex > l {
4156
+ 				return io.ErrUnexpectedEOF
4157
+ 			}
4158
+-			if m.AzureDisk == nil {
4159
+-				m.AzureDisk = &AzureDiskVolumeSource{}
4160
++			if m.CascadeDisk == nil {
4161
++				m.CascadeDisk = &CascadeDiskVolumeSource{}
4162
+ 			}
4163
+-			if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4164
++			if err := m.CascadeDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4165
+ 				return err
4166
+ 			}
4167
+ 			iNdEx = postIndex
4168
+@@ -48718,6 +48949,39 @@
4146 4169
  				return err
4147 4170
  			}
4148 4171
  			iNdEx = postIndex
4149 4172
 +		case 28:
4150 4173
 +			if wireType != 2 {
4151
-+				return fmt.Errorf("proto: wrong wireType = %d for field CascadeDisk", wireType)
4174
++				return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType)
4152 4175
 +			}
4153 4176
 +			var msglen int
4154 4177
 +			for shift := uint(0); ; shift += 7 {
... ...
@@ -4172,38 +4539,64 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/gener
4172 4172
 +			if postIndex > l {
4173 4173
 +				return io.ErrUnexpectedEOF
4174 4174
 +			}
4175
-+			if m.CascadeDisk == nil {
4176
-+				m.CascadeDisk = &CascadeDiskVolumeSource{}
4175
++			if m.AzureDisk == nil {
4176
++				m.AzureDisk = &AzureDiskVolumeSource{}
4177 4177
 +			}
4178
-+			if err := m.CascadeDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4178
++			if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4179 4179
 +				return err
4180 4180
 +			}
4181 4181
 +			iNdEx = postIndex
4182 4182
  		default:
4183 4183
  			iNdEx = preIndex
4184 4184
  			skippy, err := skipGenerated(dAtA[iNdEx:])
4185
-diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/types.go cascade-kubernetes/staging/src/k8s.io/api/core/v1/types.go
4186
-+++ cascade-kubernetes/staging/src/k8s.io/api/core/v1/types.go	2018-01-31 02:12:47.000000000 +0000
4187
-@@ -350,6 +350,8 @@
4185
+diff -uNr --no-dereference kubernetes-original/staging/src/k8s.io/api/core/v1/types.go kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/core/v1/types.go
4186
+--- kubernetes-original/staging/src/k8s.io/api/core/v1/types.go	2018-03-20 19:21:10.000000000 +0000
4187
+@@ -333,9 +333,8 @@
4188
+ 	// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
4189
+ 	// +optional
4190
+ 	Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"`
4191
+-	// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4192
+-	// +optional
4193
+-	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"`
4194
++	// CascadeDisk represents a Cascade persistent disk attached and mounted on kubelets host machine
4195
++	CascadeDisk *CascadeDiskVolumeSource `json:"cascadeDisk,omitempty" protobuf:"bytes,22,opt,name=cascadeDisk"`
4196
+ 	// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
4197
+ 	PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"`
4198
+ 	// Items for all in one resources secrets, configmaps, and downward API
4199
+@@ -349,6 +348,9 @@
4188 4200
  	// StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
4189 4201
  	// +optional
4190 4202
  	StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"`
4191
-+	// CascadeDisk represents a Cascade persistent disk attached and mounted on kubelets host machine
4192
-+	CascadeDisk *CascadeDiskVolumeSource `json:"cascadeDisk,omitempty" protobuf:"bytes,28,opt,name=cascadeDisk"`
4203
++	// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4204
++	// +optional
4205
++	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,28,opt,name=azureDisk"`
4193 4206
  }
4194 4207
  
4195 4208
  // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
4196
-@@ -448,6 +450,8 @@
4197
- 	// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
4209
+@@ -428,9 +430,8 @@
4210
+ 	// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
4198 4211
  	// +optional
4199
- 	StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"`
4212
+ 	Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"`
4213
+-	// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4214
+-	// +optional
4215
+-	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"`
4200 4216
 +	// CascadeDisk represents a Cascade persistent disk attached and mounted on kubelets host machine
4201
-+	CascadeDisk *CascadeDiskVolumeSource `json:"cascadeDisk,omitempty" protobuf:"bytes,22,opt,name=cascadeDisk"`
4217
++	CascadeDisk *CascadeDiskVolumeSource `json:"cascadeDisk,omitempty" protobuf:"bytes,16,opt,name=cascadeDisk"`
4218
+ 	// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
4219
+ 	PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"`
4220
+ 	// PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
4221
+@@ -449,6 +450,9 @@
4222
+ 	// CSI represents storage that handled by an external CSI driver
4223
+ 	// +optional
4224
+ 	CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"`
4225
++	// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4226
++	// +optional
4227
++	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,23,opt,name=azureDisk"`
4202 4228
  }
4203 4229
  
4204 4230
  const (
4205
-@@ -1431,6 +1435,16 @@
4231
+@@ -1578,6 +1582,16 @@
4206 4232
  	SecretRef *ObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"`
4207 4233
  }
4208 4234
  
4209 4235
new file mode 100644
... ...
@@ -0,0 +1,249 @@
0
+%ifarch x86_64
1
+%define archname amd64
2
+%endif
3
+%ifarch aarch64
4
+%define archname arm64
5
+%endif
6
+
7
+Summary:        Kubernetes cluster management
8
+Name:           kubernetes
9
+Version:        1.10.2
10
+Release:        1%{?dist}
11
+License:        ASL 2.0
12
+URL:            https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
13
+Source0:        kubernetes-%{version}.tar.gz
14
+%define sha1    kubernetes-%{version}.tar.gz=e1cef85820ff16265788c96a6fd31056bfaf247c
15
+Source1:        https://github.com/kubernetes/contrib/archive/contrib-0.7.0.tar.gz
16
+%define sha1    contrib-0.7.0=47a744da3b396f07114e518226b6313ef4b2203c
17
+Group:          Development/Tools
18
+Vendor:         VMware, Inc.
19
+Distribution:   Photon
20
+BuildRequires:  go
21
+BuildRequires:  rsync
22
+BuildRequires:  which
23
+Requires:       cni
24
+Requires:       ebtables
25
+Requires:       etcd >= 3.0.4
26
+Requires:       ethtool
27
+Requires:       iptables
28
+Requires:       iproute2
29
+Requires(pre):  /usr/sbin/useradd /usr/sbin/groupadd
30
+Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel
31
+Requires:       socat
32
+Requires:       (util-linux or toybox)
33
+
34
+%description
35
+Kubernetes is an open source implementation of container cluster management.
36
+
37
+%package        kubeadm
38
+Summary:        kubeadm deployment tool
39
+Group:          Development/Tools
40
+Requires:       %{name} = %{version}
41
+%description    kubeadm
42
+kubeadm is a tool that enables quick and easy deployment of a kubernetes cluster.
43
+
44
+%package        pause
45
+Summary:        pause binary
46
+Group:          Development/Tools
47
+%description    pause
48
+A pod setup process that holds a pod's namespace.
49
+
50
+%prep -p exit
51
+%setup -qn %{name}-%{version}
52
+cd ..
53
+tar xf %{SOURCE1} --no-same-owner
54
+sed -i -e 's|127.0.0.1:4001|127.0.0.1:2379|g' contrib-0.7.0/init/systemd/environ/apiserver
55
+cd %{name}-%{version}
56
+
57
+%build
58
+make
59
+pushd build/pause
60
+mkdir -p bin
61
+gcc -Os -Wall -Werror -static -o bin/pause-%{archname} pause.c
62
+strip bin/pause-%{archname}
63
+popd
64
+
65
+%install
66
+install -vdm644 %{buildroot}/etc/profile.d
67
+install -m 755 -d %{buildroot}%{_bindir}
68
+
69
+binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl)
70
+for bin in "${binaries[@]}"; do
71
+  echo "+++ INSTALLING ${bin}"
72
+  install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/${bin}
73
+done
74
+install -p -m 755 -t %{buildroot}%{_bindir} build/pause/bin/pause-%{archname}
75
+
76
+# kubeadm install
77
+install -vdm644 %{buildroot}/etc/systemd/system/kubelet.service.d
78
+install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/kubeadm
79
+install -p -m 755 -t %{buildroot}/etc/systemd/system build/rpms/kubelet.service
80
+install -p -m 755 -t %{buildroot}/etc/systemd/system/kubelet.service.d build/rpms/10-kubeadm.conf
81
+sed -i '/KUBELET_CGROUP_ARGS=--cgroup-driver=systemd/d' %{buildroot}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
82
+
83
+cd ..
84
+# install config files
85
+install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
86
+install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib-0.7.0/init/systemd/environ/*
87
+cat << EOF >> %{buildroot}%{_sysconfdir}/%{name}/kubeconfig
88
+apiVersion: v1
89
+clusters:
90
+- cluster:
91
+    server: http://127.0.0.1:8080
92
+EOF
93
+sed -i '/KUBELET_API_SERVER/c\KUBELET_API_SERVER="--kubeconfig=/etc/kubernetes/kubeconfig"' %{buildroot}%{_sysconfdir}/%{name}/kubelet
94
+
95
+# install service files
96
+install -d -m 0755 %{buildroot}/usr/lib/systemd/system
97
+install -m 0644 -t %{buildroot}/usr/lib/systemd/system contrib-0.7.0/init/systemd/*.service
98
+
99
+# install the place the kubelet defaults to put volumes
100
+install -dm755 %{buildroot}/var/lib/kubelet
101
+install -dm755 %{buildroot}/var/run/kubernetes
102
+
103
+mkdir -p %{buildroot}/%{_lib}/tmpfiles.d
104
+cat << EOF >> %{buildroot}/%{_lib}/tmpfiles.d/kubernetes.conf
105
+d /var/run/kubernetes 0755 kube kube -
106
+EOF
107
+
108
+%check
109
+export GOPATH=%{_builddir}
110
+go get golang.org/x/tools/cmd/cover
111
+make %{?_smp_mflags} check
112
+
113
+%clean
114
+rm -rf %{buildroot}/*
115
+
116
+%pre
117
+if [ $1 -eq 1 ]; then
118
+    # Initial installation.
119
+    getent group kube >/dev/null || groupadd -r kube
120
+    getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
121
+            -c "Kubernetes user" kube
122
+fi
123
+
124
+%post
125
+chown -R kube:kube /var/lib/kubelet
126
+chown -R kube:kube /var/run/kubernetes
127
+systemctl daemon-reload
128
+
129
+%post kubeadm
130
+systemctl daemon-reload
131
+systemctl stop kubelet
132
+systemctl enable kubelet
133
+
134
+%preun kubeadm
135
+if [ $1 -eq 0 ]; then
136
+    systemctl stop kubelet
137
+fi
138
+
139
+%postun
140
+if [ $1 -eq 0 ]; then
141
+    # Package deletion
142
+    userdel kube
143
+    groupdel kube
144
+    systemctl daemon-reload
145
+fi
146
+
147
+%postun kubeadm
148
+if [ $1 -eq 0 ]; then
149
+    systemctl daemon-reload
150
+fi
151
+
152
+%files
153
+%defattr(-,root,root)
154
+%{_bindir}/cloud-controller-manager
155
+%{_bindir}/hyperkube
156
+%{_bindir}/kube-aggregator
157
+%{_bindir}/kube-apiserver
158
+%{_bindir}/kube-controller-manager
159
+%{_bindir}/kubelet
160
+%{_bindir}/kube-proxy
161
+%{_bindir}/kube-scheduler
162
+%{_bindir}/kubectl
163
+#%{_bindir}/kubefed
164
+%{_lib}/systemd/system/kube-apiserver.service
165
+%{_lib}/systemd/system/kubelet.service
166
+%{_lib}/systemd/system/kube-scheduler.service
167
+%{_lib}/systemd/system/kube-controller-manager.service
168
+%{_lib}/systemd/system/kube-proxy.service
169
+%{_lib}/tmpfiles.d/kubernetes.conf
170
+%dir %{_sysconfdir}/%{name}
171
+%dir /var/lib/kubelet
172
+%dir /var/run/kubernetes
173
+%config(noreplace) %{_sysconfdir}/%{name}/config
174
+%config(noreplace) %{_sysconfdir}/%{name}/apiserver
175
+%config(noreplace) %{_sysconfdir}/%{name}/controller-manager
176
+%config(noreplace) %{_sysconfdir}/%{name}/proxy
177
+%config(noreplace) %{_sysconfdir}/%{name}/kubelet
178
+%config(noreplace) %{_sysconfdir}/%{name}/kubeconfig
179
+%config(noreplace) %{_sysconfdir}/%{name}/scheduler
180
+
181
+%files kubeadm
182
+%defattr(-,root,root)
183
+%{_bindir}/kubeadm
184
+/etc/systemd/system/kubelet.service
185
+/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
186
+
187
+%files pause
188
+%defattr(-,root,root)
189
+%{_bindir}/pause-%{archname}
190
+
191
+%changelog
192
+*   Thu May 03 2018 Xiaolin Li <xiaolinl@vmware.com> 1.10.2-1
193
+-   Add kubernetes 1.10.2.
194
+*   Tue Jan 30 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-6
195
+-   Fix password issue in cascade cloud provider.
196
+*   Tue Jan 23 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-5
197
+-   Add Cascade cloud provider.
198
+*   Wed Nov 15 2017 Alexey Makhalov <amakhalov@vmware.com> 1.8.1-4
199
+-   Aarch64 support
200
+*   Wed Nov 15 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-3
201
+-   Specify --kubeconfig to pass in config file.
202
+*   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-2
203
+-   Specify API server via kubeconfig file.
204
+*   Wed Nov 01 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-1
205
+-   k8s v1.8.1.
206
+*   Mon Sep 18 2017 Alexey Makhalov <amakhalov@vmware.com> 1.7.5-2
207
+-   Requires util-linux or toybox
208
+-   Remove shadow from requires and use explicit tools for post actions
209
+*   Mon Sep 11 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.5-1
210
+-   k8s v1.7.5.
211
+*   Thu Aug 03 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-3
212
+-   PhotonOS based k8s pause container.
213
+*   Sat Jul 22 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-2
214
+-   Split kubeadm into its own pkg.
215
+*   Fri Jul 14 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-1
216
+-   Upgrade kubernetes to v1.7.0.
217
+*   Tue May 09 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-3
218
+-   Fix kubernetes dependencies.
219
+*   Thu May 04 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-2
220
+-   Include cloud-controller-manager, kube-aggregator binaries.
221
+*   Tue Mar 28 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-1
222
+-   Build kubernetes 1.6.0 from source.
223
+*   Mon Feb 13 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.5.2-3
224
+-   Added kubeadm, kubefed, dns, discovery to package.
225
+*   Fri Jan 27 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-2
226
+-   Added /lib/tmpfiles.d/kubernetes.conf.
227
+*   Thu Jan 19 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-1
228
+-   Upgraded to version 1.5.2
229
+*   Fri Oct 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.4-1
230
+-   Upgraded to version 1.4.4
231
+*   Wed Sep 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.0-1
232
+-   Upgraded to version 1.4.0
233
+*   Fri Jun 24 2016 Xiaolin Li <xiaolinl@vmware.com> 1.2.4-1
234
+-   Upgraded to version 1.2.4
235
+*   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-4
236
+-   GA - Bump release of all rpms
237
+*   Wed May 18 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-3
238
+-   Fix if syntax
239
+*   Thu May 05 2016 Kumar Kaushik <kaushikk@vmware.com> 1.1.8-2
240
+-   Adding support to pre/post/un scripts for package upgrade.
241
+*   Tue Feb 23 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 1.1.8-1
242
+-   Upgraded to version 1.1.8
243
+*   Mon Aug 3 2015 Tom Scanlan <tscanlan@vmware.com> 1.0.2-1
244
+-   bump up to latest release
245
+*   Thu Jul 23 2015 Vinay Kulkarni <kulkarniv@vmware.com> 1.0.1-1
246
+-   Upgrade to kubernetes v1.0.1
247
+*   Tue Mar 10 2015 Divya Thaluru <dthaluru@vmware.com> 0.12.1-1
248
+-   Initial build. First version
0 249
new file mode 100644
... ...
@@ -0,0 +1,251 @@
0
+%ifarch x86_64
1
+%define archname amd64
2
+%endif
3
+%ifarch aarch64
4
+%define archname arm64
5
+%endif
6
+
7
+Summary:        Kubernetes cluster management
8
+Name:           kubernetes
9
+Version:        1.9.6
10
+Release:        1%{?dist}
11
+License:        ASL 2.0
12
+URL:            https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
13
+Source0:        kubernetes-v%{version}.tar.gz
14
+%define sha1    kubernetes-v%{version}.tar.gz=6996c0690a38cda1ae5479a4dde7ebfeb590e5fb
15
+Source1:        https://github.com/kubernetes/contrib/archive/contrib-0.7.0.tar.gz
16
+%define sha1    contrib-0.7.0=47a744da3b396f07114e518226b6313ef4b2203c
17
+Patch0:         k8s-cascade.patch
18
+Group:          Development/Tools
19
+Vendor:         VMware, Inc.
20
+Distribution:   Photon
21
+BuildRequires:  go
22
+BuildRequires:  rsync
23
+BuildRequires:  which
24
+Requires:       cni
25
+Requires:       ebtables
26
+Requires:       etcd >= 3.0.4
27
+Requires:       ethtool
28
+Requires:       iptables
29
+Requires:       iproute2
30
+Requires(pre):  /usr/sbin/useradd /usr/sbin/groupadd
31
+Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel
32
+Requires:       socat
33
+Requires:       (util-linux or toybox)
34
+
35
+%description
36
+Kubernetes is an open source implementation of container cluster management.
37
+
38
+%package        kubeadm
39
+Summary:        kubeadm deployment tool
40
+Group:          Development/Tools
41
+Requires:       %{name} = %{version}
42
+%description    kubeadm
43
+kubeadm is a tool that enables quick and easy deployment of a kubernetes cluster.
44
+
45
+%package        pause
46
+Summary:        pause binary
47
+Group:          Development/Tools
48
+%description    pause
49
+A pod setup process that holds a pod's namespace.
50
+
51
+%prep -p exit
52
+%setup -qn %{name}-%{version}
53
+cd ..
54
+tar xf %{SOURCE1} --no-same-owner
55
+sed -i -e 's|127.0.0.1:4001|127.0.0.1:2379|g' contrib-0.7.0/init/systemd/environ/apiserver
56
+cd %{name}-%{version}
57
+%patch0 -p1
58
+
59
+%build
60
+make
61
+pushd build/pause
62
+mkdir -p bin
63
+gcc -Os -Wall -Werror -static -o bin/pause-%{archname} pause.c
64
+strip bin/pause-%{archname}
65
+popd
66
+
67
+%install
68
+install -vdm644 %{buildroot}/etc/profile.d
69
+install -m 755 -d %{buildroot}%{_bindir}
70
+
71
+binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl)
72
+for bin in "${binaries[@]}"; do
73
+  echo "+++ INSTALLING ${bin}"
74
+  install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/${bin}
75
+done
76
+install -p -m 755 -t %{buildroot}%{_bindir} build/pause/bin/pause-%{archname}
77
+
78
+# kubeadm install
79
+install -vdm644 %{buildroot}/etc/systemd/system/kubelet.service.d
80
+install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/kubeadm
81
+install -p -m 755 -t %{buildroot}/etc/systemd/system build/rpms/kubelet.service
82
+install -p -m 755 -t %{buildroot}/etc/systemd/system/kubelet.service.d build/rpms/10-kubeadm.conf
83
+sed -i '/KUBELET_CGROUP_ARGS=--cgroup-driver=systemd/d' %{buildroot}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
84
+
85
+cd ..
86
+# install config files
87
+install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
88
+install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib-0.7.0/init/systemd/environ/*
89
+cat << EOF >> %{buildroot}%{_sysconfdir}/%{name}/kubeconfig
90
+apiVersion: v1
91
+clusters:
92
+- cluster:
93
+    server: http://127.0.0.1:8080
94
+EOF
95
+sed -i '/KUBELET_API_SERVER/c\KUBELET_API_SERVER="--kubeconfig=/etc/kubernetes/kubeconfig"' %{buildroot}%{_sysconfdir}/%{name}/kubelet
96
+
97
+# install service files
98
+install -d -m 0755 %{buildroot}/usr/lib/systemd/system
99
+install -m 0644 -t %{buildroot}/usr/lib/systemd/system contrib-0.7.0/init/systemd/*.service
100
+
101
+# install the place the kubelet defaults to put volumes
102
+install -dm755 %{buildroot}/var/lib/kubelet
103
+install -dm755 %{buildroot}/var/run/kubernetes
104
+
105
+mkdir -p %{buildroot}/%{_lib}/tmpfiles.d
106
+cat << EOF >> %{buildroot}/%{_lib}/tmpfiles.d/kubernetes.conf
107
+d /var/run/kubernetes 0755 kube kube -
108
+EOF
109
+
110
+%check
111
+export GOPATH=%{_builddir}
112
+go get golang.org/x/tools/cmd/cover
113
+make %{?_smp_mflags} check
114
+
115
+%clean
116
+rm -rf %{buildroot}/*
117
+
118
+%pre
119
+if [ $1 -eq 1 ]; then
120
+    # Initial installation.
121
+    getent group kube >/dev/null || groupadd -r kube
122
+    getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
123
+            -c "Kubernetes user" kube
124
+fi
125
+
126
+%post
127
+chown -R kube:kube /var/lib/kubelet
128
+chown -R kube:kube /var/run/kubernetes
129
+systemctl daemon-reload
130
+
131
+%post kubeadm
132
+systemctl daemon-reload
133
+systemctl stop kubelet
134
+systemctl enable kubelet
135
+
136
+%preun kubeadm
137
+if [ $1 -eq 0 ]; then
138
+    systemctl stop kubelet
139
+fi
140
+
141
+%postun
142
+if [ $1 -eq 0 ]; then
143
+    # Package deletion
144
+    userdel kube
145
+    groupdel kube
146
+    systemctl daemon-reload
147
+fi
148
+
149
+%postun kubeadm
150
+if [ $1 -eq 0 ]; then
151
+    systemctl daemon-reload
152
+fi
153
+
154
+%files
155
+%defattr(-,root,root)
156
+%{_bindir}/cloud-controller-manager
157
+%{_bindir}/hyperkube
158
+%{_bindir}/kube-aggregator
159
+%{_bindir}/kube-apiserver
160
+%{_bindir}/kube-controller-manager
161
+%{_bindir}/kubelet
162
+%{_bindir}/kube-proxy
163
+%{_bindir}/kube-scheduler
164
+%{_bindir}/kubectl
165
+#%{_bindir}/kubefed
166
+%{_lib}/systemd/system/kube-apiserver.service
167
+%{_lib}/systemd/system/kubelet.service
168
+%{_lib}/systemd/system/kube-scheduler.service
169
+%{_lib}/systemd/system/kube-controller-manager.service
170
+%{_lib}/systemd/system/kube-proxy.service
171
+%{_lib}/tmpfiles.d/kubernetes.conf
172
+%dir %{_sysconfdir}/%{name}
173
+%dir /var/lib/kubelet
174
+%dir /var/run/kubernetes
175
+%config(noreplace) %{_sysconfdir}/%{name}/config
176
+%config(noreplace) %{_sysconfdir}/%{name}/apiserver
177
+%config(noreplace) %{_sysconfdir}/%{name}/controller-manager
178
+%config(noreplace) %{_sysconfdir}/%{name}/proxy
179
+%config(noreplace) %{_sysconfdir}/%{name}/kubelet
180
+%config(noreplace) %{_sysconfdir}/%{name}/kubeconfig
181
+%config(noreplace) %{_sysconfdir}/%{name}/scheduler
182
+
183
+%files kubeadm
184
+%defattr(-,root,root)
185
+%{_bindir}/kubeadm
186
+/etc/systemd/system/kubelet.service
187
+/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
188
+
189
+%files pause
190
+%defattr(-,root,root)
191
+%{_bindir}/pause-%{archname}
192
+
193
+%changelog
194
+*   Thu May 03 2018 Xiaolin Li <xiaolinl@vmware.com> 1.9.6-1
195
+-   Uppdate kubernetes to version 1.9.6.
196
+*   Tue Jan 30 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-6
197
+-   Fix password issue in cascade cloud provider.
198
+*   Tue Jan 23 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-5
199
+-   Add Cascade cloud provider.
200
+*   Wed Nov 15 2017 Alexey Makhalov <amakhalov@vmware.com> 1.8.1-4
201
+-   Aarch64 support
202
+*   Wed Nov 15 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-3
203
+-   Specify --kubeconfig to pass in config file.
204
+*   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-2
205
+-   Specify API server via kubeconfig file.
206
+*   Wed Nov 01 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-1
207
+-   k8s v1.8.1.
208
+*   Mon Sep 18 2017 Alexey Makhalov <amakhalov@vmware.com> 1.7.5-2
209
+-   Requires util-linux or toybox
210
+-   Remove shadow from requires and use explicit tools for post actions
211
+*   Mon Sep 11 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.5-1
212
+-   k8s v1.7.5.
213
+*   Thu Aug 03 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-3
214
+-   PhotonOS based k8s pause container.
215
+*   Sat Jul 22 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-2
216
+-   Split kubeadm into its own pkg.
217
+*   Fri Jul 14 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-1
218
+-   Upgrade kubernetes to v1.7.0.
219
+*   Tue May 09 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-3
220
+-   Fix kubernetes dependencies.
221
+*   Thu May 04 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-2
222
+-   Include cloud-controller-manager, kube-aggregator binaries.
223
+*   Tue Mar 28 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-1
224
+-   Build kubernetes 1.6.0 from source.
225
+*   Mon Feb 13 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.5.2-3
226
+-   Added kubeadm, kubefed, dns, discovery to package.
227
+*   Fri Jan 27 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-2
228
+-   Added /lib/tmpfiles.d/kubernetes.conf.
229
+*   Thu Jan 19 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-1
230
+-   Upgraded to version 1.5.2
231
+*   Fri Oct 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.4-1
232
+-   Upgraded to version 1.4.4
233
+*   Wed Sep 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.0-1
234
+-   Upgraded to version 1.4.0
235
+*   Fri Jun 24 2016 Xiaolin Li <xiaolinl@vmware.com> 1.2.4-1
236
+-   Upgraded to version 1.2.4
237
+*   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-4
238
+-   GA - Bump release of all rpms
239
+*   Wed May 18 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-3
240
+-   Fix if syntax
241
+*   Thu May 05 2016 Kumar Kaushik <kaushikk@vmware.com> 1.1.8-2
242
+-   Adding support to pre/post/un scripts for package upgrade.
243
+*   Tue Feb 23 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 1.1.8-1
244
+-   Upgraded to version 1.1.8
245
+*   Mon Aug 3 2015 Tom Scanlan <tscanlan@vmware.com> 1.0.2-1
246
+-   bump up to latest release
247
+*   Thu Jul 23 2015 Vinay Kulkarni <kulkarniv@vmware.com> 1.0.1-1
248
+-   Upgrade to kubernetes v1.0.1
249
+*   Tue Mar 10 2015 Divya Thaluru <dthaluru@vmware.com> 0.12.1-1
250
+-   Initial build. First version
0 251
deleted file mode 100644
... ...
@@ -1,250 +0,0 @@
1
-%ifarch x86_64
2
-%define archname amd64
3
-%endif
4
-%ifarch aarch64
5
-%define archname arm64
6
-%endif
7
-
8
-
9
-Summary:        Kubernetes cluster management
10
-Name:           kubernetes
11
-Version:        1.8.1
12
-Release:        6%{?dist}
13
-License:        ASL 2.0
14
-URL:            https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
15
-Source0:        kubernetes-v%{version}.tar.gz
16
-%define sha1    kubernetes-v%{version}.tar.gz=74bad7a52f3fc0b3c70e5ccc986a46a9fdfe358b
17
-Source1:        https://github.com/kubernetes/contrib/archive/contrib-0.7.0.tar.gz
18
-%define sha1    contrib-0.7.0=47a744da3b396f07114e518226b6313ef4b2203c
19
-Patch0:         k8s-cascade.patch
20
-Group:          Development/Tools
21
-Vendor:         VMware, Inc.
22
-Distribution:   Photon
23
-BuildRequires:  go
24
-BuildRequires:  rsync
25
-BuildRequires:  which
26
-Requires:       cni
27
-Requires:       ebtables
28
-Requires:       etcd >= 3.0.4
29
-Requires:       ethtool
30
-Requires:       iptables
31
-Requires:       iproute2
32
-Requires(pre):  /usr/sbin/useradd /usr/sbin/groupadd
33
-Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel
34
-Requires:       socat
35
-Requires:       (util-linux or toybox)
36
-
37
-%description
38
-Kubernetes is an open source implementation of container cluster management.
39
-
40
-%package        kubeadm
41
-Summary:        kubeadm deployment tool
42
-Group:          Development/Tools
43
-Requires:       %{name} = %{version}
44
-%description    kubeadm
45
-kubeadm is a tool that enables quick and easy deployment of a kubernetes cluster.
46
-
47
-%package        pause
48
-Summary:        pause binary
49
-Group:          Development/Tools
50
-%description    pause
51
-A pod setup process that holds a pod's namespace.
52
-
53
-%prep -p exit
54
-%setup -qn %{name}-%{version}
55
-cd ..
56
-tar xf %{SOURCE1} --no-same-owner
57
-sed -i -e 's|127.0.0.1:4001|127.0.0.1:2379|g' contrib-0.7.0/init/systemd/environ/apiserver
58
-cd %{name}-%{version}
59
-%patch0 -p1
60
-
61
-%build
62
-make
63
-pushd build/pause
64
-mkdir -p bin
65
-gcc -Os -Wall -Werror -static -o bin/pause-%{archname} pause.c
66
-strip bin/pause-%{archname}
67
-popd
68
-
69
-%install
70
-install -vdm644 %{buildroot}/etc/profile.d
71
-install -m 755 -d %{buildroot}%{_bindir}
72
-
73
-binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl kubefed)
74
-for bin in "${binaries[@]}"; do
75
-  echo "+++ INSTALLING ${bin}"
76
-  install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/${bin}
77
-done
78
-install -p -m 755 -t %{buildroot}%{_bindir} build/pause/bin/pause-%{archname}
79
-
80
-# kubeadm install
81
-install -vdm644 %{buildroot}/etc/systemd/system/kubelet.service.d
82
-install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/kubeadm
83
-install -p -m 755 -t %{buildroot}/etc/systemd/system build/rpms/kubelet.service
84
-install -p -m 755 -t %{buildroot}/etc/systemd/system/kubelet.service.d build/rpms/10-kubeadm.conf
85
-sed -i '/KUBELET_CGROUP_ARGS=--cgroup-driver=systemd/d' %{buildroot}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
86
-
87
-cd ..
88
-# install config files
89
-install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
90
-install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib-0.7.0/init/systemd/environ/*
91
-cat << EOF >> %{buildroot}%{_sysconfdir}/%{name}/kubeconfig
92
-apiVersion: v1
93
-clusters:
94
-- cluster:
95
-    server: http://127.0.0.1:8080
96
-EOF
97
-sed -i '/KUBELET_API_SERVER/c\KUBELET_API_SERVER="--kubeconfig=/etc/kubernetes/kubeconfig"' %{buildroot}%{_sysconfdir}/%{name}/kubelet
98
-
99
-# install service files
100
-install -d -m 0755 %{buildroot}/usr/lib/systemd/system
101
-install -m 0644 -t %{buildroot}/usr/lib/systemd/system contrib-0.7.0/init/systemd/*.service
102
-
103
-# install the place the kubelet defaults to put volumes
104
-install -dm755 %{buildroot}/var/lib/kubelet
105
-install -dm755 %{buildroot}/var/run/kubernetes
106
-
107
-mkdir -p %{buildroot}/%{_lib}/tmpfiles.d
108
-cat << EOF >> %{buildroot}/%{_lib}/tmpfiles.d/kubernetes.conf
109
-d /var/run/kubernetes 0755 kube kube -
110
-EOF
111
-
112
-%check
113
-export GOPATH=%{_builddir}
114
-go get golang.org/x/tools/cmd/cover
115
-make %{?_smp_mflags} check
116
-
117
-%clean
118
-rm -rf %{buildroot}/*
119
-
120
-%pre
121
-if [ $1 -eq 1 ]; then
122
-    # Initial installation.
123
-    getent group kube >/dev/null || groupadd -r kube
124
-    getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
125
-            -c "Kubernetes user" kube
126
-fi
127
-
128
-%post
129
-chown -R kube:kube /var/lib/kubelet
130
-chown -R kube:kube /var/run/kubernetes
131
-systemctl daemon-reload
132
-
133
-%post kubeadm
134
-systemctl daemon-reload
135
-systemctl stop kubelet
136
-systemctl enable kubelet
137
-
138
-%preun kubeadm
139
-if [ $1 -eq 0 ]; then
140
-    systemctl stop kubelet
141
-fi
142
-
143
-%postun
144
-if [ $1 -eq 0 ]; then
145
-    # Package deletion
146
-    userdel kube
147
-    groupdel kube
148
-    systemctl daemon-reload
149
-fi
150
-
151
-%postun kubeadm
152
-if [ $1 -eq 0 ]; then
153
-    systemctl daemon-reload
154
-fi
155
-
156
-%files
157
-%defattr(-,root,root)
158
-%{_bindir}/cloud-controller-manager
159
-%{_bindir}/hyperkube
160
-%{_bindir}/kube-aggregator
161
-%{_bindir}/kube-apiserver
162
-%{_bindir}/kube-controller-manager
163
-%{_bindir}/kubelet
164
-%{_bindir}/kube-proxy
165
-%{_bindir}/kube-scheduler
166
-%{_bindir}/kubectl
167
-%{_bindir}/kubefed
168
-%{_lib}/systemd/system/kube-apiserver.service
169
-%{_lib}/systemd/system/kubelet.service
170
-%{_lib}/systemd/system/kube-scheduler.service
171
-%{_lib}/systemd/system/kube-controller-manager.service
172
-%{_lib}/systemd/system/kube-proxy.service
173
-%{_lib}/tmpfiles.d/kubernetes.conf
174
-%dir %{_sysconfdir}/%{name}
175
-%dir /var/lib/kubelet
176
-%dir /var/run/kubernetes
177
-%config(noreplace) %{_sysconfdir}/%{name}/config
178
-%config(noreplace) %{_sysconfdir}/%{name}/apiserver
179
-%config(noreplace) %{_sysconfdir}/%{name}/controller-manager
180
-%config(noreplace) %{_sysconfdir}/%{name}/proxy
181
-%config(noreplace) %{_sysconfdir}/%{name}/kubelet
182
-%config(noreplace) %{_sysconfdir}/%{name}/kubeconfig
183
-%config(noreplace) %{_sysconfdir}/%{name}/scheduler
184
-
185
-%files kubeadm
186
-%defattr(-,root,root)
187
-%{_bindir}/kubeadm
188
-/etc/systemd/system/kubelet.service
189
-/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
190
-
191
-%files pause
192
-%defattr(-,root,root)
193
-%{_bindir}/pause-%{archname}
194
-
195
-%changelog
196
-*   Tue Jan 30 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-6
197
--   Fix password issue in cascade cloud provider.
198
-*   Tue Jan 23 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-5
199
--   Add Cascade cloud provider.
200
-*   Wed Nov 15 2017 Alexey Makhalov <amakhalov@vmware.com> 1.8.1-4
201
--   Aarch64 support
202
-*   Wed Nov 15 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-3
203
--   Specify --kubeconfig to pass in config file.
204
-*   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-2
205
--   Specify API server via kubeconfig file.
206
-*   Wed Nov 01 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-1
207
--   k8s v1.8.1.
208
-*   Mon Sep 18 2017 Alexey Makhalov <amakhalov@vmware.com> 1.7.5-2
209
--   Requires util-linux or toybox
210
--   Remove shadow from requires and use explicit tools for post actions
211
-*   Mon Sep 11 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.5-1
212
--   k8s v1.7.5.
213
-*   Thu Aug 03 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-3
214
--   PhotonOS based k8s pause container.
215
-*   Sat Jul 22 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-2
216
--   Split kubeadm into its own pkg.
217
-*   Fri Jul 14 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-1
218
--   Upgrade kubernetes to v1.7.0.
219
-*   Tue May 09 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-3
220
--   Fix kubernetes dependencies.
221
-*   Thu May 04 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-2
222
--   Include cloud-controller-manager, kube-aggregator binaries.
223
-*   Tue Mar 28 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-1
224
--   Build kubernetes 1.6.0 from source.
225
-*   Mon Feb 13 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.5.2-3
226
--   Added kubeadm, kubefed, dns, discovery to package.
227
-*   Fri Jan 27 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-2
228
--   Added /lib/tmpfiles.d/kubernetes.conf.
229
-*   Thu Jan 19 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-1
230
--   Upgraded to version 1.5.2
231
-*   Fri Oct 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.4-1
232
--   Upgraded to version 1.4.4
233
-*   Wed Sep 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.0-1
234
--   Upgraded to version 1.4.0
235
-*   Fri Jun 24 2016 Xiaolin Li <xiaolinl@vmware.com> 1.2.4-1
236
--   Upgraded to version 1.2.4
237
-*   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-4
238
--   GA - Bump release of all rpms
239
-*   Wed May 18 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-3
240
--   Fix if syntax
241
-*   Thu May 05 2016 Kumar Kaushik <kaushikk@vmware.com> 1.1.8-2
242
--   Adding support to pre/post/un scripts for package upgrade.
243
-*   Tue Feb 23 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 1.1.8-1
244
--   Upgraded to version 1.1.8
245
-*   Mon Aug 3 2015 Tom Scanlan <tscanlan@vmware.com> 1.0.2-1
246
--   bump up to latest release
247
-*   Thu Jul 23 2015 Vinay Kulkarni <kulkarniv@vmware.com> 1.0.1-1
248
--   Upgrade to kubernetes v1.0.1
249
-*   Tue Mar 10 2015 Divya Thaluru <dthaluru@vmware.com> 0.12.1-1
250
--   Initial build. First version
... ...
@@ -9,62 +9,64 @@ ARCH=x86_64
9 9
 #
10 10
 # Docker images for kubernetes artifacts
11 11
 #
12
-K8S_VER=`cat ${SPEC_DIR}/kubernetes/kubernetes.spec | grep "^Version:" | cut -d: -f2 | tr -d ' '`
13
-K8S_VER_REL=${K8S_VER}-`cat ${SPEC_DIR}/kubernetes/kubernetes.spec | grep "^Release:" | cut -d: -f2 | tr -d ' ' | cut -d% -f1`
14
-K8S_RPM=kubernetes-${K8S_VER_REL}${DIST_TAG}.${ARCH}.rpm
15
-K8S_RPM_FILE=../../../stage/RPMS/x86_64/${K8S_RPM}
16
-K8S_PAUSE_RPM=kubernetes-pause-${K8S_VER_REL}${DIST_TAG}.${ARCH}.rpm
17
-K8S_PAUSE_RPM_FILE=../../../stage/RPMS/x86_64/${K8S_PAUSE_RPM}
12
+for file in ${SPEC_DIR}/kubernetes/kubernetes-*.spec; do
13
+    K8S_VER=`cat ${file} | grep "^Version:" | cut -d: -f2 | tr -d ' '`
14
+    K8S_VER_REL=${K8S_VER}-`cat ${file} | grep "^Release:" | cut -d: -f2 | tr -d ' ' | cut -d% -f1`
15
+    K8S_RPM=kubernetes-${K8S_VER_REL}${DIST_TAG}.${ARCH}.rpm
16
+    K8S_RPM_FILE=../../../stage/RPMS/x86_64/${K8S_RPM}
17
+    K8S_PAUSE_RPM=kubernetes-pause-${K8S_VER_REL}${DIST_TAG}.${ARCH}.rpm
18
+    K8S_PAUSE_RPM_FILE=../../../stage/RPMS/x86_64/${K8S_PAUSE_RPM}
18 19
 
19
-if [ ! -f ${K8S_RPM_FILE} ]
20
-then
21
-    echo "Kubernetes RPM ${K8S_RPM_FILE} not found. Exiting.."
22
-    exit 1
23
-fi
24
-
25
-K8S_BINS=(kube-apiserver kube-controller-manager kube-proxy kube-scheduler)
26
-for K8S_BIN in ${K8S_BINS[*]}; do
27
-    IMG_NAME=vmware/photon-${DIST_VER}-${K8S_BIN}-amd64:v${K8S_VER}
28
-    IMG_ID=`docker images -q ${IMG_NAME} 2> /dev/null`
29
-    if [[ ! -z "${IMG_ID}" ]]; then
30
-        echo "Removing image ${IMG_NAME}"
31
-        docker rmi -f ${IMG_NAME}
20
+    if [ ! -f ${K8S_RPM_FILE} ]
21
+    then
22
+        echo "Kubernetes RPM ${K8S_RPM_FILE} not found. Exiting.."
23
+        exit 1
32 24
     fi
33
-done
34 25
 
35
-mkdir -p tmp/k8s
36
-cp ${K8S_RPM_FILE} tmp/k8s/
37
-cp ${K8S_PAUSE_RPM_FILE} tmp/k8s/
38
-pushd ./tmp/k8s
39
-rpm2cpio ${K8S_RPM} | cpio -vid
40
-rpm2cpio ${K8S_PAUSE_RPM} | cpio -vid
41
-popd
26
+    K8S_BINS=(kube-apiserver kube-controller-manager kube-proxy kube-scheduler)
27
+    for K8S_BIN in ${K8S_BINS[*]}; do
28
+        IMG_NAME=vmware/photon-${DIST_VER}-${K8S_BIN}-amd64:v${K8S_VER}
29
+        IMG_ID=`docker images -q ${IMG_NAME} 2> /dev/null`
30
+        if [[ ! -z "${IMG_ID}" ]]; then
31
+            echo "Removing image ${IMG_NAME}"
32
+            docker rmi -f ${IMG_NAME}
33
+        fi
34
+    done
42 35
 
43
-for K8S_BIN in ${K8S_BINS[*]}; do
44
-    IMG_NAME=vmware/photon-${DIST_VER}-${K8S_BIN}-amd64:v${K8S_VER}
45
-    K8S_TAR_NAME=${K8S_BIN}-v${K8S_VER_REL}.tar
46
-    docker build --rm -t ${IMG_NAME} -f ./Dockerfile.${K8S_BIN} .
47
-    docker save -o ${K8S_TAR_NAME} ${IMG_NAME}
48
-    gzip ${K8S_TAR_NAME}
49
-    mv -f ${K8S_TAR_NAME}.gz ${STAGE_DIR}/docker_images/
50
-done
36
+    mkdir -p tmp/k8s
37
+    cp ${K8S_RPM_FILE} tmp/k8s/
38
+    cp ${K8S_PAUSE_RPM_FILE} tmp/k8s/
39
+    pushd ./tmp/k8s
40
+    rpm2cpio ${K8S_RPM} | cpio -vid
41
+    rpm2cpio ${K8S_PAUSE_RPM} | cpio -vid
42
+    popd
51 43
 
44
+    for K8S_BIN in ${K8S_BINS[*]}; do
45
+        IMG_NAME=vmware/photon-${DIST_VER}-${K8S_BIN}-amd64:v${K8S_VER}
46
+        K8S_TAR_NAME=${K8S_BIN}-v${K8S_VER_REL}.tar
47
+        docker build --rm -t ${IMG_NAME} -f ./Dockerfile.${K8S_BIN} .
48
+        docker save -o ${K8S_TAR_NAME} ${IMG_NAME}
49
+        gzip ${K8S_TAR_NAME}
50
+        mv -f ${K8S_TAR_NAME}.gz ${STAGE_DIR}/docker_images/
51
+    done
52 52
 
53
-#
54
-# K8S Pause container
55
-#
56
-PAUSE_IMG_NAME=vmware/photon-${DIST_VER}-pause-amd64:v${K8S_VER}
57
-PAUSE_TAR_NAME=k8s-pause-v${K8S_VER_REL}.tar
58 53
 
59
-PAUSE_IMG_ID=`docker images -q ${PAUSE_IMG_NAME} 2> /dev/null`
60
-if [[ ! -z "${PAUSE_IMG_ID}" ]]; then
61
-    echo "Removing image ${PAUSE_IMG_NAME}"
62
-    docker rmi -f ${PAUSE_IMG_NAME}
63
-fi
54
+    #
55
+    # K8S Pause container
56
+    #
57
+    PAUSE_IMG_NAME=vmware/photon-${DIST_VER}-pause-amd64:v${K8S_VER}
58
+    PAUSE_TAR_NAME=k8s-pause-v${K8S_VER_REL}.tar
59
+
60
+    PAUSE_IMG_ID=`docker images -q ${PAUSE_IMG_NAME} 2> /dev/null`
61
+    if [[ ! -z "${PAUSE_IMG_ID}" ]]; then
62
+        echo "Removing image ${PAUSE_IMG_NAME}"
63
+        docker rmi -f ${PAUSE_IMG_NAME}
64
+    fi
64 65
 
65
-docker build --rm -t ${PAUSE_IMG_NAME} -f ./Dockerfile.pause .
66
-docker save -o ${PAUSE_TAR_NAME} ${PAUSE_IMG_NAME}
67
-gzip ${PAUSE_TAR_NAME}
68
-mv -f ${PAUSE_TAR_NAME}.gz ${STAGE_DIR}/docker_images/
66
+    docker build --rm -t ${PAUSE_IMG_NAME} -f ./Dockerfile.pause .
67
+    docker save -o ${PAUSE_TAR_NAME} ${PAUSE_IMG_NAME}
68
+    gzip ${PAUSE_TAR_NAME}
69
+    mv -f ${PAUSE_TAR_NAME}.gz ${STAGE_DIR}/docker_images/
69 70
 
70
-rm -rf ./tmp
71
+    rm -rf ./tmp
72
+done