Browse code

Upgrade kubernetes packages to fix numerous build issues in k8s-dashboard

The k8s-dashboard build is quite unstable at the moment, due to
problems with the version that we are currently using in Photon OS
1.0. Fix it by upgrading to version 1.8.3 that is known to work well
in Photon OS 2.0.

To handle dependencies, this commit encapulates changes from the
following commits in Photon OS 2.0:

- d5207f80f Fix build issue in k8s dashboard
- a7f9c4ba2 Update nginx to 1.13.8 to support nginx-ingress
- fb8b92784 Upgrade k8s,calico,calico-ci,k8s-dashboard,k8s-dns and
nginx-ingress
- 65fb8a8ff Update calico, cni, flannel, and calico-cni local-cache
build.
- 5f0a577b3 Update calico-node and calico-cni

Change-Id: If67c43d4e702fbcbb06297e0dd373a82b678ebdb
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/5168
Reviewed-by: Sharath George
Tested-by: Sharath George

Srivatsa S. Bhat authored on 2018/05/19 03:28:48
Showing 11 changed files
... ...
@@ -1,11 +1,13 @@
1 1
 Summary:        Calico networking for CNI
2 2
 Name:           calico-cni
3
-Version:        1.11.0
3
+Version:        1.11.2
4 4
 Release:        1%{?dist}
5 5
 License:        ASL 2.0
6 6
 URL:            https://github.com/projectcalico/cni-plugin
7 7
 Source0:        %{name}-%{version}.tar.gz
8
-%define sha1 calico-cni=0fee124daa5e3a5f72e9af28ca1df61e6c2443c3
8
+%define sha1 calico-cni=c12ce655eb5b1cd42c3976d6bf4ac3ebcbc4dc86
9
+Source1:        %{name}-vendor-cache-%{version}.tar.gz
10
+%define sha1 calico-cni-vendor-cache=7c64de41b90cc74231090441ff359936689737df
9 11
 Group:          Development/Tools
10 12
 Vendor:         VMware, Inc.
11 13
 Distribution:   Photon
... ...
@@ -32,9 +34,11 @@ cd bin
32 32
 export GOBIN=`pwd`
33 33
 export PATH=$PATH:$GOBIN
34 34
 cd ../src/github.com/projectcalico/cni-plugin
35
+install %{SOURCE1} .
36
+mkdir -p ~/.glide
37
+tar -C ~/.glide -xf %{SOURCE1}
35 38
 glide install --strip-vendor
36 39
 mkdir -p dist
37
-make dist/portmap
38 40
 CGO_ENABLED=0 go build -v -i -o dist/calico -ldflags "-X main.VERSION= -s -w" calico.go
39 41
 CGO_ENABLED=0 go build -v -i -o dist/calico-ipam -ldflags "-X main.VERSION= -s -w" ipam/calico-ipam.go
40 42
 
... ...
@@ -43,7 +47,6 @@ cd ../build/src/github.com/projectcalico/cni-plugin
43 43
 install -vdm 755 %{buildroot}/opt/cni/bin
44 44
 install -vpm 0755 -t %{buildroot}/opt/cni/bin/ dist/calico
45 45
 install -vpm 0755 -t %{buildroot}/opt/cni/bin/ dist/calico-ipam
46
-install -vpm 0755 -t %{buildroot}/opt/cni/bin/ dist/portmap
47 46
 install -vdm 0755 %{buildroot}/usr/share/calico-cni/k8s
48 47
 install -vpm 0755 -t %{buildroot}/usr/share/calico-cni/k8s/ k8s-install/scripts/install-cni.sh
49 48
 install -vpm 0755 -t %{buildroot}/usr/share/calico-cni/k8s/ k8s-install/scripts/calico.conf.default
... ...
@@ -52,11 +55,12 @@ install -vpm 0755 -t %{buildroot}/usr/share/calico-cni/k8s/ k8s-install/scripts/
52 52
 %defattr(-,root,root)
53 53
 /opt/cni/bin/calico
54 54
 /opt/cni/bin/calico-ipam
55
-/opt/cni/bin/portmap
56 55
 /usr/share/calico-cni/k8s/install-cni.sh
57 56
 /usr/share/calico-cni/k8s/calico.conf.default
58 57
 
59 58
 %changelog
59
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.11.2-1
60
+-   calico-cni v1.11.2 and support to cache-build dependencies in our repo.
60 61
 *   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.11.0-1
61 62
 -   calico-cni v1.11.0.
62 63
 *   Thu Oct 12 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.10.0-1
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Calico node and documentation for project calico.
2 2
 Name:           calico
3
-Version:        2.6.2
3
+Version:        2.6.7
4 4
 Release:        1%{?dist}
5 5
 License:        Apache-2.0
6 6
 URL:            https://github.com/projectcalico/calico
7 7
 Source0:        %{name}-%{version}.tar.gz
8
-%define sha1 calico=29e00d752e930121844eea4ebcef503a447c32d5
8
+%define sha1 calico=d74b2103f84ed470322b5f33b75cf552db93d830
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -50,6 +50,8 @@ sed -i 's/. startup.env/source \/startup.env/g' %{buildroot}/usr/share/calico/do
50 50
 /usr/share/calico/docker/fs/*
51 51
 
52 52
 %changelog
53
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 2.6.7-1
54
+-   Calico Node v2.6.7.
53 55
 *   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 2.6.2-1
54 56
 -   Calico Node v2.6.2.
55 57
 *   Tue Oct 24 2017 Vinay Kulkarni <kulkarniv@vmware.com> 2.5.1-1
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Container Network Interface (CNI) plugins
2 2
 Name:           cni
3
-Version:        0.5.1
3
+Version:        0.6.0
4 4
 Release:        1%{?dist}
5 5
 License:        ASL 2.0
6 6
 URL:            https://github.com/containernetworking/cni
7 7
 Source0:        https://github.com/containernetworking/cni/archive/%{name}-v%{version}.tar.gz
8
-%define sha1 cni=c704cff26d8e786ca0efbd1751bf51fb7f64f1b3
8
+%define sha1 cni=f273e53c6d019d5cc9dfb75b48e619aa52abcce7
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -17,10 +17,10 @@ BuildRequires:  go >= 1.5
17 17
 The CNI (Container Network Interface) project consists of a specification and libraries for writing plugins to configure network interfaces in Linux containers, along with a number of supported plugins.
18 18
 
19 19
 %prep
20
-%setup -n %{name}-%{version}
20
+%setup -n plugins-%{version}
21 21
 
22 22
 %build
23
-./build
23
+./build.sh
24 24
 
25 25
 %install
26 26
 install -vdm 644 %{buildroot}%{_default_cni_plugins_conf_dir}
... ...
@@ -39,6 +39,8 @@ make -k check |& tee %{_specdir}/%{name}-check-log || %{nocheck}
39 39
 %{_default_cni_plugins_bin_dir}/*
40 40
 
41 41
 %changelog
42
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 0.6.0-1
43
+-   cni v0.6.0.
42 44
 *   Tue Oct 24 2017 Vinay Kulkarni <kulkarniv@vmware.com> 0.5.1-1
43 45
 -   Version update
44 46
 *   Thu Feb 16 2017 Vinay Kulkarni <kulkarniv@vmware.com> 0.4.0-1
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Overlay network for containers based on etcd
2 2
 Name:           flannel
3
-Version:        0.9.0
3
+Version:        0.9.1
4 4
 Release:        1%{?dist}
5 5
 License:        ASL 2.0
6 6
 URL:            https://github.com/coreos/flannel
7 7
 Source0:        https://github.com/coreos/flannel/archive/%{name}-%{version}.tar.gz
8
-%define sha1 flannel=3d27b1d1747b9c3706a711955b0f9a67046b0841
8
+%define sha1 flannel=6182ef01f4ce21c1173c3124983b4d2b9331d28a
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -97,6 +97,8 @@ popd
97 97
 %config(noreplace) %{_sysconfdir}/flannel/flanneld
98 98
 
99 99
 %changelog
100
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 0.9.1-1
101
+-   Flannel 0.9.1.
100 102
 *   Fri Nov 17 2017 Vinay Kulkarni <kulkarniv@vmware.com> 0.9.0-1
101 103
 -   Flannel 0.9.0.
102 104
 *   Thu Oct 12 2017 Vinay Kulkarni <kulkarniv@vmware.com> 0.8.0-2
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Kubernetes Dashboard UI
2 2
 Name:           kubernetes-dashboard
3
-Version:        1.6.3
4
-Release:        2%{?dist}
3
+Version:        1.8.3
4
+Release:        1%{?dist}
5 5
 License:        Apache-2.0
6 6
 URL:            https://github.com/kubernetes/dashboard
7
-Source0:        %{name}-v%{version}.tar.gz
8
-%define sha1    kubernetes-dashboard=8e06cb5cd145ffa5c691c3af5fc6e49caececfb2
7
+Source0:        %{name}-%{version}.tar.gz
8
+%define sha1    kubernetes-dashboard=d0e85648129f6b480773539dc2a83e04f85c76f1
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -15,7 +15,6 @@ BuildRequires:  glibc-devel
15 15
 BuildRequires:  go
16 16
 BuildRequires:  linux-api-headers
17 17
 BuildRequires:  nodejs
18
-BuildRequires:  nodejs
19 18
 BuildRequires:  openjdk
20 19
 BuildRequires:  openjre
21 20
 BuildRequires:  which
... ...
@@ -30,10 +29,9 @@ Kubernetes Dashboard UI.
30 30
 
31 31
 %build
32 32
 export PATH=${PATH}:/usr/bin
33
-sed -i 's/"google-closure-library": "\*"/"google-closure-library": "v20170521"/' ./bower.json
34
-npm install
35
-npm install babel-loader@7.1.1
36
-./build/postinstall.sh
33
+npm install --unsafe-perm
34
+#Remove the lines which strips the debuginfo. 
35
+sed -i '/https:\/\/golang.org\/cmd\/link\//,+2d' ./build/backend.js
37 36
 ./node_modules/.bin/gulp build
38 37
 
39 38
 %install
... ...
@@ -52,6 +50,8 @@ cp -p -r ./src/deploy/Dockerfile %{buildroot}/opt/k8dashboard/
52 52
 /opt/k8dashboard/public/*
53 53
 
54 54
 %changelog
55
+*    Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.8.3-1
56
+-    kubernetes-dashboard 1.8.3.
55 57
 *    Tue Apr 03 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.6.3-2
56 58
 -    Fix build break in google-closure-library.
57 59
 *    Mon Sep 11 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.3-1
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Kubernetes DNS
2 2
 Name:           kubernetes-dns
3
-Version:        1.14.6
4
-Release:        2%{?dist}
3
+Version:        1.14.8
4
+Release:        1%{?dist}
5 5
 License:        ASL 2.0
6 6
 URL:            https://github.com/kubernetes/dns/archive/%{version}.tar.gz
7 7
 Source0:        kubernetes-dns-%{version}.tar.gz
8
-%define sha1    kubernetes-dns-%{version}.tar.gz=456f28dcb52d5338ce076d62051e33b827172b2a
8
+%define sha1    kubernetes-dns-%{version}.tar.gz=cad22fbc8499901262dfea3da504eabb7f616129
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -64,6 +64,8 @@ rm -rf %{buildroot}/*
64 64
 %{_bindir}/sidecar-e2e
65 65
 
66 66
 %changelog
67
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.14.8-1
68
+-   kubernetes-dns 1.14.8.
67 69
 *   Mon Oct 23 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.14.6-2
68 70
 -   Remove go testing framework binary.
69 71
 *   Mon Oct 02 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.14.6-1
... ...
@@ -1,6 +1,8 @@
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
+Binary files kubernetes-original/api/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/api/._.DS_Store differ
2
+Binary files kubernetes-original/api/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/api/.DS_Store differ
3
+diff --no-dereference -uNr kubernetes-original/api/swagger-spec/apps_v1alpha1.json kubernetes-modified/src/k8s.io/kubernetes/api/swagger-spec/apps_v1alpha1.json
4
+--- kubernetes-original/api/swagger-spec/apps_v1alpha1.json	2018-03-20 19:21:10.000000000 +0000
3 5
 @@ -1459,6 +1459,10 @@
4 6
       "photonPersistentDisk": {
5 7
        "$ref": "v1.PhotonPersistentDiskVolumeSource",
... ...
@@ -36,10 +38,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 --no-dereference -uNr 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 +52,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 +76,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 --no-dereference -uNr 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 +90,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 +114,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 --no-dereference -uNr 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 +128,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 +152,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 --no-dereference -uNr 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 +166,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 +190,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 --no-dereference -uNr 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 +204,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 +228,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 --no-dereference -uNr 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 +242,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 +266,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 --no-dereference -uNr 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 +280,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 +304,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 --no-dereference -uNr 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 +318,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 +342,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 +353,60 @@ 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
+Binary files kubernetes-original/cmd/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/._.DS_Store differ
355
+Binary files kubernetes-original/cmd/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/.DS_Store differ
356
+diff --no-dereference -uNr kubernetes-original/cmd/kube-controller-manager/app/BUILD kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD
357
+--- kubernetes-original/cmd/kube-controller-manager/app/BUILD	2018-03-20 19:21:10.000000000 +0000
358
+@@ -86,6 +86,7 @@
365 359
          "//pkg/volume/aws_ebs:go_default_library",
366 360
          "//pkg/volume/azure_dd:go_default_library",
367 361
          "//pkg/volume/azure_file:go_default_library",
368 362
 +        "//pkg/volume/cascade_disk:go_default_library",
369 363
          "//pkg/volume/cinder:go_default_library",
364
+         "//pkg/volume/csi:go_default_library",
370 365
          "//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"
366
+diff --no-dereference -uNr kubernetes-original/cmd/kube-controller-manager/app/plugins.go kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go
367
+--- kubernetes-original/cmd/kube-controller-manager/app/plugins.go	2018-03-20 19:21:10.000000000 +0000
368
+@@ -34,6 +34,7 @@
369
+ 	"k8s.io/kubernetes/pkg/volume/aws_ebs"
370
+ 	"k8s.io/kubernetes/pkg/volume/azure_dd"
371
+ 	"k8s.io/kubernetes/pkg/volume/azure_file"
386 372
 +	"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()...)
373
+ 	"k8s.io/kubernetes/pkg/volume/cinder"
374
+ 	"k8s.io/kubernetes/pkg/volume/csi"
375
+ 	"k8s.io/kubernetes/pkg/volume/fc"
376
+@@ -77,6 +78,7 @@
392 377
  	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
393 378
  	allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
379
+ 	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
394 380
 +	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
395
- 	return allPlugins
396
- }
397
- 
398
-@@ -104,6 +107,7 @@
381
+ 	if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
382
+ 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
383
+ 	}
384
+@@ -106,6 +108,7 @@
399 385
  	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
400 386
  	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
401 387
  	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
402 388
 +	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
- 		}
389
+ 	if !utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
390
+ 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
413 391
  	}
392
+@@ -165,6 +168,7 @@
393
+ 	allPlugins = append(allPlugins, vsphere_volume.ProbeVolumePlugins()...)
394
+ 	allPlugins = append(allPlugins, azure_dd.ProbeVolumePlugins()...)
395
+ 	allPlugins = append(allPlugins, photon_pd.ProbeVolumePlugins()...)
396
++	allPlugins = append(allPlugins, cascade_disk.ProbeVolumePlugins()...)
414 397
  
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 @@
398
+ 	return allPlugins
399
+ }
400
+Binary files kubernetes-original/cmd/kube-controller-manager/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/._.DS_Store differ
401
+Binary files kubernetes-original/cmd/kube-controller-manager/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/kube-controller-manager/.DS_Store differ
402
+diff --no-dereference -uNr kubernetes-original/cmd/kubelet/app/BUILD kubernetes-modified/src/k8s.io/kubernetes/cmd/kubelet/app/BUILD
403
+--- kubernetes-original/cmd/kubelet/app/BUILD	2018-03-20 19:21:10.000000000 +0000
404
+@@ -74,6 +74,7 @@
418 405
          "//pkg/volume/aws_ebs:go_default_library",
419 406
          "//pkg/volume/azure_dd:go_default_library",
420 407
          "//pkg/volume/azure_file:go_default_library",
... ...
@@ -425,9 +414,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 --no-dereference -uNr 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 +425,23 @@ 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
+Binary files kubernetes-original/cmd/kubelet/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/kubelet/._.DS_Store differ
448
+Binary files kubernetes-original/cmd/kubelet/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/cmd/kubelet/.DS_Store differ
449
+Binary files kubernetes-original/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/._.DS_Store differ
450
+Binary files kubernetes-original/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/.DS_Store differ
451
+Binary files kubernetes-original/pkg/apis/core/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/core/._.DS_Store differ
452
+Binary files kubernetes-original/pkg/apis/core/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/core/.DS_Store differ
453
+diff --no-dereference -uNr kubernetes-original/pkg/apis/core/types.go kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/core/types.go
454
+--- kubernetes-original/pkg/apis/core/types.go	2018-03-20 19:21:10.000000000 +0000
485 455
 @@ -316,6 +316,8 @@
486 456
  	// StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
487 457
  	// +optional
... ...
@@ -493,16 +451,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 +477,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 --no-dereference -uNr 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 +495,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 +510,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 +522,29 @@ 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
+Binary files kubernetes-original/pkg/apis/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/._.DS_Store differ
572
+Binary files kubernetes-original/pkg/apis/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/.DS_Store differ
573
+diff --no-dereference -uNr kubernetes-original/pkg/apis/extensions/types.go kubernetes-modified/src/k8s.io/kubernetes/pkg/apis/extensions/types.go
574
+--- kubernetes-original/pkg/apis/extensions/types.go	2018-03-20 19:21:10.000000000 +0000
575
+@@ -925,6 +925,7 @@
574 576
  	PortworxVolume        FSType = "portworxVolume"
575 577
  	ScaleIO               FSType = "scaleIO"
578
+ 	CSI                   FSType = "csi"
576 579
 +	CascadeDisk           FSType = "cascadeDisk"
577 580
  	All                   FSType = "*"
578 581
  )
579 582
  
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 @@
583
+Binary files kubernetes-original/pkg/cloudprovider/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/._.DS_Store differ
584
+Binary files kubernetes-original/pkg/cloudprovider/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/.DS_Store differ
585
+diff --no-dereference -uNr kubernetes-original/pkg/cloudprovider/providers/BUILD kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/BUILD
586
+--- kubernetes-original/pkg/cloudprovider/providers/BUILD	2018-03-20 19:21:10.000000000 +0000
587
+@@ -12,6 +12,7 @@
583 588
      deps = [
584 589
          "//pkg/cloudprovider/providers/aws:go_default_library",
585 590
          "//pkg/cloudprovider/providers/azure:go_default_library",
... ...
@@ -597,17 +560,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 --no-dereference -uNr 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 +728,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 +761,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 +791,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 --no-dereference -uNr 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
 +
... ...
@@ -976,9 +941,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 --no-dereference -uNr 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 +989,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 --no-dereference -uNr 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 +1078,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 +1188,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 +1216,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 --no-dereference -uNr 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 +1439,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 --no-dereference -uNr 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 +1533,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 --no-dereference -uNr 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 +1616,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 +1822,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 --no-dereference -uNr 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 +1884,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 +1892,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 +1904,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 +1926,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 +1938,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 +2062,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 +2089,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 +2220,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 --no-dereference -uNr 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
 +
... ...
@@ -2517,16 +2521,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 --no-dereference -uNr 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 --no-dereference -uNr 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 +2794,9 @@ 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 --no-dereference -uNr kubernetes-original/pkg/cloudprovider/providers/cascade/utils.go kubernetes-modified/src/k8s.io/kubernetes/pkg/cloudprovider/providers/cascade/utils.go
2794
+--- kubernetes-original/pkg/cloudprovider/providers/cascade/utils.go	1970-01-01 00:00:00.000000000 +0000
2795 2795
 @@ -0,0 +1,25 @@
2796 2796
 +package cascade
2797 2797
 +
... ...
@@ -2820,9 +2824,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 --no-dereference -uNr 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 +2835,14 @@ 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
+Binary files kubernetes-original/pkg/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/._.DS_Store differ
2835
+Binary files kubernetes-original/pkg/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/.DS_Store differ
2836
+Binary files kubernetes-original/pkg/printers/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/printers/._.DS_Store differ
2837
+Binary files kubernetes-original/pkg/printers/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/printers/.DS_Store differ
2838
+diff --no-dereference -uNr kubernetes-original/pkg/printers/internalversion/describe.go kubernetes-modified/src/k8s.io/kubernetes/pkg/printers/internalversion/describe.go
2839
+--- kubernetes-original/pkg/printers/internalversion/describe.go	2018-03-20 19:21:10.000000000 +0000
2840
+@@ -751,6 +751,8 @@
2837 2841
  			printFlexVolumeSource(volume.VolumeSource.FlexVolume, w)
2838 2842
  		case volume.VolumeSource.Flocker != nil:
2839 2843
  			printFlockerVolumeSource(volume.VolumeSource.Flocker, w)
... ...
@@ -2843,8 +2851,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 +2865,31 @@ 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
+Binary files kubernetes-original/pkg/security/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/security/._.DS_Store differ
2870
+Binary files kubernetes-original/pkg/security/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/security/.DS_Store differ
2871
+Binary files kubernetes-original/pkg/security/podsecuritypolicy/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/security/podsecuritypolicy/._.DS_Store differ
2872
+Binary files kubernetes-original/pkg/security/podsecuritypolicy/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/security/podsecuritypolicy/.DS_Store differ
2873
+diff --no-dereference -uNr kubernetes-original/pkg/security/podsecuritypolicy/util/util.go kubernetes-modified/src/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/util.go
2874
+--- kubernetes-original/pkg/security/podsecuritypolicy/util/util.go	2018-03-20 19:21:10.000000000 +0000
2875
+@@ -68,6 +68,7 @@
2873 2876
  		string(extensions.PortworxVolume),
2874 2877
  		string(extensions.ScaleIO),
2878
+ 		string(extensions.CSI),
2875 2879
 +		string(extensions.CascadeDisk),
2876 2880
  	)
2877 2881
  	return fstypes
2878 2882
  }
2879
-@@ -128,6 +129,8 @@
2883
+@@ -129,6 +130,8 @@
2880 2884
  		return extensions.PortworxVolume, nil
2881 2885
  	case v.ScaleIO != nil:
2882 2886
  		return extensions.ScaleIO, nil
... ...
@@ -2886,10 +2898,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 --no-dereference -uNr 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 +2937,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 +2952,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 +3029,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 +3037,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 +3114,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 +3127,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 +3171,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 --no-dereference -uNr 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 +3218,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 --no-dereference -uNr 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 +3614,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 --no-dereference -uNr 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 +3725,31 @@ 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 --no-dereference -uNr 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
+Binary files kubernetes-original/pkg/volume/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/._.DS_Store differ
3731
+Binary files kubernetes-original/pkg/volume/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/pkg/volume/.DS_Store differ
3732
+Binary files kubernetes-original/plugin/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/._.DS_Store differ
3733
+Binary files kubernetes-original/plugin/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/.DS_Store differ
3734
+Binary files kubernetes-original/plugin/pkg/admission/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/._.DS_Store differ
3735
+Binary files kubernetes-original/plugin/pkg/admission/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/.DS_Store differ
3736
+Binary files kubernetes-original/plugin/pkg/admission/persistentvolume/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/._.DS_Store differ
3737
+Binary files kubernetes-original/plugin/pkg/admission/persistentvolume/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/.DS_Store differ
3738
+diff --no-dereference -uNr kubernetes-original/plugin/pkg/admission/persistentvolume/label/admission.go kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label/admission.go
3739
+--- kubernetes-original/plugin/pkg/admission/persistentvolume/label/admission.go	2018-03-20 19:21:10.000000000 +0000
3740
+@@ -27,6 +27,7 @@
3741
+ 	api "k8s.io/kubernetes/pkg/apis/core"
3742
+ 	"k8s.io/kubernetes/pkg/cloudprovider"
3743
+ 	"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
3744
++	"k8s.io/kubernetes/pkg/cloudprovider/providers/cascade"
3745
+ 	"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
3733 3746
  	kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
3734 3747
  	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 3748
 @@ -50,6 +51,7 @@
3741 3749
  	ebsVolumes       aws.Volumes
3742 3750
  	cloudConfig      []byte
... ...
@@ -3746,8 +3757,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 +3772,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 +3821,61 @@ 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
+Binary files kubernetes-original/plugin/pkg/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/._.DS_Store differ
3814
+Binary files kubernetes-original/plugin/pkg/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/plugin/pkg/.DS_Store differ
3815
+Binary files kubernetes-original/staging/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/._.DS_Store differ
3816
+Binary files kubernetes-original/staging/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/.DS_Store differ
3817
+Binary files kubernetes-original/staging/src/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/._.DS_Store differ
3818
+Binary files kubernetes-original/staging/src/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/.DS_Store differ
3819
+Binary files kubernetes-original/staging/src/k8s.io/api/core/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/core/._.DS_Store differ
3820
+Binary files kubernetes-original/staging/src/k8s.io/api/core/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/core/.DS_Store differ
3821
+diff --no-dereference -uNr 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
3822
+--- kubernetes-original/staging/src/k8s.io/api/core/v1/generated.pb.go	2018-03-20 19:21:10.000000000 +0000
3823
+@@ -35,6 +35,7 @@
3818 3824
  		Binding
3825
+ 		CSIPersistentVolumeSource
3819 3826
  		Capabilities
3820 3827
 +		CascadeDiskVolumeSource
3821 3828
  		CephFSPersistentVolumeSource
3822 3829
  		CephFSVolumeSource
3823 3830
  		CinderVolumeSource
3824
-@@ -992,6 +993,12 @@
3825
- 	return fileDescriptorGenerated, []int{177}
3826
- }
3831
+@@ -260,9 +261,11 @@
3832
+ func (*AvoidPods) ProtoMessage()               {}
3833
+ func (*AvoidPods) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
3827 3834
  
3835
+-func (m *AzureDiskVolumeSource) Reset()                    { *m = AzureDiskVolumeSource{} }
3836
+-func (*AzureDiskVolumeSource) ProtoMessage()               {}
3837
+-func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
3828 3838
 +func (m *CascadeDiskVolumeSource) Reset()      { *m = CascadeDiskVolumeSource{} }
3829 3839
 +func (*CascadeDiskVolumeSource) ProtoMessage() {}
3830 3840
 +func (*CascadeDiskVolumeSource) Descriptor() ([]byte, []int) {
3831
-+	return fileDescriptorGenerated, []int{178}
3841
++	return fileDescriptorGenerated, []int{4}
3832 3842
 +}
3843
+ 
3844
+ func (m *AzureFilePersistentVolumeSource) Reset()      { *m = AzureFilePersistentVolumeSource{} }
3845
+ func (*AzureFilePersistentVolumeSource) ProtoMessage() {}
3846
+@@ -1040,6 +1043,11 @@
3847
+ 	return fileDescriptorGenerated, []int{185}
3848
+ }
3849
+ 
3850
++func (m *AzureDiskVolumeSource) Reset()                    { *m = AzureDiskVolumeSource{} }
3851
++func (*AzureDiskVolumeSource) ProtoMessage()               {}
3852
++func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{186} }
3853
++
3833 3854
 +
3834 3855
  func init() {
3835 3856
  	proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource")
3836 3857
  	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")
3858
+@@ -1051,6 +1059,7 @@
3839 3859
  	proto.RegisterType((*Binding)(nil), "k8s.io.api.core.v1.Binding")
3860
+ 	proto.RegisterType((*CSIPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CSIPersistentVolumeSource")
3840 3861
  	proto.RegisterType((*Capabilities)(nil), "k8s.io.api.core.v1.Capabilities")
3841 3862
 +	proto.RegisterType((*CascadeDiskVolumeSource)(nil), "k8s.io.api.core.v1.CascadeDiskVolumeSource")
3842 3863
  	proto.RegisterType((*CephFSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CephFSPersistentVolumeSource")
3843 3864
  	proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource")
3844 3865
  	proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource")
3845
-@@ -1523,6 +1531,32 @@
3866
+@@ -1613,6 +1622,32 @@
3846 3867
  	return i, nil
3847 3868
  }
3848 3869
  
... ...
@@ -3876,45 +3908,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 +3997,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 +4059,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 +4143,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 +4268,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 +4321,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 --no-dereference -uNr 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
  
... ...
@@ -4220,3 +4395,7 @@ diff -uNr --no-dereference kubernetes-1.8.1/staging/src/k8s.io/api/core/v1/types
4220 4220
  // Adapts a ConfigMap into a volume.
4221 4221
  //
4222 4222
  // The contents of the target ConfigMap's Data field will be presented in a
4223
+Binary files kubernetes-original/staging/src/k8s.io/api/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/._.DS_Store differ
4224
+Binary files kubernetes-original/staging/src/k8s.io/api/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/api/.DS_Store differ
4225
+Binary files kubernetes-original/staging/src/k8s.io/._.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/._.DS_Store differ
4226
+Binary files kubernetes-original/staging/src/k8s.io/.DS_Store and kubernetes-modified/src/k8s.io/kubernetes/staging/src/k8s.io/.DS_Store differ
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        Kubernetes cluster management
2 2
 Name:           kubernetes
3
-Version:        1.8.1
4
-Release:        5%{?dist}
3
+Version:        1.9.6
4
+Release:        1%{?dist}
5 5
 License:        ASL 2.0
6 6
 URL:            https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
7 7
 Source0:        kubernetes-v%{version}.tar.gz
8
-%define sha1    kubernetes-v%{version}.tar.gz=74bad7a52f3fc0b3c70e5ccc986a46a9fdfe358b
8
+%define sha1    kubernetes-v%{version}.tar.gz=6996c0690a38cda1ae5479a4dde7ebfeb590e5fb
9 9
 Source1:        https://github.com/kubernetes/contrib/archive/contrib-0.7.0.tar.gz
10 10
 %define sha1    contrib-0.7.0=47a744da3b396f07114e518226b6313ef4b2203c
11 11
 Patch0:         k8s-cascade.patch
... ...
@@ -62,7 +62,7 @@ popd
62 62
 install -vdm644 %{buildroot}/etc/profile.d
63 63
 install -m 755 -d %{buildroot}%{_bindir}
64 64
 
65
-binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl kubefed)
65
+binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl)
66 66
 for bin in "${binaries[@]}"; do
67 67
   echo "+++ INSTALLING ${bin}"
68 68
   install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/amd64/${bin}
... ...
@@ -157,7 +157,7 @@ fi
157 157
 %{_bindir}/kube-proxy
158 158
 %{_bindir}/kube-scheduler
159 159
 %{_bindir}/kubectl
160
-%{_bindir}/kubefed
160
+#%{_bindir}/kubefed
161 161
 %{_lib}/systemd/system/kube-apiserver.service
162 162
 %{_lib}/systemd/system/kubelet.service
163 163
 %{_lib}/systemd/system/kube-scheduler.service
... ...
@@ -186,6 +186,8 @@ fi
186 186
 %{_bindir}/pause-amd64
187 187
 
188 188
 %changelog
189
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.9.6-1
190
+-   k8s v1.9.6 and Cascade Cloud Provider patch
189 191
 *   Tue Jan 30 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-5
190 192
 -   Fix issue in Cascade cloud provider.
191 193
 *   Tue Jan 23 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-4
... ...
@@ -1,11 +1,11 @@
1 1
 Summary:        NGINX Ingress Controller for Kubernetes
2 2
 Name:           nginx-ingress
3
-Version:        0.9.0
3
+Version:        1.1.1
4 4
 Release:        1%{?dist}
5 5
 License:        Apache-2.0
6 6
 URL:            https://github.com/nginxinc/kubernetes-ingress
7 7
 Source0:        %{name}-%{version}.tar.gz
8
-%define sha1 nginx-ingress=ea71044b1c8298c85cf5f0971100f735f99240ce
8
+%define sha1 nginx-ingress=3978c365d3b83d9c454bde936411a95047ff1320
9 9
 Group:          Development/Tools
10 10
 Vendor:         VMware, Inc.
11 11
 Distribution:   Photon
... ...
@@ -37,5 +37,7 @@ install -vpm 0755 -t %{buildroot}/usr/share/nginx-ingress/docker/ nginx/template
37 37
 /usr/share/nginx-ingress/docker/nginx.*
38 38
 
39 39
 %changelog
40
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.1.1-1
41
+-   Bumped up version to 1.1.1
40 42
 *   Thu Oct 12 2017 Vinay Kulkarni <kulkarniv@vmware.com> 0.9.0-1
41 43
 -   K8S NGINX Ingress Controller for PhotonOS.
42 44
deleted file mode 100644
... ...
@@ -1,14 +0,0 @@
1
-diffsrc/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c
2
-+++ src/http/modules/ngx_http_range_filter_module.c
3
-@@ -377,6 +377,10 @@ ngx_http_range_parse(ngx_http_request_t 
4
-             range->start = start;
5
-             range->end = end;
6
- 
7
-+            if (size > NGX_MAX_OFF_T_VALUE - (end - start)) {
8
-+                return NGX_HTTP_RANGE_NOT_SATISFIABLE;
9
-+            }
10
-+
11
-             size += end - start;
12
- 
13
-             if (ranges-- == 0) {
... ...
@@ -1,16 +1,15 @@
1
-Summary:    High-performance HTTP server and reverse proxy
2
-Name:       nginx
3
-Version:    1.11.13
4
-Release:    4%{?dist}
5
-License:    BSD-2-Clause
6
-URL:        http://nginx.org/download/nginx-1.11.13.tar.gz
7
-Group:      Applications/System
8
-Vendor:     VMware, Inc.
9
-Distribution: Photon
10
-Source0:    %{name}-%{version}.tar.gz
11
-%define sha1 nginx=84f27729754796181dc39d47da761c7e85eb3ae2
12
-Patch0:     CVE-2017-7529.patch
13
-Source1:    nginx.service
1
+Summary:        High-performance HTTP server and reverse proxy
2
+Name:           nginx
3
+Version:        1.13.8
4
+Release:        1%{?dist}
5
+License:        BSD-2-Clause
6
+URL:            http://nginx.org/download/nginx-%{version}.tar.gz
7
+Group:          Applications/System
8
+Vendor:         VMware, Inc.
9
+Distribution:   Photon
10
+Source0:        %{name}-%{version}.tar.gz
11
+%define sha1    nginx=a1f9348c9c46f449a0b549d0519dd34191d30cee
12
+Source1:        nginx.service
14 13
 BuildRequires:  openssl-devel
15 14
 BuildRequires:  pcre-devel
16 15
 %description
... ...
@@ -18,15 +17,14 @@ NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as
18 18
 
19 19
 %prep
20 20
 %setup -q
21
-%patch0 -p0
22 21
 
23 22
 %build
24 23
 ./configure \
25 24
     --prefix=%{_sysconfdir}//nginx              \
26 25
     --sbin-path=/usr/sbin/nginx                 \
27 26
     --conf-path=/etc/nginx/nginx.conf           \
28
-    --pid-path=/var/run/nginx.pid         \
29
-    --lock-path=/var/run/nginx.lock       \
27
+    --pid-path=/var/run/nginx.pid               \
28
+    --lock-path=/var/run/nginx.lock             \
30 29
     --error-log-path=/var/log/nginx/error.log   \
31 30
     --http-log-path=/var/log/nginx/access.log   \
32 31
     --with-http_ssl_module \
... ...
@@ -52,6 +50,8 @@ make -k check |& tee %{_specdir}/%{name}-check-log || %{nocheck}
52 52
 %dir %{_var}/log/nginx
53 53
 
54 54
 %changelog
55
+*   Fri May 18 2018 Srivatsa S. Bhat <srivatsa@csail.mit.edu> 1.13.8-1
56
+-   Update to version 1.13.8 to support nginx-ingress
55 57
 *   Tue Oct 17 2017 Dheeraj Shetty <dheerajs@vmware.com> 1.11.13-4
56 58
 -   Add patch for CVE-2017-7529
57 59
 *   Fri Jun 23 2017 Divya Thaluru <dthaluru@vmware.com> 1.11.13-3