|
...
|
...
|
@@ -1,83 +1,6 @@
|
|
1
|
|
-From a9402d16a92e04e25ede3816872855e9a89fb812 Mon Sep 17 00:00:00 2001
|
|
2
|
|
-From: Bo Gan <ganb@vmware.com>
|
|
3
|
|
-Date: Sun, 10 Jun 2018 02:13:51 -0700
|
|
4
|
|
-Subject: [PATCH] Cascade Kubernetes patches for v1.10.2 (1f4aedb)
|
|
5
|
|
-
|
|
6
|
|
- api/swagger-spec/apps_v1alpha1.json | 21 +
|
|
7
|
|
- api/swagger-spec/apps_v1beta1.json | 21 +
|
|
8
|
|
- api/swagger-spec/apps_v1beta2.json | 21 +
|
|
9
|
|
- api/swagger-spec/batch_v1.json | 21 +
|
|
10
|
|
- api/swagger-spec/batch_v1beta1.json | 21 +
|
|
11
|
|
- api/swagger-spec/batch_v2alpha1.json | 21 +
|
|
12
|
|
- api/swagger-spec/extensions_v1beta1.json | 21 +
|
|
13
|
|
- api/swagger-spec/settings.k8s.io_v1alpha1.json | 21 +
|
|
14
|
|
- api/swagger-spec/v1.json | 25 +
|
|
15
|
|
- cmd/kube-controller-manager/app/BUILD | 1 +
|
|
16
|
|
- cmd/kube-controller-manager/app/plugins.go | 4 +
|
|
17
|
|
- cmd/kubelet/app/BUILD | 1 +
|
|
18
|
|
- cmd/kubelet/app/plugins.go | 2 +
|
|
19
|
|
- pkg/apis/core/types.go | 14 +
|
|
20
|
|
- pkg/apis/core/validation/validation.go | 29 +-
|
|
21
|
|
- pkg/apis/extensions/types.go | 1 +
|
|
22
|
|
- pkg/cloudprovider/providers/BUILD | 2 +
|
|
23
|
|
- pkg/cloudprovider/providers/cascade/BUILD | 56 ++
|
|
24
|
|
- pkg/cloudprovider/providers/cascade/OWNERS | 3 +
|
|
25
|
|
- pkg/cloudprovider/providers/cascade/apitypes.go | 229 ++++++
|
|
26
|
|
- pkg/cloudprovider/providers/cascade/auth.go | 145 ++++
|
|
27
|
|
- pkg/cloudprovider/providers/cascade/cascade.go | 214 +++++
|
|
28
|
|
- .../providers/cascade/cascade_disks.go | 227 ++++++
|
|
29
|
|
- .../providers/cascade/cascade_instances.go | 92 +++
|
|
30
|
|
- .../providers/cascade/cascade_instances_test.go | 44 +
|
|
31
|
|
- .../providers/cascade/cascade_loadbalancer.go | 285 +++++++
|
|
32
|
|
- pkg/cloudprovider/providers/cascade/client.go | 399 ++++++++++
|
|
33
|
|
- pkg/cloudprovider/providers/cascade/oidcclient.go | 297 +++++++
|
|
34
|
|
- pkg/cloudprovider/providers/cascade/restclient.go | 262 ++++++
|
|
35
|
|
- pkg/cloudprovider/providers/cascade/tests_owed | 5 +
|
|
36
|
|
- pkg/cloudprovider/providers/cascade/utils.go | 25 +
|
|
37
|
|
- pkg/cloudprovider/providers/providers.go | 1 +
|
|
38
|
|
- pkg/kubeapiserver/options/plugins.go | 3 +
|
|
39
|
|
- pkg/printers/internalversion/describe.go | 11 +
|
|
40
|
|
- pkg/security/podsecuritypolicy/util/util.go | 3 +
|
|
41
|
|
- pkg/volume/cascade_disk/BUILD | 43 +
|
|
42
|
|
- pkg/volume/cascade_disk/OWNERS | 2 +
|
|
43
|
|
- pkg/volume/cascade_disk/attacher.go | 264 ++++++
|
|
44
|
|
- pkg/volume/cascade_disk/cascade_disk.go | 390 +++++++++
|
|
45
|
|
- pkg/volume/cascade_disk/cascade_util.go | 152 ++++
|
|
46
|
|
- .../admission/persistentvolume/label/admission.go | 54 ++
|
|
47
|
|
- plugin/pkg/admission/vke/BUILD | 60 ++
|
|
48
|
|
- plugin/pkg/admission/vke/admission.go | 554 +++++++++++++
|
|
49
|
|
- plugin/pkg/admission/vke/admission_test.go | 882 +++++++++++++++++++++
|
|
50
|
|
- staging/src/k8s.io/api/core/v1/generated.pb.go | 310 +++++++-
|
|
51
|
|
- staging/src/k8s.io/api/core/v1/types.go | 24 +-
|
|
52
|
|
- 46 files changed, 5254 insertions(+), 29 deletions(-)
|
|
53
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/BUILD
|
|
54
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/OWNERS
|
|
55
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/apitypes.go
|
|
56
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/auth.go
|
|
57
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/cascade.go
|
|
58
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/cascade_disks.go
|
|
59
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/cascade_instances.go
|
|
60
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/cascade_instances_test.go
|
|
61
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
|
|
62
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/client.go
|
|
63
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/oidcclient.go
|
|
64
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/restclient.go
|
|
65
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/tests_owed
|
|
66
|
|
- create mode 100644 pkg/cloudprovider/providers/cascade/utils.go
|
|
67
|
|
- create mode 100644 pkg/volume/cascade_disk/BUILD
|
|
68
|
|
- create mode 100644 pkg/volume/cascade_disk/OWNERS
|
|
69
|
|
- create mode 100644 pkg/volume/cascade_disk/attacher.go
|
|
70
|
|
- create mode 100644 pkg/volume/cascade_disk/cascade_disk.go
|
|
71
|
|
- create mode 100644 pkg/volume/cascade_disk/cascade_util.go
|
|
72
|
|
- create mode 100644 plugin/pkg/admission/vke/BUILD
|
|
73
|
|
- create mode 100644 plugin/pkg/admission/vke/admission.go
|
|
74
|
|
- create mode 100644 plugin/pkg/admission/vke/admission_test.go
|
|
75
|
|
-
|
|
76
|
|
-diff --git a/api/swagger-spec/apps_v1alpha1.json b/api/swagger-spec/apps_v1alpha1.json
|
|
77
|
|
-index 6f54662..0ce6f3f 100644
|
|
78
|
|
-+++ b/api/swagger-spec/apps_v1alpha1.json
|
|
|
1
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/apps_v1alpha1.json kubernetes/api/swagger-spec/apps_v1alpha1.json
|
|
|
2
|
+--- kubernetes-old/api/swagger-spec/apps_v1alpha1.json 2018-04-26 05:17:57.000000000 -0700
|
|
79
|
3
|
@@ -1459,6 +1459,10 @@
|
|
80
|
4
|
"photonPersistentDisk": {
|
|
81
|
5
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
...
|
...
|
@@ -89,10 +12,14 @@ index 6f54662..0ce6f3f 100644
|
|
89
|
89
|
}
|
|
90
|
90
|
}
|
|
91
|
91
|
},
|
|
92
|
|
-@@ -2109,6 +2113,23 @@
|
|
93
|
|
- }
|
|
94
|
|
- }
|
|
95
|
|
- },
|
|
|
92
|
+@@ -2105,6 +2109,23 @@
|
|
|
93
|
+ },
|
|
|
94
|
+ "fsType": {
|
|
|
95
|
+ "type": "string",
|
|
|
96
|
++ "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."
|
|
|
97
|
++ }
|
|
|
98
|
++ }
|
|
|
99
|
++ },
|
|
96
|
100
|
+ "v1.CascadeDiskVolumeSource": {
|
|
97
|
101
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
98
|
102
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -106,17 +33,12 @@ index 6f54662..0ce6f3f 100644
|
|
106
|
106
|
+ },
|
|
107
|
107
|
+ "fsType": {
|
|
108
|
108
|
+ "type": "string",
|
|
109
|
|
-+ "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."
|
|
110
|
|
-+ }
|
|
111
|
|
-+ }
|
|
112
|
|
-+ },
|
|
113
|
|
- "v1.Container": {
|
|
114
|
|
- "id": "v1.Container",
|
|
115
|
|
- "description": "A single application container that you want to run within a pod.",
|
|
116
|
|
-diff --git a/api/swagger-spec/apps_v1beta1.json b/api/swagger-spec/apps_v1beta1.json
|
|
117
|
|
-index a4b090a..6fc1e0a 100644
|
|
118
|
|
-+++ b/api/swagger-spec/apps_v1beta1.json
|
|
|
109
|
+ "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."
|
|
|
110
|
+ }
|
|
|
111
|
+ }
|
|
|
112
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/apps_v1beta1.json kubernetes/api/swagger-spec/apps_v1beta1.json
|
|
|
113
|
+--- kubernetes-old/api/swagger-spec/apps_v1beta1.json 2018-04-26 05:17:57.000000000 -0700
|
|
119
|
114
|
@@ -4483,6 +4483,10 @@
|
|
120
|
115
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
121
|
116
|
"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
|
|
...
|
...
|
@@ -128,10 +50,14 @@ index a4b090a..6fc1e0a 100644
|
|
128
|
128
|
"projected": {
|
|
129
|
129
|
"$ref": "v1.ProjectedVolumeSource",
|
|
130
|
130
|
"description": "Items for all in one resources secrets, configmaps, and downward API"
|
|
131
|
|
-@@ -5210,6 +5214,23 @@
|
|
132
|
|
- }
|
|
133
|
|
- }
|
|
134
|
|
- },
|
|
|
131
|
+@@ -5206,6 +5210,23 @@
|
|
|
132
|
+ },
|
|
|
133
|
+ "fsType": {
|
|
|
134
|
+ "type": "string",
|
|
|
135
|
++ "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."
|
|
|
136
|
++ }
|
|
|
137
|
++ }
|
|
|
138
|
++ },
|
|
135
|
139
|
+ "v1.CascadeDiskVolumeSource": {
|
|
136
|
140
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
137
|
141
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -145,17 +71,12 @@ index a4b090a..6fc1e0a 100644
|
|
145
|
145
|
+ },
|
|
146
|
146
|
+ "fsType": {
|
|
147
|
147
|
+ "type": "string",
|
|
148
|
|
-+ "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."
|
|
149
|
|
-+ }
|
|
150
|
|
-+ }
|
|
151
|
|
-+ },
|
|
152
|
|
- "v1.ProjectedVolumeSource": {
|
|
153
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
154
|
|
- "description": "Represents a projected volume source",
|
|
155
|
|
-diff --git a/api/swagger-spec/apps_v1beta2.json b/api/swagger-spec/apps_v1beta2.json
|
|
156
|
|
-index b1fcb48..3193163 100644
|
|
157
|
|
-+++ b/api/swagger-spec/apps_v1beta2.json
|
|
|
148
|
+ "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."
|
|
|
149
|
+ }
|
|
|
150
|
+ }
|
|
|
151
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/apps_v1beta2.json kubernetes/api/swagger-spec/apps_v1beta2.json
|
|
|
152
|
+--- kubernetes-old/api/swagger-spec/apps_v1beta2.json 2018-04-26 05:17:57.000000000 -0700
|
|
158
|
153
|
@@ -6849,6 +6849,10 @@
|
|
159
|
154
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
160
|
155
|
"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
|
|
...
|
...
|
@@ -167,10 +88,14 @@ index b1fcb48..3193163 100644
|
|
167
|
167
|
"projected": {
|
|
168
|
168
|
"$ref": "v1.ProjectedVolumeSource",
|
|
169
|
169
|
"description": "Items for all in one resources secrets, configmaps, and downward API"
|
|
170
|
|
-@@ -7576,6 +7580,23 @@
|
|
171
|
|
- }
|
|
172
|
|
- }
|
|
173
|
|
- },
|
|
|
170
|
+@@ -7572,6 +7576,23 @@
|
|
|
171
|
+ },
|
|
|
172
|
+ "fsType": {
|
|
|
173
|
+ "type": "string",
|
|
|
174
|
++ "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."
|
|
|
175
|
++ }
|
|
|
176
|
++ }
|
|
|
177
|
++ },
|
|
174
|
178
|
+ "v1.CascadeDiskVolumeSource": {
|
|
175
|
179
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
176
|
180
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -184,18 +109,13 @@ index b1fcb48..3193163 100644
|
|
184
|
184
|
+ },
|
|
185
|
185
|
+ "fsType": {
|
|
186
|
186
|
+ "type": "string",
|
|
187
|
|
-+ "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."
|
|
188
|
|
-+ }
|
|
189
|
|
-+ }
|
|
190
|
|
-+ },
|
|
191
|
|
- "v1.ProjectedVolumeSource": {
|
|
192
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
193
|
|
- "description": "Represents a projected volume source",
|
|
194
|
|
-diff --git a/api/swagger-spec/batch_v1.json b/api/swagger-spec/batch_v1.json
|
|
195
|
|
-index b6d6cea..a6f3aae 100644
|
|
196
|
|
-+++ b/api/swagger-spec/batch_v1.json
|
|
197
|
|
-@@ -1823,6 +1823,10 @@
|
|
|
187
|
+ "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."
|
|
|
188
|
+ }
|
|
|
189
|
+ }
|
|
|
190
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/batch_v1beta1.json kubernetes/api/swagger-spec/batch_v1beta1.json
|
|
|
191
|
+--- kubernetes-old/api/swagger-spec/batch_v1beta1.json 2018-04-26 05:17:57.000000000 -0700
|
|
|
192
|
+@@ -1878,6 +1878,10 @@
|
|
198
|
193
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
199
|
194
|
"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
|
|
200
|
195
|
},
|
|
...
|
...
|
@@ -206,10 +126,14 @@ index b6d6cea..a6f3aae 100644
|
|
206
|
206
|
"projected": {
|
|
207
|
207
|
"$ref": "v1.ProjectedVolumeSource",
|
|
208
|
208
|
"description": "Items for all in one resources secrets, configmaps, and downward API"
|
|
209
|
|
-@@ -2550,6 +2554,23 @@
|
|
210
|
|
- }
|
|
211
|
|
- }
|
|
212
|
|
- },
|
|
|
209
|
+@@ -2601,6 +2605,23 @@
|
|
|
210
|
+ },
|
|
|
211
|
+ "fsType": {
|
|
|
212
|
+ "type": "string",
|
|
|
213
|
++ "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."
|
|
|
214
|
++ }
|
|
|
215
|
++ }
|
|
|
216
|
++ },
|
|
213
|
217
|
+ "v1.CascadeDiskVolumeSource": {
|
|
214
|
218
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
215
|
219
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -223,18 +147,13 @@ index b6d6cea..a6f3aae 100644
|
|
223
|
223
|
+ },
|
|
224
|
224
|
+ "fsType": {
|
|
225
|
225
|
+ "type": "string",
|
|
226
|
|
-+ "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."
|
|
227
|
|
-+ }
|
|
228
|
|
-+ }
|
|
229
|
|
-+ },
|
|
230
|
|
- "v1.ProjectedVolumeSource": {
|
|
231
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
232
|
|
- "description": "Represents a projected volume source",
|
|
233
|
|
-diff --git a/api/swagger-spec/batch_v1beta1.json b/api/swagger-spec/batch_v1beta1.json
|
|
234
|
|
-index 32cdfc0..9aa9744 100644
|
|
235
|
|
-+++ b/api/swagger-spec/batch_v1beta1.json
|
|
236
|
|
-@@ -1878,6 +1878,10 @@
|
|
|
226
|
+ "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."
|
|
|
227
|
+ }
|
|
|
228
|
+ }
|
|
|
229
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/batch_v1.json kubernetes/api/swagger-spec/batch_v1.json
|
|
|
230
|
+--- kubernetes-old/api/swagger-spec/batch_v1.json 2018-04-26 05:17:57.000000000 -0700
|
|
|
231
|
+@@ -1823,6 +1823,10 @@
|
|
237
|
232
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
238
|
233
|
"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
|
|
239
|
234
|
},
|
|
...
|
...
|
@@ -245,10 +164,14 @@ index 32cdfc0..9aa9744 100644
|
|
245
|
245
|
"projected": {
|
|
246
|
246
|
"$ref": "v1.ProjectedVolumeSource",
|
|
247
|
247
|
"description": "Items for all in one resources secrets, configmaps, and downward API"
|
|
248
|
|
-@@ -2605,6 +2609,23 @@
|
|
249
|
|
- }
|
|
250
|
|
- }
|
|
251
|
|
- },
|
|
|
248
|
+@@ -2546,6 +2550,23 @@
|
|
|
249
|
+ },
|
|
|
250
|
+ "fsType": {
|
|
|
251
|
+ "type": "string",
|
|
|
252
|
++ "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."
|
|
|
253
|
++ }
|
|
|
254
|
++ }
|
|
|
255
|
++ },
|
|
252
|
256
|
+ "v1.CascadeDiskVolumeSource": {
|
|
253
|
257
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
254
|
258
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -262,17 +185,12 @@ index 32cdfc0..9aa9744 100644
|
|
262
|
262
|
+ },
|
|
263
|
263
|
+ "fsType": {
|
|
264
|
264
|
+ "type": "string",
|
|
265
|
|
-+ "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."
|
|
266
|
|
-+ }
|
|
267
|
|
-+ }
|
|
268
|
|
-+ },
|
|
269
|
|
- "v1.ProjectedVolumeSource": {
|
|
270
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
271
|
|
- "description": "Represents a projected volume source",
|
|
272
|
|
-diff --git a/api/swagger-spec/batch_v2alpha1.json b/api/swagger-spec/batch_v2alpha1.json
|
|
273
|
|
-index 57acdbb..c8a6ff3 100644
|
|
274
|
|
-+++ b/api/swagger-spec/batch_v2alpha1.json
|
|
|
265
|
+ "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."
|
|
|
266
|
+ }
|
|
|
267
|
+ }
|
|
|
268
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/batch_v2alpha1.json kubernetes/api/swagger-spec/batch_v2alpha1.json
|
|
|
269
|
+--- kubernetes-old/api/swagger-spec/batch_v2alpha1.json 2018-04-26 05:17:57.000000000 -0700
|
|
275
|
270
|
@@ -1893,6 +1893,10 @@
|
|
276
|
271
|
"storageos": {
|
|
277
|
272
|
"$ref": "v1.StorageOSVolumeSource",
|
|
...
|
...
|
@@ -308,10 +226,9 @@ index 57acdbb..c8a6ff3 100644
|
|
308
|
308
|
"v1.Container": {
|
|
309
|
309
|
"id": "v1.Container",
|
|
310
|
310
|
"description": "A single application container that you want to run within a pod.",
|
|
311
|
|
-diff --git a/api/swagger-spec/extensions_v1beta1.json b/api/swagger-spec/extensions_v1beta1.json
|
|
312
|
|
-index 6d2e049..66b6632 100644
|
|
313
|
|
-+++ b/api/swagger-spec/extensions_v1beta1.json
|
|
|
311
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/extensions_v1beta1.json kubernetes/api/swagger-spec/extensions_v1beta1.json
|
|
|
312
|
+--- kubernetes-old/api/swagger-spec/extensions_v1beta1.json 2018-04-26 05:17:57.000000000 -0700
|
|
314
|
313
|
@@ -7506,6 +7506,10 @@
|
|
315
|
314
|
"storageos": {
|
|
316
|
315
|
"$ref": "v1.StorageOSVolumeSource",
|
|
...
|
...
|
@@ -323,10 +240,14 @@ index 6d2e049..66b6632 100644
|
|
323
|
323
|
}
|
|
324
|
324
|
}
|
|
325
|
325
|
},
|
|
326
|
|
-@@ -8218,6 +8222,23 @@
|
|
327
|
|
- }
|
|
328
|
|
- }
|
|
329
|
|
- },
|
|
|
326
|
+@@ -8214,6 +8218,23 @@
|
|
|
327
|
+ },
|
|
|
328
|
+ "fsType": {
|
|
|
329
|
+ "type": "string",
|
|
|
330
|
++ "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."
|
|
|
331
|
++ }
|
|
|
332
|
++ }
|
|
|
333
|
++ },
|
|
330
|
334
|
+ "v1.CascadeDiskVolumeSource": {
|
|
331
|
335
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
332
|
336
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -340,17 +261,12 @@ index 6d2e049..66b6632 100644
|
|
340
|
340
|
+ },
|
|
341
|
341
|
+ "fsType": {
|
|
342
|
342
|
+ "type": "string",
|
|
343
|
|
-+ "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."
|
|
344
|
|
-+ }
|
|
345
|
|
-+ }
|
|
346
|
|
-+ },
|
|
347
|
|
- "v1.ProjectedVolumeSource": {
|
|
348
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
349
|
|
- "description": "Represents a projected volume source",
|
|
350
|
|
-diff --git a/api/swagger-spec/settings.k8s.io_v1alpha1.json b/api/swagger-spec/settings.k8s.io_v1alpha1.json
|
|
351
|
|
-index d4427ba..6ad2a97 100644
|
|
352
|
|
-+++ b/api/swagger-spec/settings.k8s.io_v1alpha1.json
|
|
|
343
|
+ "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."
|
|
|
344
|
+ }
|
|
|
345
|
+ }
|
|
|
346
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/settings.k8s.io_v1alpha1.json kubernetes/api/swagger-spec/settings.k8s.io_v1alpha1.json
|
|
|
347
|
+--- kubernetes-old/api/swagger-spec/settings.k8s.io_v1alpha1.json 2018-04-26 05:17:57.000000000 -0700
|
|
353
|
348
|
@@ -1676,6 +1676,10 @@
|
|
354
|
349
|
"storageos": {
|
|
355
|
350
|
"$ref": "v1.StorageOSVolumeSource",
|
|
...
|
...
|
@@ -362,10 +278,14 @@ index d4427ba..6ad2a97 100644
|
|
362
|
362
|
}
|
|
363
|
363
|
}
|
|
364
|
364
|
},
|
|
365
|
|
-@@ -2350,6 +2354,23 @@
|
|
366
|
|
- }
|
|
367
|
|
- }
|
|
368
|
|
- },
|
|
|
365
|
+@@ -2346,6 +2350,23 @@
|
|
|
366
|
+ },
|
|
|
367
|
+ "fsType": {
|
|
|
368
|
+ "type": "string",
|
|
|
369
|
++ "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."
|
|
|
370
|
++ }
|
|
|
371
|
++ }
|
|
|
372
|
++ },
|
|
369
|
373
|
+ "v1.CascadeDiskVolumeSource": {
|
|
370
|
374
|
+ "id": "v1.CascadeDiskVolumeSource",
|
|
371
|
375
|
+ "description": "Represents a Cascade persistent disk resource.",
|
|
...
|
...
|
@@ -379,17 +299,12 @@ index d4427ba..6ad2a97 100644
|
|
379
|
379
|
+ },
|
|
380
|
380
|
+ "fsType": {
|
|
381
|
381
|
+ "type": "string",
|
|
382
|
|
-+ "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."
|
|
383
|
|
-+ }
|
|
384
|
|
-+ }
|
|
385
|
|
-+ },
|
|
386
|
|
- "v1.ProjectedVolumeSource": {
|
|
387
|
|
- "id": "v1.ProjectedVolumeSource",
|
|
388
|
|
- "description": "Represents a projected volume source",
|
|
389
|
|
-diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json
|
|
390
|
|
-index 3f1198e..dbd57f0 100644
|
|
391
|
|
-+++ b/api/swagger-spec/v1.json
|
|
|
382
|
+ "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."
|
|
|
383
|
+ }
|
|
|
384
|
+ }
|
|
|
385
|
+diff -duNr --no-dereference kubernetes-old/api/swagger-spec/v1.json kubernetes/api/swagger-spec/v1.json
|
|
|
386
|
+--- kubernetes-old/api/swagger-spec/v1.json 2018-04-26 05:17:57.000000000 -0700
|
|
392
|
387
|
@@ -19310,6 +19310,10 @@
|
|
393
|
388
|
"$ref": "v1.PhotonPersistentDiskVolumeSource",
|
|
394
|
389
|
"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"
|
|
...
|
...
|
@@ -436,11 +351,10 @@ index 3f1198e..dbd57f0 100644
|
|
436
|
436
|
}
|
|
437
|
437
|
}
|
|
438
|
438
|
},
|
|
439
|
|
-diff --git a/cmd/kube-controller-manager/app/BUILD b/cmd/kube-controller-manager/app/BUILD
|
|
440
|
|
-index a3f98b1..3410214 100644
|
|
441
|
|
-+++ b/cmd/kube-controller-manager/app/BUILD
|
|
442
|
|
-@@ -88,6 +88,7 @@ go_library(
|
|
|
439
|
+diff -duNr --no-dereference kubernetes-old/cmd/kube-controller-manager/app/BUILD kubernetes/cmd/kube-controller-manager/app/BUILD
|
|
|
440
|
+--- kubernetes-old/cmd/kube-controller-manager/app/BUILD 2018-04-26 05:17:57.000000000 -0700
|
|
|
441
|
+@@ -88,6 +88,7 @@
|
|
443
|
442
|
"//pkg/volume/aws_ebs:go_default_library",
|
|
444
|
443
|
"//pkg/volume/azure_dd:go_default_library",
|
|
445
|
444
|
"//pkg/volume/azure_file:go_default_library",
|
|
...
|
...
|
@@ -448,11 +362,10 @@ index a3f98b1..3410214 100644
|
|
448
|
448
|
"//pkg/volume/cinder:go_default_library",
|
|
449
|
449
|
"//pkg/volume/csi:go_default_library",
|
|
450
|
450
|
"//pkg/volume/fc:go_default_library",
|
|
451
|
|
-diff --git a/cmd/kube-controller-manager/app/plugins.go b/cmd/kube-controller-manager/app/plugins.go
|
|
452
|
|
-index 42034d5..e729785 100644
|
|
453
|
|
-+++ b/cmd/kube-controller-manager/app/plugins.go
|
|
454
|
|
-@@ -34,6 +34,7 @@ import (
|
|
|
451
|
+diff -duNr --no-dereference kubernetes-old/cmd/kube-controller-manager/app/plugins.go kubernetes/cmd/kube-controller-manager/app/plugins.go
|
|
|
452
|
+--- kubernetes-old/cmd/kube-controller-manager/app/plugins.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
453
|
+@@ -34,6 +34,7 @@
|
|
455
|
454
|
"k8s.io/kubernetes/pkg/volume/aws_ebs"
|
|
456
|
455
|
"k8s.io/kubernetes/pkg/volume/azure_dd"
|
|
457
|
456
|
"k8s.io/kubernetes/pkg/volume/azure_file"
|
|
...
|
...
|
@@ -460,7 +373,7 @@ index 42034d5..e729785 100644
|
|
460
|
460
|
"k8s.io/kubernetes/pkg/volume/cinder"
|
|
461
|
461
|
"k8s.io/kubernetes/pkg/volume/csi"
|
|
462
|
462
|
"k8s.io/kubernetes/pkg/volume/fc"
|
|
463
|
|
-@@ -77,6 +78,7 @@ func ProbeAttachableVolumePlugins() []volume.VolumePlugin {
|
|
|
463
|
+@@ -77,6 +78,7 @@
|
|
464
|
464
|
allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
|
|
465
|
465
|
allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
|
|
466
|
466
|
allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
|
|
...
|
...
|
@@ -468,7 +381,7 @@ index 42034d5..e729785 100644
|
|
468
|
468
|
if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
|
|
469
|
469
|
allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
|
|
470
|
470
|
}
|
|
471
|
|
-@@ -107,6 +109,7 @@ func ProbeExpandableVolumePlugins(config componentconfig.VolumeConfiguration) []
|
|
|
471
|
+@@ -107,6 +109,7 @@
|
|
472
|
472
|
allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
|
|
473
|
473
|
allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
|
|
474
|
474
|
allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
|
|
...
|
...
|
@@ -476,7 +389,7 @@ index 42034d5..e729785 100644
|
|
476
|
476
|
return allPlugins
|
|
477
|
477
|
}
|
|
478
|
478
|
|
|
479
|
|
-@@ -163,6 +166,7 @@ func ProbeControllerVolumePlugins(cloud cloudprovider.Interface, config componen
|
|
|
479
|
+@@ -163,6 +166,7 @@
|
|
480
|
480
|
allPlugins = append(allPlugins, vsphere_volume.ProbeVolumePlugins()...)
|
|
481
|
481
|
allPlugins = append(allPlugins, azure_dd.ProbeVolumePlugins()...)
|
|
482
|
482
|
allPlugins = append(allPlugins, photon_pd.ProbeVolumePlugins()...)
|
|
...
|
...
|
@@ -484,11 +397,10 @@ index 42034d5..e729785 100644
|
|
484
|
484
|
|
|
485
|
485
|
return allPlugins
|
|
486
|
486
|
}
|
|
487
|
|
-diff --git a/cmd/kubelet/app/BUILD b/cmd/kubelet/app/BUILD
|
|
488
|
|
-index cbfb90f..6264d0c 100644
|
|
489
|
|
-+++ b/cmd/kubelet/app/BUILD
|
|
490
|
|
-@@ -117,6 +117,7 @@ go_library(
|
|
|
487
|
+diff -duNr --no-dereference kubernetes-old/cmd/kubelet/app/BUILD kubernetes/cmd/kubelet/app/BUILD
|
|
|
488
|
+--- kubernetes-old/cmd/kubelet/app/BUILD 2018-04-26 05:17:57.000000000 -0700
|
|
|
489
|
+@@ -117,6 +117,7 @@
|
|
491
|
490
|
"//pkg/volume/aws_ebs:go_default_library",
|
|
492
|
491
|
"//pkg/volume/azure_dd:go_default_library",
|
|
493
|
492
|
"//pkg/volume/azure_file:go_default_library",
|
|
...
|
...
|
@@ -496,11 +408,10 @@ index cbfb90f..6264d0c 100644
|
|
496
|
496
|
"//pkg/volume/cephfs:go_default_library",
|
|
497
|
497
|
"//pkg/volume/cinder:go_default_library",
|
|
498
|
498
|
"//pkg/volume/configmap:go_default_library",
|
|
499
|
|
-diff --git a/cmd/kubelet/app/plugins.go b/cmd/kubelet/app/plugins.go
|
|
500
|
|
-index ef41bb8..c9806f7 100644
|
|
501
|
|
-+++ b/cmd/kubelet/app/plugins.go
|
|
502
|
|
-@@ -32,6 +32,7 @@ import (
|
|
|
499
|
+diff -duNr --no-dereference kubernetes-old/cmd/kubelet/app/plugins.go kubernetes/cmd/kubelet/app/plugins.go
|
|
|
500
|
+--- kubernetes-old/cmd/kubelet/app/plugins.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
501
|
+@@ -32,6 +32,7 @@
|
|
503
|
502
|
"k8s.io/kubernetes/pkg/volume/aws_ebs"
|
|
504
|
503
|
"k8s.io/kubernetes/pkg/volume/azure_dd"
|
|
505
|
504
|
"k8s.io/kubernetes/pkg/volume/azure_file"
|
|
...
|
...
|
@@ -508,7 +419,7 @@ index ef41bb8..c9806f7 100644
|
|
508
|
508
|
"k8s.io/kubernetes/pkg/volume/cephfs"
|
|
509
|
509
|
"k8s.io/kubernetes/pkg/volume/cinder"
|
|
510
|
510
|
"k8s.io/kubernetes/pkg/volume/configmap"
|
|
511
|
|
-@@ -100,6 +101,7 @@ func ProbeVolumePlugins() []volume.VolumePlugin {
|
|
|
511
|
+@@ -100,6 +101,7 @@
|
|
512
|
512
|
allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
|
|
513
|
513
|
allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
|
|
514
|
514
|
allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
|
|
...
|
...
|
@@ -516,11 +427,10 @@ index ef41bb8..c9806f7 100644
|
|
516
|
516
|
if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
|
|
517
|
517
|
allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
|
|
518
|
518
|
}
|
|
519
|
|
-diff --git a/pkg/apis/core/types.go b/pkg/apis/core/types.go
|
|
520
|
|
-index 8b183de..cfe4c85 100644
|
|
521
|
|
-+++ b/pkg/apis/core/types.go
|
|
522
|
|
-@@ -316,6 +316,8 @@ type VolumeSource struct {
|
|
|
519
|
+diff -duNr --no-dereference kubernetes-old/pkg/apis/core/types.go kubernetes/pkg/apis/core/types.go
|
|
|
520
|
+--- kubernetes-old/pkg/apis/core/types.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
521
|
+@@ -316,6 +316,8 @@
|
|
523
|
522
|
// StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
|
|
524
|
523
|
// +optional
|
|
525
|
524
|
StorageOS *StorageOSVolumeSource
|
|
...
|
...
|
@@ -529,7 +439,7 @@ index 8b183de..cfe4c85 100644
|
|
529
|
529
|
}
|
|
530
|
530
|
|
|
531
|
531
|
// Similar to VolumeSource but meant for the administrator who creates PVs.
|
|
532
|
|
-@@ -394,6 +396,8 @@ type PersistentVolumeSource struct {
|
|
|
532
|
+@@ -394,6 +396,8 @@
|
|
533
|
533
|
// CSI (Container Storage Interface) represents storage that handled by an external CSI driver (Beta feature).
|
|
534
|
534
|
// +optional
|
|
535
|
535
|
CSI *CSIPersistentVolumeSource
|
|
...
|
...
|
@@ -538,7 +448,7 @@ index 8b183de..cfe4c85 100644
|
|
538
|
538
|
}
|
|
539
|
539
|
|
|
540
|
540
|
type PersistentVolumeClaimVolumeSource struct {
|
|
541
|
|
-@@ -1510,6 +1514,16 @@ type StorageOSPersistentVolumeSource struct {
|
|
|
541
|
+@@ -1510,6 +1514,16 @@
|
|
542
|
542
|
SecretRef *ObjectReference
|
|
543
|
543
|
}
|
|
544
|
544
|
|
|
...
|
...
|
@@ -555,11 +465,10 @@ index 8b183de..cfe4c85 100644
|
|
555
|
555
|
// Adapts a ConfigMap into a volume.
|
|
556
|
556
|
//
|
|
557
|
557
|
// The contents of the target ConfigMap's Data field will be presented in a
|
|
558
|
|
-diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go
|
|
559
|
|
-index b66fd6f..7f0e6bd 100644
|
|
560
|
|
-+++ b/pkg/apis/core/validation/validation.go
|
|
561
|
|
-@@ -664,6 +664,14 @@ func validateVolumeSource(source *core.VolumeSource, fldPath *field.Path, volNam
|
|
|
558
|
+diff -duNr --no-dereference kubernetes-old/pkg/apis/core/validation/validation.go kubernetes/pkg/apis/core/validation/validation.go
|
|
|
559
|
+--- kubernetes-old/pkg/apis/core/validation/validation.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
560
|
+@@ -664,6 +664,14 @@
|
|
562
|
561
|
allErrs = append(allErrs, validateScaleIOVolumeSource(source.ScaleIO, fldPath.Child("scaleIO"))...)
|
|
563
|
562
|
}
|
|
564
|
563
|
}
|
|
...
|
...
|
@@ -574,7 +483,7 @@ index b66fd6f..7f0e6bd 100644
|
|
574
|
574
|
|
|
575
|
575
|
if numVolumes == 0 {
|
|
576
|
576
|
allErrs = append(allErrs, field.Required(fldPath, "must specify a volume type"))
|
|
577
|
|
-@@ -1494,6 +1502,14 @@ func validateCSIPersistentVolumeSource(csi *core.CSIPersistentVolumeSource, fldP
|
|
|
577
|
+@@ -1494,6 +1502,14 @@
|
|
578
|
578
|
return allErrs
|
|
579
|
579
|
}
|
|
580
|
580
|
|
|
...
|
...
|
@@ -589,7 +498,7 @@ index b66fd6f..7f0e6bd 100644
|
|
589
|
589
|
// ValidatePersistentVolumeName checks that a name is appropriate for a
|
|
590
|
590
|
// PersistentVolumeName object.
|
|
591
|
591
|
var ValidatePersistentVolumeName = NameIsDNSSubdomain
|
|
592
|
|
-@@ -1737,6 +1753,15 @@ func ValidatePersistentVolume(pv *core.PersistentVolume) field.ErrorList {
|
|
|
592
|
+@@ -1737,6 +1753,15 @@
|
|
593
|
593
|
}
|
|
594
|
594
|
}
|
|
595
|
595
|
|
|
...
|
...
|
@@ -605,7 +514,7 @@ index b66fd6f..7f0e6bd 100644
|
|
605
|
605
|
if numVolumes == 0 {
|
|
606
|
606
|
allErrs = append(allErrs, field.Required(specPath, "must specify a volume type"))
|
|
607
|
607
|
}
|
|
608
|
|
-@@ -4370,7 +4395,7 @@ func ValidateSecret(secret *core.Secret) field.ErrorList {
|
|
|
608
|
+@@ -4370,7 +4395,7 @@
|
|
609
|
609
|
allErrs = append(allErrs, field.Required(field.NewPath("metadata", "annotations").Key(core.ServiceAccountNameKey), ""))
|
|
610
|
610
|
}
|
|
611
|
611
|
case core.SecretTypeOpaque, "":
|
|
...
|
...
|
@@ -614,7 +523,7 @@ index b66fd6f..7f0e6bd 100644
|
|
614
|
614
|
case core.SecretTypeDockercfg:
|
|
615
|
615
|
dockercfgBytes, exists := secret.Data[core.DockerConfigKey]
|
|
616
|
616
|
if !exists {
|
|
617
|
|
-@@ -4416,7 +4441,7 @@ func ValidateSecret(secret *core.Secret) field.ErrorList {
|
|
|
617
|
+@@ -4416,7 +4441,7 @@
|
|
618
|
618
|
if _, exists := secret.Data[core.TLSPrivateKeyKey]; !exists {
|
|
619
|
619
|
allErrs = append(allErrs, field.Required(dataPath.Key(core.TLSPrivateKeyKey), ""))
|
|
620
|
620
|
}
|
|
...
|
...
|
@@ -623,11 +532,10 @@ index b66fd6f..7f0e6bd 100644
|
|
623
|
623
|
default:
|
|
624
|
624
|
// no-op
|
|
625
|
625
|
}
|
|
626
|
|
-diff --git a/pkg/apis/extensions/types.go b/pkg/apis/extensions/types.go
|
|
627
|
|
-index e369728..a5406ab 100644
|
|
628
|
|
-+++ b/pkg/apis/extensions/types.go
|
|
629
|
|
-@@ -925,6 +925,7 @@ var (
|
|
|
626
|
+diff -duNr --no-dereference kubernetes-old/pkg/apis/extensions/types.go kubernetes/pkg/apis/extensions/types.go
|
|
|
627
|
+--- kubernetes-old/pkg/apis/extensions/types.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
628
|
+@@ -925,6 +925,7 @@
|
|
630
|
629
|
PortworxVolume FSType = "portworxVolume"
|
|
631
|
630
|
ScaleIO FSType = "scaleIO"
|
|
632
|
631
|
CSI FSType = "csi"
|
|
...
|
...
|
@@ -635,11 +543,10 @@ index e369728..a5406ab 100644
|
|
635
|
635
|
All FSType = "*"
|
|
636
|
636
|
)
|
|
637
|
637
|
|
|
638
|
|
-diff --git a/pkg/cloudprovider/providers/BUILD b/pkg/cloudprovider/providers/BUILD
|
|
639
|
|
-index aeccfa1..4313576 100644
|
|
640
|
|
-+++ b/pkg/cloudprovider/providers/BUILD
|
|
641
|
|
-@@ -12,6 +12,7 @@ go_library(
|
|
|
638
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/BUILD kubernetes/pkg/cloudprovider/providers/BUILD
|
|
|
639
|
+--- kubernetes-old/pkg/cloudprovider/providers/BUILD 2018-04-26 05:17:57.000000000 -0700
|
|
|
640
|
+@@ -12,6 +12,7 @@
|
|
642
|
641
|
deps = [
|
|
643
|
642
|
"//pkg/cloudprovider/providers/aws:go_default_library",
|
|
644
|
643
|
"//pkg/cloudprovider/providers/azure:go_default_library",
|
|
...
|
...
|
@@ -647,7 +554,7 @@ index aeccfa1..4313576 100644
|
|
647
|
647
|
"//pkg/cloudprovider/providers/cloudstack:go_default_library",
|
|
648
|
648
|
"//pkg/cloudprovider/providers/gce:go_default_library",
|
|
649
|
649
|
"//pkg/cloudprovider/providers/openstack:go_default_library",
|
|
650
|
|
-@@ -34,6 +35,7 @@ filegroup(
|
|
|
650
|
+@@ -34,6 +35,7 @@
|
|
651
|
651
|
":package-srcs",
|
|
652
|
652
|
"//pkg/cloudprovider/providers/aws:all-srcs",
|
|
653
|
653
|
"//pkg/cloudprovider/providers/azure:all-srcs",
|
|
...
|
...
|
@@ -655,82 +562,9 @@ index aeccfa1..4313576 100644
|
|
655
|
655
|
"//pkg/cloudprovider/providers/cloudstack:all-srcs",
|
|
656
|
656
|
"//pkg/cloudprovider/providers/fake:all-srcs",
|
|
657
|
657
|
"//pkg/cloudprovider/providers/gce:all-srcs",
|
|
658
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/BUILD b/pkg/cloudprovider/providers/cascade/BUILD
|
|
659
|
|
-new file mode 100644
|
|
660
|
|
-index 0000000..4089166
|
|
661
|
|
-+++ b/pkg/cloudprovider/providers/cascade/BUILD
|
|
662
|
|
-@@ -0,0 +1,56 @@
|
|
663
|
|
-+package(default_visibility = ["//visibility:public"])
|
|
664
|
|
-+
|
|
665
|
|
-+load(
|
|
666
|
|
-+ "@io_bazel_rules_go//go:def.bzl",
|
|
667
|
|
-+ "go_library",
|
|
668
|
|
-+)
|
|
669
|
|
-+
|
|
670
|
|
-+go_library(
|
|
671
|
|
-+ name = "go_default_library",
|
|
672
|
|
-+ srcs = [
|
|
673
|
|
-+ "apitypes.go",
|
|
674
|
|
-+ "auth.go",
|
|
675
|
|
-+ "cascade.go",
|
|
676
|
|
-+ "cascade_disks.go",
|
|
677
|
|
-+ "cascade_instances.go",
|
|
678
|
|
-+ "cascade_loadbalancer.go",
|
|
679
|
|
-+ "client.go",
|
|
680
|
|
-+ "oidcclient.go",
|
|
681
|
|
-+ "restclient.go",
|
|
682
|
|
-+ "utils.go"
|
|
683
|
|
-+ ],
|
|
684
|
|
-+ deps = [
|
|
685
|
|
-+ "//pkg/api/v1/helper:go_default_library",
|
|
686
|
|
-+ "//pkg/cloudprovider:go_default_library",
|
|
687
|
|
-+ "//pkg/controller:go_default_library",
|
|
688
|
|
-+ "//vendor/github.com/golang/glog:go_default_library",
|
|
689
|
|
-+ "//vendor/gopkg.in/gcfg.v1:go_default_library",
|
|
690
|
|
-+ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
691
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
692
|
|
-+ ],
|
|
693
|
|
-+)
|
|
694
|
|
-+
|
|
695
|
|
-+go_test(
|
|
696
|
|
-+ name = "go_default_test",
|
|
697
|
|
-+ srcs = [
|
|
698
|
|
-+ "cascade_instances_test.go",
|
|
699
|
|
-+ ],
|
|
700
|
|
-+ embed = [":go_default_library"],
|
|
701
|
|
-+ deps = [
|
|
702
|
|
-+ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
703
|
|
-+ "//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
704
|
|
-+ ],
|
|
705
|
|
-+)
|
|
706
|
|
-+
|
|
707
|
|
-+filegroup(
|
|
708
|
|
-+ name = "package-srcs",
|
|
709
|
|
-+ srcs = glob(["**"]),
|
|
710
|
|
-+ tags = ["automanaged"],
|
|
711
|
|
-+ visibility = ["//visibility:private"],
|
|
712
|
|
-+)
|
|
713
|
|
-+
|
|
714
|
|
-+filegroup(
|
|
715
|
|
-+ name = "all-srcs",
|
|
716
|
|
-+ srcs = [":package-srcs"],
|
|
717
|
|
-+ tags = ["automanaged"],
|
|
718
|
|
-+)
|
|
719
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/OWNERS b/pkg/cloudprovider/providers/cascade/OWNERS
|
|
720
|
|
-new file mode 100644
|
|
721
|
|
-index 0000000..70efc9d
|
|
722
|
|
-+++ b/pkg/cloudprovider/providers/cascade/OWNERS
|
|
723
|
|
-@@ -0,0 +1,3 @@
|
|
724
|
|
-+maintainers:
|
|
725
|
|
-+- ashokc
|
|
726
|
|
-+- ysheng
|
|
727
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/apitypes.go b/pkg/cloudprovider/providers/cascade/apitypes.go
|
|
728
|
|
-new file mode 100644
|
|
729
|
|
-index 0000000..fba1b3b
|
|
730
|
|
-+++ b/pkg/cloudprovider/providers/cascade/apitypes.go
|
|
|
658
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/apitypes.go kubernetes/pkg/cloudprovider/providers/cascade/apitypes.go
|
|
|
659
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/apitypes.go 1969-12-31 16:00:00.000000000 -0800
|
|
731
|
660
|
@@ -0,0 +1,229 @@
|
|
732
|
661
|
+package cascade
|
|
733
|
662
|
+
|
|
...
|
...
|
@@ -961,11 +795,9 @@ index 0000000..fba1b3b
|
|
961
|
961
|
+type LoadBalancerVMUpdate struct {
|
|
962
|
962
|
+ VMIds []*LoadBalancerVM `json:"vmIds"`
|
|
963
|
963
|
+}
|
|
964
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/auth.go b/pkg/cloudprovider/providers/cascade/auth.go
|
|
965
|
|
-new file mode 100644
|
|
966
|
|
-index 0000000..fc92377
|
|
967
|
|
-+++ b/pkg/cloudprovider/providers/cascade/auth.go
|
|
|
964
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/auth.go kubernetes/pkg/cloudprovider/providers/cascade/auth.go
|
|
|
965
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/auth.go 1969-12-31 16:00:00.000000000 -0800
|
|
968
|
966
|
@@ -0,0 +1,145 @@
|
|
969
|
967
|
+package cascade
|
|
970
|
968
|
+
|
|
...
|
...
|
@@ -1113,231 +945,69 @@ index 0000000..fc92377
|
|
1113
|
1113
|
+ return pwd, nil
|
|
1114
|
1114
|
+}
|
|
1115
|
1115
|
\ No newline at end of file
|
|
1116
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/cascade.go b/pkg/cloudprovider/providers/cascade/cascade.go
|
|
1117
|
|
-new file mode 100644
|
|
1118
|
|
-index 0000000..e7cf2fc
|
|
1119
|
|
-+++ b/pkg/cloudprovider/providers/cascade/cascade.go
|
|
1120
|
|
-@@ -0,0 +1,214 @@
|
|
1121
|
|
-+// The use of Cascade cloud provider requires the kubelet, kube-apiserver, and kube-controller-manager to be started
|
|
1122
|
|
-+// with config flag: '--cloud-provider=cascade --cloud-config=[path_to_config_file]'.
|
|
1123
|
|
-+package cascade
|
|
|
1116
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/BUILD kubernetes/pkg/cloudprovider/providers/cascade/BUILD
|
|
|
1117
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/BUILD 1969-12-31 16:00:00.000000000 -0800
|
|
|
1118
|
+@@ -0,0 +1,56 @@
|
|
|
1119
|
++package(default_visibility = ["//visibility:public"])
|
|
1124
|
1120
|
+
|
|
1125
|
|
-+import (
|
|
1126
|
|
-+ "context"
|
|
1127
|
|
-+ "errors"
|
|
1128
|
|
-+ "fmt"
|
|
1129
|
|
-+ "github.com/golang/glog"
|
|
1130
|
|
-+ "gopkg.in/gcfg.v1"
|
|
1131
|
|
-+ "io"
|
|
1132
|
|
-+ k8stypes "k8s.io/apimachinery/pkg/types"
|
|
1133
|
|
-+ "k8s.io/kubernetes/pkg/cloudprovider"
|
|
1134
|
|
-+ "k8s.io/kubernetes/pkg/controller"
|
|
1135
|
|
-+ "os"
|
|
1136
|
|
-+ "strings"
|
|
|
1121
|
++load(
|
|
|
1122
|
++ "@io_bazel_rules_go//go:def.bzl",
|
|
|
1123
|
++ "go_library",
|
|
1137
|
1124
|
+)
|
|
1138
|
1125
|
+
|
|
1139
|
|
-+const (
|
|
1140
|
|
-+ ProviderName = "vke"
|
|
1141
|
|
-+ DiskSpecKind = "persistent-disk"
|
|
1142
|
|
-+ MasterPrefix = "master"
|
|
|
1126
|
++go_library(
|
|
|
1127
|
++ name = "go_default_library",
|
|
|
1128
|
++ srcs = [
|
|
|
1129
|
++ "apitypes.go",
|
|
|
1130
|
++ "auth.go",
|
|
|
1131
|
++ "cascade.go",
|
|
|
1132
|
++ "cascade_disks.go",
|
|
|
1133
|
++ "cascade_instances.go",
|
|
|
1134
|
++ "cascade_loadbalancer.go",
|
|
|
1135
|
++ "client.go",
|
|
|
1136
|
++ "oidcclient.go",
|
|
|
1137
|
++ "restclient.go",
|
|
|
1138
|
++ "utils.go"
|
|
|
1139
|
++ ],
|
|
|
1140
|
++ deps = [
|
|
|
1141
|
++ "//pkg/api/v1/helper:go_default_library",
|
|
|
1142
|
++ "//pkg/cloudprovider:go_default_library",
|
|
|
1143
|
++ "//pkg/controller:go_default_library",
|
|
|
1144
|
++ "//vendor/github.com/golang/glog:go_default_library",
|
|
|
1145
|
++ "//vendor/gopkg.in/gcfg.v1:go_default_library",
|
|
|
1146
|
++ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
|
1147
|
++ "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
|
1148
|
++ ],
|
|
1143
|
1149
|
+)
|
|
1144
|
1150
|
+
|
|
1145
|
|
-+// CascadeCloud is an implementation of the cloud provider interface for Cascade Controller.
|
|
1146
|
|
-+type CascadeCloud struct {
|
|
1147
|
|
-+ cfg *CascadeConfig
|
|
1148
|
|
-+ // Authentication client to get token for Cascade API calls
|
|
1149
|
|
-+ authClient *AuthClient
|
|
1150
|
|
-+ // API Client to make Cascade API calls
|
|
1151
|
|
-+ apiClient *Client
|
|
1152
|
|
-+ // local $HOSTNAME
|
|
1153
|
|
-+ localHostname string
|
|
1154
|
|
-+ // hostname from K8S, could be overridden
|
|
1155
|
|
-+ localK8sHostname string
|
|
1156
|
|
-+}
|
|
1157
|
|
-+
|
|
1158
|
|
-+// CascadeCloud represents Cascade cloud provider's configuration.
|
|
1159
|
|
-+type CascadeConfig struct {
|
|
1160
|
|
-+ Global struct {
|
|
1161
|
|
-+ // the Cascade Controller endpoint
|
|
1162
|
|
-+ CloudTarget string `gcfg:"target"`
|
|
1163
|
|
-+ // Cascade Controller tenantName name
|
|
1164
|
|
-+ TenantName string `gcfg:"tenantName"`
|
|
1165
|
|
-+ // Cascade Controller cluster ID
|
|
1166
|
|
-+ ClusterID string `gcfg:"clusterID"`
|
|
1167
|
|
-+ // Authentication server endpoint for Cascade Controller
|
|
1168
|
|
-+ AuthEndpoint string `gcfg:"authEndpoint"`
|
|
1169
|
|
-+ // Lightwave domain name for the node
|
|
1170
|
|
-+ DomainName string `gcfg:"domainName"`
|
|
1171
|
|
-+ // DNS name of the node.
|
|
1172
|
|
-+ DNSName string `gcfg:"dnsName"`
|
|
1173
|
|
-+ // Region in which the cluster is in
|
|
1174
|
|
-+ Region string `gcfg:"region"`
|
|
1175
|
|
-+ // Availability zone in which the cluster is in
|
|
1176
|
|
-+ Zone string `gcfg:"zone"`
|
|
1177
|
|
-+ // IP address of the node.
|
|
1178
|
|
-+ IPAddress string `gcfg:"ipAddress"`
|
|
1179
|
|
-+ }
|
|
1180
|
|
-+}
|
|
1181
|
|
-+
|
|
1182
|
|
-+// Disks is interface for manipulation with Cascade Controller Persistent Disks.
|
|
1183
|
|
-+type Disks interface {
|
|
1184
|
|
-+ // AttachDisk attaches given disk to given node. Current node
|
|
1185
|
|
-+ // is used when nodeName is empty string.
|
|
1186
|
|
-+ AttachDisk(diskID string, nodeName k8stypes.NodeName) (string, error)
|
|
1187
|
|
-+
|
|
1188
|
|
-+ // DetachDisk detaches given disk to given node. Current node
|
|
1189
|
|
-+ // is used when nodeName is empty string.
|
|
1190
|
|
-+ DetachDisk(diskID string, nodeName k8stypes.NodeName) error
|
|
1191
|
|
-+
|
|
1192
|
|
-+ // DiskIsAttached checks if a disk is attached to the given node.
|
|
1193
|
|
-+ DiskIsAttached(diskID string, nodeName k8stypes.NodeName) (bool, error)
|
|
1194
|
|
-+
|
|
1195
|
|
-+ // DisksAreAttached is a batch function to check if a list of disks are attached
|
|
1196
|
|
-+ // to the node with the specified NodeName.
|
|
1197
|
|
-+ DisksAreAttached(diskID []string, nodeName k8stypes.NodeName) (map[string]bool, error)
|
|
1198
|
|
-+
|
|
1199
|
|
-+ // CreateDisk creates a new PD with given properties.
|
|
1200
|
|
-+ CreateDisk(volumeOptions *VolumeOptions) (diskID string, err error)
|
|
1201
|
|
-+
|
|
1202
|
|
-+ // DeleteDisk deletes PD.
|
|
1203
|
|
-+ DeleteDisk(diskID string) error
|
|
1204
|
|
-+
|
|
1205
|
|
-+ // Get labels to apply to volume on creation.
|
|
1206
|
|
-+ GetVolumeLabels(diskID string) (map[string]string, error)
|
|
1207
|
|
-+}
|
|
1208
|
|
-+
|
|
1209
|
|
-+// VolumeOptions specifies capacity, tags, name and flavorID for a volume.
|
|
1210
|
|
-+type VolumeOptions struct {
|
|
1211
|
|
-+ CapacityGB int
|
|
1212
|
|
-+ Tags map[string]string
|
|
1213
|
|
-+ Name string
|
|
1214
|
|
-+ Flavor string
|
|
1215
|
|
-+}
|
|
1216
|
|
-+
|
|
1217
|
|
-+func readConfig(config io.Reader) (*CascadeConfig, error) {
|
|
1218
|
|
-+ if config == nil {
|
|
1219
|
|
-+ err := fmt.Errorf("Cascade Cloud Provider: config file is missing. Please restart with " +
|
|
1220
|
|
-+ "--cloud-provider=cascade --cloud-config=[path_to_config_file]")
|
|
1221
|
|
-+ return nil, err
|
|
1222
|
|
-+ }
|
|
1223
|
|
-+
|
|
1224
|
|
-+ var cfg CascadeConfig
|
|
1225
|
|
-+ err := gcfg.ReadInto(&cfg, config)
|
|
1226
|
|
-+ return &cfg, err
|
|
1227
|
|
-+}
|
|
1228
|
|
-+
|
|
1229
|
|
-+func init() {
|
|
1230
|
|
-+ cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) {
|
|
1231
|
|
-+ cfg, err := readConfig(config)
|
|
1232
|
|
-+ if err != nil {
|
|
1233
|
|
-+ glog.Errorf("Cascade Cloud Provider: failed to read in cloud provider config file. Error[%v]", err)
|
|
1234
|
|
-+ return nil, err
|
|
1235
|
|
-+ }
|
|
1236
|
|
-+ return newCascadeCloud(cfg)
|
|
1237
|
|
-+ })
|
|
1238
|
|
-+}
|
|
1239
|
|
-+
|
|
1240
|
|
-+func newCascadeCloud(cfg *CascadeConfig) (*CascadeCloud, error) {
|
|
1241
|
|
-+ if len(cfg.Global.CloudTarget) == 0 {
|
|
1242
|
|
-+ return nil, fmt.Errorf("Cascade Controller endpoint was not specified.")
|
|
1243
|
|
-+ }
|
|
1244
|
|
-+
|
|
1245
|
|
-+ // Get local hostname
|
|
1246
|
|
-+ hostname, err := os.Hostname()
|
|
1247
|
|
-+ if err != nil {
|
|
1248
|
|
-+ glog.Errorf("Cascade Cloud Provider: get hostname failed. Error[%v]", err)
|
|
1249
|
|
-+ return nil, err
|
|
1250
|
|
-+ }
|
|
1251
|
|
-+
|
|
1252
|
|
-+ cc := CascadeCloud{
|
|
1253
|
|
-+ cfg: cfg,
|
|
1254
|
|
-+ localHostname: hostname,
|
|
1255
|
|
-+ localK8sHostname: "",
|
|
1256
|
|
-+ }
|
|
1257
|
|
-+
|
|
1258
|
|
-+ // Instantiate the auth and API clients only on the master nodes. Kubelets running on the workers don't need them as
|
|
1259
|
|
-+ // they are used primarily for making API calls to Cascade.
|
|
1260
|
|
-+ if strings.HasPrefix(hostname, MasterPrefix) {
|
|
1261
|
|
-+ if cc.authClient, err = NewAuthClient(cfg); err != nil {
|
|
1262
|
|
-+ return nil, err
|
|
1263
|
|
-+ }
|
|
1264
|
|
-+
|
|
1265
|
|
-+ if cc.apiClient, err = NewClient(cfg, cc.authClient); err != nil {
|
|
1266
|
|
-+ return nil, err
|
|
1267
|
|
-+ }
|
|
1268
|
|
-+ }
|
|
1269
|
|
-+
|
|
1270
|
|
-+ return &cc, nil
|
|
1271
|
|
-+}
|
|
1272
|
|
-+
|
|
1273
|
|
-+// Initialize passes a Kubernetes clientBuilder interface to the cloud provider
|
|
1274
|
|
-+func (cc *CascadeCloud) Initialize(clientBuilder controller.ControllerClientBuilder) {}
|
|
1275
|
|
-+
|
|
1276
|
|
-+// Instances returns an implementation of Instances for Cascade Controller.
|
|
1277
|
|
-+func (cc *CascadeCloud) Instances() (cloudprovider.Instances, bool) {
|
|
1278
|
|
-+ return cc, true
|
|
1279
|
|
-+}
|
|
1280
|
|
-+
|
|
1281
|
|
-+func (cc *CascadeCloud) Clusters() (cloudprovider.Clusters, bool) {
|
|
1282
|
|
-+ return nil, true
|
|
1283
|
|
-+}
|
|
1284
|
|
-+
|
|
1285
|
|
-+// ProviderName returns the cloud provider ID.
|
|
1286
|
|
-+func (cc *CascadeCloud) ProviderName() string {
|
|
1287
|
|
-+ return ProviderName
|
|
1288
|
|
-+}
|
|
1289
|
|
-+
|
|
1290
|
|
-+// LoadBalancer returns an implementation of LoadBalancer for Cascade Controller.
|
|
1291
|
|
-+func (cc *CascadeCloud) LoadBalancer() (cloudprovider.LoadBalancer, bool) {
|
|
1292
|
|
-+ return cc, true
|
|
1293
|
|
-+}
|
|
1294
|
|
-+
|
|
1295
|
|
-+// Zones returns an implementation of Zones for Cascade Controller.
|
|
1296
|
|
-+func (cc *CascadeCloud) Zones() (cloudprovider.Zones, bool) {
|
|
1297
|
|
-+ return cc, true
|
|
1298
|
|
-+}
|
|
1299
|
|
-+
|
|
1300
|
|
-+func (cc *CascadeCloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
|
|
1301
|
|
-+ return cloudprovider.Zone{
|
|
1302
|
|
-+ Region: cc.cfg.Global.Region,
|
|
1303
|
|
-+ FailureDomain: cc.cfg.Global.Zone,
|
|
1304
|
|
-+ }, nil
|
|
1305
|
|
-+}
|
|
1306
|
|
-+
|
|
1307
|
|
-+// GetZoneByProviderID implements Zones.GetZoneByProviderID
|
|
1308
|
|
-+// This is particularly useful in external cloud providers where the kubelet
|
|
1309
|
|
-+// does not initialize node data.
|
|
1310
|
|
-+func (cc *CascadeCloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error) {
|
|
1311
|
|
-+ return cloudprovider.Zone{}, errors.New("unimplemented")
|
|
1312
|
|
-+}
|
|
1313
|
|
-+
|
|
1314
|
|
-+// GetZoneByNodeName implements Zones.GetZoneByNodeName
|
|
1315
|
|
-+// This is particularly useful in external cloud providers where the kubelet
|
|
1316
|
|
-+// does not initialize node data.
|
|
1317
|
|
-+func (cc *CascadeCloud) GetZoneByNodeName(ctx context.Context, nodeName k8stypes.NodeName) (cloudprovider.Zone, error) {
|
|
1318
|
|
-+ return cloudprovider.Zone{}, errors.New("unimeplemented")
|
|
1319
|
|
-+}
|
|
1320
|
|
-+
|
|
1321
|
|
-+// Routes returns a false since the interface is not supported for Cascade controller.
|
|
1322
|
|
-+func (cc *CascadeCloud) Routes() (cloudprovider.Routes, bool) {
|
|
1323
|
|
-+ return nil, false
|
|
1324
|
|
-+}
|
|
|
1151
|
++go_test(
|
|
|
1152
|
++ name = "go_default_test",
|
|
|
1153
|
++ srcs = [
|
|
|
1154
|
++ "cascade_instances_test.go",
|
|
|
1155
|
++ ],
|
|
|
1156
|
++ embed = [":go_default_library"],
|
|
|
1157
|
++ deps = [
|
|
|
1158
|
++ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
|
1159
|
++ "//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
|
1160
|
++ ],
|
|
|
1161
|
++)
|
|
1325
|
1162
|
+
|
|
1326
|
|
-+// ScrubDNS filters DNS settings for pods.
|
|
1327
|
|
-+func (cc *CascadeCloud) ScrubDNS(nameservers, searches []string) (nsOut, srchOut []string) {
|
|
1328
|
|
-+ return nameservers, searches
|
|
1329
|
|
-+}
|
|
|
1163
|
++filegroup(
|
|
|
1164
|
++ name = "package-srcs",
|
|
|
1165
|
++ srcs = glob(["**"]),
|
|
|
1166
|
++ tags = ["automanaged"],
|
|
|
1167
|
++ visibility = ["//visibility:private"],
|
|
|
1168
|
++)
|
|
1330
|
1169
|
+
|
|
1331
|
|
-+// HasClusterID returns true if the cluster has a clusterID
|
|
1332
|
|
-+func (cc *CascadeCloud) HasClusterID() bool {
|
|
1333
|
|
-+ return true
|
|
1334
|
|
-+}
|
|
1335
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/cascade_disks.go b/pkg/cloudprovider/providers/cascade/cascade_disks.go
|
|
1336
|
|
-new file mode 100644
|
|
1337
|
|
-index 0000000..8431004
|
|
1338
|
|
-+++ b/pkg/cloudprovider/providers/cascade/cascade_disks.go
|
|
|
1170
|
++filegroup(
|
|
|
1171
|
++ name = "all-srcs",
|
|
|
1172
|
++ srcs = [":package-srcs"],
|
|
|
1173
|
++ tags = ["automanaged"],
|
|
|
1174
|
++)
|
|
|
1175
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_disks.go kubernetes/pkg/cloudprovider/providers/cascade/cascade_disks.go
|
|
|
1176
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_disks.go 1969-12-31 16:00:00.000000000 -0800
|
|
1339
|
1177
|
@@ -0,0 +1,227 @@
|
|
1340
|
1178
|
+package cascade
|
|
1341
|
1179
|
+
|
|
...
|
...
|
@@ -1566,11 +1236,227 @@ index 0000000..8431004
|
|
1566
|
1566
|
+
|
|
1567
|
1567
|
+ return labels, nil
|
|
1568
|
1568
|
+}
|
|
1569
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/cascade_instances.go b/pkg/cloudprovider/providers/cascade/cascade_instances.go
|
|
1570
|
|
-new file mode 100644
|
|
1571
|
|
-index 0000000..ee02e23
|
|
1572
|
|
-+++ b/pkg/cloudprovider/providers/cascade/cascade_instances.go
|
|
|
1569
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/cascade.go kubernetes/pkg/cloudprovider/providers/cascade/cascade.go
|
|
|
1570
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/cascade.go 1969-12-31 16:00:00.000000000 -0800
|
|
|
1571
|
+@@ -0,0 +1,214 @@
|
|
|
1572
|
++// The use of Cascade cloud provider requires the kubelet, kube-apiserver, and kube-controller-manager to be started
|
|
|
1573
|
++// with config flag: '--cloud-provider=cascade --cloud-config=[path_to_config_file]'.
|
|
|
1574
|
++package cascade
|
|
|
1575
|
++
|
|
|
1576
|
++import (
|
|
|
1577
|
++ "context"
|
|
|
1578
|
++ "errors"
|
|
|
1579
|
++ "fmt"
|
|
|
1580
|
++ "github.com/golang/glog"
|
|
|
1581
|
++ "gopkg.in/gcfg.v1"
|
|
|
1582
|
++ "io"
|
|
|
1583
|
++ k8stypes "k8s.io/apimachinery/pkg/types"
|
|
|
1584
|
++ "k8s.io/kubernetes/pkg/cloudprovider"
|
|
|
1585
|
++ "k8s.io/kubernetes/pkg/controller"
|
|
|
1586
|
++ "os"
|
|
|
1587
|
++ "strings"
|
|
|
1588
|
++)
|
|
|
1589
|
++
|
|
|
1590
|
++const (
|
|
|
1591
|
++ ProviderName = "vke"
|
|
|
1592
|
++ DiskSpecKind = "persistent-disk"
|
|
|
1593
|
++ MasterPrefix = "master"
|
|
|
1594
|
++)
|
|
|
1595
|
++
|
|
|
1596
|
++// CascadeCloud is an implementation of the cloud provider interface for Cascade Controller.
|
|
|
1597
|
++type CascadeCloud struct {
|
|
|
1598
|
++ cfg *CascadeConfig
|
|
|
1599
|
++ // Authentication client to get token for Cascade API calls
|
|
|
1600
|
++ authClient *AuthClient
|
|
|
1601
|
++ // API Client to make Cascade API calls
|
|
|
1602
|
++ apiClient *Client
|
|
|
1603
|
++ // local $HOSTNAME
|
|
|
1604
|
++ localHostname string
|
|
|
1605
|
++ // hostname from K8S, could be overridden
|
|
|
1606
|
++ localK8sHostname string
|
|
|
1607
|
++}
|
|
|
1608
|
++
|
|
|
1609
|
++// CascadeCloud represents Cascade cloud provider's configuration.
|
|
|
1610
|
++type CascadeConfig struct {
|
|
|
1611
|
++ Global struct {
|
|
|
1612
|
++ // the Cascade Controller endpoint
|
|
|
1613
|
++ CloudTarget string `gcfg:"target"`
|
|
|
1614
|
++ // Cascade Controller tenantName name
|
|
|
1615
|
++ TenantName string `gcfg:"tenantName"`
|
|
|
1616
|
++ // Cascade Controller cluster ID
|
|
|
1617
|
++ ClusterID string `gcfg:"clusterID"`
|
|
|
1618
|
++ // Authentication server endpoint for Cascade Controller
|
|
|
1619
|
++ AuthEndpoint string `gcfg:"authEndpoint"`
|
|
|
1620
|
++ // Lightwave domain name for the node
|
|
|
1621
|
++ DomainName string `gcfg:"domainName"`
|
|
|
1622
|
++ // DNS name of the node.
|
|
|
1623
|
++ DNSName string `gcfg:"dnsName"`
|
|
|
1624
|
++ // Region in which the cluster is in
|
|
|
1625
|
++ Region string `gcfg:"region"`
|
|
|
1626
|
++ // Availability zone in which the cluster is in
|
|
|
1627
|
++ Zone string `gcfg:"zone"`
|
|
|
1628
|
++ // IP address of the node.
|
|
|
1629
|
++ IPAddress string `gcfg:"ipAddress"`
|
|
|
1630
|
++ }
|
|
|
1631
|
++}
|
|
|
1632
|
++
|
|
|
1633
|
++// Disks is interface for manipulation with Cascade Controller Persistent Disks.
|
|
|
1634
|
++type Disks interface {
|
|
|
1635
|
++ // AttachDisk attaches given disk to given node. Current node
|
|
|
1636
|
++ // is used when nodeName is empty string.
|
|
|
1637
|
++ AttachDisk(diskID string, nodeName k8stypes.NodeName) (string, error)
|
|
|
1638
|
++
|
|
|
1639
|
++ // DetachDisk detaches given disk to given node. Current node
|
|
|
1640
|
++ // is used when nodeName is empty string.
|
|
|
1641
|
++ DetachDisk(diskID string, nodeName k8stypes.NodeName) error
|
|
|
1642
|
++
|
|
|
1643
|
++ // DiskIsAttached checks if a disk is attached to the given node.
|
|
|
1644
|
++ DiskIsAttached(diskID string, nodeName k8stypes.NodeName) (bool, error)
|
|
|
1645
|
++
|
|
|
1646
|
++ // DisksAreAttached is a batch function to check if a list of disks are attached
|
|
|
1647
|
++ // to the node with the specified NodeName.
|
|
|
1648
|
++ DisksAreAttached(diskID []string, nodeName k8stypes.NodeName) (map[string]bool, error)
|
|
|
1649
|
++
|
|
|
1650
|
++ // CreateDisk creates a new PD with given properties.
|
|
|
1651
|
++ CreateDisk(volumeOptions *VolumeOptions) (diskID string, err error)
|
|
|
1652
|
++
|
|
|
1653
|
++ // DeleteDisk deletes PD.
|
|
|
1654
|
++ DeleteDisk(diskID string) error
|
|
|
1655
|
++
|
|
|
1656
|
++ // Get labels to apply to volume on creation.
|
|
|
1657
|
++ GetVolumeLabels(diskID string) (map[string]string, error)
|
|
|
1658
|
++}
|
|
|
1659
|
++
|
|
|
1660
|
++// VolumeOptions specifies capacity, tags, name and flavorID for a volume.
|
|
|
1661
|
++type VolumeOptions struct {
|
|
|
1662
|
++ CapacityGB int
|
|
|
1663
|
++ Tags map[string]string
|
|
|
1664
|
++ Name string
|
|
|
1665
|
++ Flavor string
|
|
|
1666
|
++}
|
|
|
1667
|
++
|
|
|
1668
|
++func readConfig(config io.Reader) (*CascadeConfig, error) {
|
|
|
1669
|
++ if config == nil {
|
|
|
1670
|
++ err := fmt.Errorf("Cascade Cloud Provider: config file is missing. Please restart with " +
|
|
|
1671
|
++ "--cloud-provider=cascade --cloud-config=[path_to_config_file]")
|
|
|
1672
|
++ return nil, err
|
|
|
1673
|
++ }
|
|
|
1674
|
++
|
|
|
1675
|
++ var cfg CascadeConfig
|
|
|
1676
|
++ err := gcfg.ReadInto(&cfg, config)
|
|
|
1677
|
++ return &cfg, err
|
|
|
1678
|
++}
|
|
|
1679
|
++
|
|
|
1680
|
++func init() {
|
|
|
1681
|
++ cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) {
|
|
|
1682
|
++ cfg, err := readConfig(config)
|
|
|
1683
|
++ if err != nil {
|
|
|
1684
|
++ glog.Errorf("Cascade Cloud Provider: failed to read in cloud provider config file. Error[%v]", err)
|
|
|
1685
|
++ return nil, err
|
|
|
1686
|
++ }
|
|
|
1687
|
++ return newCascadeCloud(cfg)
|
|
|
1688
|
++ })
|
|
|
1689
|
++}
|
|
|
1690
|
++
|
|
|
1691
|
++func newCascadeCloud(cfg *CascadeConfig) (*CascadeCloud, error) {
|
|
|
1692
|
++ if len(cfg.Global.CloudTarget) == 0 {
|
|
|
1693
|
++ return nil, fmt.Errorf("Cascade Controller endpoint was not specified.")
|
|
|
1694
|
++ }
|
|
|
1695
|
++
|
|
|
1696
|
++ // Get local hostname
|
|
|
1697
|
++ hostname, err := os.Hostname()
|
|
|
1698
|
++ if err != nil {
|
|
|
1699
|
++ glog.Errorf("Cascade Cloud Provider: get hostname failed. Error[%v]", err)
|
|
|
1700
|
++ return nil, err
|
|
|
1701
|
++ }
|
|
|
1702
|
++
|
|
|
1703
|
++ cc := CascadeCloud{
|
|
|
1704
|
++ cfg: cfg,
|
|
|
1705
|
++ localHostname: hostname,
|
|
|
1706
|
++ localK8sHostname: "",
|
|
|
1707
|
++ }
|
|
|
1708
|
++
|
|
|
1709
|
++ // Instantiate the auth and API clients only on the master nodes. Kubelets running on the workers don't need them as
|
|
|
1710
|
++ // they are used primarily for making API calls to Cascade.
|
|
|
1711
|
++ if strings.HasPrefix(hostname, MasterPrefix) {
|
|
|
1712
|
++ if cc.authClient, err = NewAuthClient(cfg); err != nil {
|
|
|
1713
|
++ return nil, err
|
|
|
1714
|
++ }
|
|
|
1715
|
++
|
|
|
1716
|
++ if cc.apiClient, err = NewClient(cfg, cc.authClient); err != nil {
|
|
|
1717
|
++ return nil, err
|
|
|
1718
|
++ }
|
|
|
1719
|
++ }
|
|
|
1720
|
++
|
|
|
1721
|
++ return &cc, nil
|
|
|
1722
|
++}
|
|
|
1723
|
++
|
|
|
1724
|
++// Initialize passes a Kubernetes clientBuilder interface to the cloud provider
|
|
|
1725
|
++func (cc *CascadeCloud) Initialize(clientBuilder controller.ControllerClientBuilder) {}
|
|
|
1726
|
++
|
|
|
1727
|
++// Instances returns an implementation of Instances for Cascade Controller.
|
|
|
1728
|
++func (cc *CascadeCloud) Instances() (cloudprovider.Instances, bool) {
|
|
|
1729
|
++ return cc, true
|
|
|
1730
|
++}
|
|
|
1731
|
++
|
|
|
1732
|
++func (cc *CascadeCloud) Clusters() (cloudprovider.Clusters, bool) {
|
|
|
1733
|
++ return nil, true
|
|
|
1734
|
++}
|
|
|
1735
|
++
|
|
|
1736
|
++// ProviderName returns the cloud provider ID.
|
|
|
1737
|
++func (cc *CascadeCloud) ProviderName() string {
|
|
|
1738
|
++ return ProviderName
|
|
|
1739
|
++}
|
|
|
1740
|
++
|
|
|
1741
|
++// LoadBalancer returns an implementation of LoadBalancer for Cascade Controller.
|
|
|
1742
|
++func (cc *CascadeCloud) LoadBalancer() (cloudprovider.LoadBalancer, bool) {
|
|
|
1743
|
++ return cc, true
|
|
|
1744
|
++}
|
|
|
1745
|
++
|
|
|
1746
|
++// Zones returns an implementation of Zones for Cascade Controller.
|
|
|
1747
|
++func (cc *CascadeCloud) Zones() (cloudprovider.Zones, bool) {
|
|
|
1748
|
++ return cc, true
|
|
|
1749
|
++}
|
|
|
1750
|
++
|
|
|
1751
|
++func (cc *CascadeCloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
|
|
|
1752
|
++ return cloudprovider.Zone{
|
|
|
1753
|
++ Region: cc.cfg.Global.Region,
|
|
|
1754
|
++ FailureDomain: cc.cfg.Global.Zone,
|
|
|
1755
|
++ }, nil
|
|
|
1756
|
++}
|
|
|
1757
|
++
|
|
|
1758
|
++// GetZoneByProviderID implements Zones.GetZoneByProviderID
|
|
|
1759
|
++// This is particularly useful in external cloud providers where the kubelet
|
|
|
1760
|
++// does not initialize node data.
|
|
|
1761
|
++func (cc *CascadeCloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error) {
|
|
|
1762
|
++ return cloudprovider.Zone{}, errors.New("unimplemented")
|
|
|
1763
|
++}
|
|
|
1764
|
++
|
|
|
1765
|
++// GetZoneByNodeName implements Zones.GetZoneByNodeName
|
|
|
1766
|
++// This is particularly useful in external cloud providers where the kubelet
|
|
|
1767
|
++// does not initialize node data.
|
|
|
1768
|
++func (cc *CascadeCloud) GetZoneByNodeName(ctx context.Context, nodeName k8stypes.NodeName) (cloudprovider.Zone, error) {
|
|
|
1769
|
++ return cloudprovider.Zone{}, errors.New("unimeplemented")
|
|
|
1770
|
++}
|
|
|
1771
|
++
|
|
|
1772
|
++// Routes returns a false since the interface is not supported for Cascade controller.
|
|
|
1773
|
++func (cc *CascadeCloud) Routes() (cloudprovider.Routes, bool) {
|
|
|
1774
|
++ return nil, false
|
|
|
1775
|
++}
|
|
|
1776
|
++
|
|
|
1777
|
++// ScrubDNS filters DNS settings for pods.
|
|
|
1778
|
++func (cc *CascadeCloud) ScrubDNS(nameservers, searches []string) (nsOut, srchOut []string) {
|
|
|
1779
|
++ return nameservers, searches
|
|
|
1780
|
++}
|
|
|
1781
|
++
|
|
|
1782
|
++// HasClusterID returns true if the cluster has a clusterID
|
|
|
1783
|
++func (cc *CascadeCloud) HasClusterID() bool {
|
|
|
1784
|
++ return true
|
|
|
1785
|
++}
|
|
|
1786
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_instances.go kubernetes/pkg/cloudprovider/providers/cascade/cascade_instances.go
|
|
|
1787
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_instances.go 1969-12-31 16:00:00.000000000 -0800
|
|
1573
|
1788
|
@@ -0,0 +1,92 @@
|
|
1574
|
1789
|
+package cascade
|
|
1575
|
1790
|
+
|
|
...
|
...
|
@@ -1664,11 +1550,9 @@ index 0000000..ee02e23
|
|
1664
|
1664
|
+func (cc *CascadeCloud) InstanceType(ctx context.Context, nodeName k8stypes.NodeName) (string, error) {
|
|
1665
|
1665
|
+ return "", nil
|
|
1666
|
1666
|
+}
|
|
1667
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/cascade_instances_test.go b/pkg/cloudprovider/providers/cascade/cascade_instances_test.go
|
|
1668
|
|
-new file mode 100644
|
|
1669
|
|
-index 0000000..8fb314d
|
|
1670
|
|
-+++ b/pkg/cloudprovider/providers/cascade/cascade_instances_test.go
|
|
|
1667
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_instances_test.go kubernetes/pkg/cloudprovider/providers/cascade/cascade_instances_test.go
|
|
|
1668
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_instances_test.go 1969-12-31 16:00:00.000000000 -0800
|
|
1671
|
1669
|
@@ -0,0 +1,44 @@
|
|
1672
|
1670
|
+package cascade
|
|
1673
|
1671
|
+
|
|
...
|
...
|
@@ -1714,11 +1598,9 @@ index 0000000..8fb314d
|
|
1714
|
1714
|
+ assert.Nil(t, err)
|
|
1715
|
1715
|
+ assert.Equal(t, expectedNodeAddresses, actualNodeAddresses)
|
|
1716
|
1716
|
+}
|
|
1717
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go b/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
|
|
1718
|
|
-new file mode 100644
|
|
1719
|
|
-index 0000000..6338072
|
|
1720
|
|
-+++ b/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
|
|
|
1717
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go kubernetes/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go
|
|
|
1718
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/cascade_loadbalancer.go 1969-12-31 16:00:00.000000000 -0800
|
|
1721
|
1719
|
@@ -0,0 +1,285 @@
|
|
1722
|
1720
|
+package cascade
|
|
1723
|
1721
|
+
|
|
...
|
...
|
@@ -2005,11 +1887,9 @@ index 0000000..6338072
|
|
2005
|
2005
|
+func (l *loadBalancerLogger) Infof(msgTemplate string, args ...interface{}) {
|
|
2006
|
2006
|
+ glog.Infoln(l.getLogMsg(msgTemplate, args))
|
|
2007
|
2007
|
+}
|
|
2008
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/client.go b/pkg/cloudprovider/providers/cascade/client.go
|
|
2009
|
|
-new file mode 100644
|
|
2010
|
|
-index 0000000..e4494e4
|
|
2011
|
|
-+++ b/pkg/cloudprovider/providers/cascade/client.go
|
|
|
2008
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/client.go kubernetes/pkg/cloudprovider/providers/cascade/client.go
|
|
|
2009
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/client.go 1969-12-31 16:00:00.000000000 -0800
|
|
2012
|
2010
|
@@ -0,0 +1,399 @@
|
|
2013
|
2011
|
+package cascade
|
|
2014
|
2012
|
+
|
|
...
|
...
|
@@ -2410,11 +2290,9 @@ index 0000000..e4494e4
|
|
2410
|
2410
|
+
|
|
2411
|
2411
|
+ return errorStep
|
|
2412
|
2412
|
+}
|
|
2413
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/oidcclient.go b/pkg/cloudprovider/providers/cascade/oidcclient.go
|
|
2414
|
|
-new file mode 100644
|
|
2415
|
|
-index 0000000..6a71cc1
|
|
2416
|
|
-+++ b/pkg/cloudprovider/providers/cascade/oidcclient.go
|
|
|
2413
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/oidcclient.go kubernetes/pkg/cloudprovider/providers/cascade/oidcclient.go
|
|
|
2414
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/oidcclient.go 1969-12-31 16:00:00.000000000 -0800
|
|
2417
|
2415
|
@@ -0,0 +1,297 @@
|
|
2418
|
2416
|
+package cascade
|
|
2419
|
2417
|
+
|
|
...
|
...
|
@@ -2713,11 +2591,16 @@ index 0000000..6a71cc1
|
|
2713
|
2713
|
+
|
|
2714
|
2714
|
+ return oidcErr
|
|
2715
|
2715
|
+}
|
|
2716
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/restclient.go b/pkg/cloudprovider/providers/cascade/restclient.go
|
|
2717
|
|
-new file mode 100644
|
|
2718
|
|
-index 0000000..71d8d1c
|
|
2719
|
|
-+++ b/pkg/cloudprovider/providers/cascade/restclient.go
|
|
|
2716
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/OWNERS kubernetes/pkg/cloudprovider/providers/cascade/OWNERS
|
|
|
2717
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/OWNERS 1969-12-31 16:00:00.000000000 -0800
|
|
|
2718
|
+@@ -0,0 +1,3 @@
|
|
|
2719
|
++maintainers:
|
|
|
2720
|
++- ashokc
|
|
|
2721
|
++- ysheng
|
|
|
2722
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/restclient.go kubernetes/pkg/cloudprovider/providers/cascade/restclient.go
|
|
|
2723
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/restclient.go 1969-12-31 16:00:00.000000000 -0800
|
|
2720
|
2724
|
@@ -0,0 +1,262 @@
|
|
2721
|
2725
|
+package cascade
|
|
2722
|
2726
|
+
|
|
...
|
...
|
@@ -2981,22 +2864,18 @@ index 0000000..71d8d1c
|
|
2981
|
2981
|
+ apiError.HttpStatusCode = res.StatusCode
|
|
2982
|
2982
|
+ return nil, apiError
|
|
2983
|
2983
|
+}
|
|
2984
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/tests_owed b/pkg/cloudprovider/providers/cascade/tests_owed
|
|
2985
|
|
-new file mode 100644
|
|
2986
|
|
-index 0000000..dff5ab1
|
|
2987
|
|
-+++ b/pkg/cloudprovider/providers/cascade/tests_owed
|
|
|
2984
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/tests_owed kubernetes/pkg/cloudprovider/providers/cascade/tests_owed
|
|
|
2985
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/tests_owed 1969-12-31 16:00:00.000000000 -0800
|
|
2988
|
2986
|
@@ -0,0 +1,5 @@
|
|
2989
|
2987
|
+
|
|
2990
|
2988
|
+Yu Sheng
|
|
2991
|
2989
|
+Change-Id: Ifc11818f65a3e018aeea6988d9e2c0719b592920
|
|
2992
|
2990
|
+
|
|
2993
|
2991
|
+
|
|
2994
|
|
-diff --git a/pkg/cloudprovider/providers/cascade/utils.go b/pkg/cloudprovider/providers/cascade/utils.go
|
|
2995
|
|
-new file mode 100644
|
|
2996
|
|
-index 0000000..4e9e44c
|
|
2997
|
|
-+++ b/pkg/cloudprovider/providers/cascade/utils.go
|
|
|
2992
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/cascade/utils.go kubernetes/pkg/cloudprovider/providers/cascade/utils.go
|
|
|
2993
|
+--- kubernetes-old/pkg/cloudprovider/providers/cascade/utils.go 1969-12-31 16:00:00.000000000 -0800
|
|
2998
|
2994
|
@@ -0,0 +1,25 @@
|
|
2999
|
2995
|
+package cascade
|
|
3000
|
2996
|
+
|
|
...
|
...
|
@@ -3024,11 +2903,10 @@ index 0000000..4e9e44c
|
|
3024
|
3024
|
+ return &s
|
|
3025
|
3025
|
+}
|
|
3026
|
3026
|
\ No newline at end of file
|
|
3027
|
|
-diff --git a/pkg/cloudprovider/providers/providers.go b/pkg/cloudprovider/providers/providers.go
|
|
3028
|
|
-index 7de9ca9..6d8a1d2 100644
|
|
3029
|
|
-+++ b/pkg/cloudprovider/providers/providers.go
|
|
3030
|
|
-@@ -20,6 +20,7 @@ import (
|
|
|
3027
|
+diff -duNr --no-dereference kubernetes-old/pkg/cloudprovider/providers/providers.go kubernetes/pkg/cloudprovider/providers/providers.go
|
|
|
3028
|
+--- kubernetes-old/pkg/cloudprovider/providers/providers.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3029
|
+@@ -20,6 +20,7 @@
|
|
3031
|
3030
|
// Cloud providers
|
|
3032
|
3031
|
_ "k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
|
|
3033
|
3032
|
_ "k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
|
|
...
|
...
|
@@ -3036,11 +2914,50 @@ index 7de9ca9..6d8a1d2 100644
|
|
3036
|
3036
|
_ "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack"
|
|
3037
|
3037
|
_ "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
|
3038
|
3038
|
_ "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack"
|
|
3039
|
|
-diff --git a/pkg/kubeapiserver/options/plugins.go b/pkg/kubeapiserver/options/plugins.go
|
|
3040
|
|
-index 75095b2..0914847 100644
|
|
3041
|
|
-+++ b/pkg/kubeapiserver/options/plugins.go
|
|
3042
|
|
-@@ -58,6 +58,7 @@ import (
|
|
|
3039
|
+diff -duNr --no-dereference kubernetes-old/pkg/kubeapiserver/authorizer/config.go kubernetes/pkg/kubeapiserver/authorizer/config.go
|
|
|
3040
|
+--- kubernetes-old/pkg/kubeapiserver/authorizer/config.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3041
|
+@@ -33,6 +33,7 @@
|
|
|
3042
|
+ "k8s.io/kubernetes/plugin/pkg/auth/authorizer/node"
|
|
|
3043
|
+ "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac"
|
|
|
3044
|
+ "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy"
|
|
|
3045
|
++ "k8s.io/kubernetes/plugin/pkg/auth/authorizer/vke"
|
|
|
3046
|
+ )
|
|
|
3047
|
+
|
|
|
3048
|
+ type AuthorizationConfig struct {
|
|
|
3049
|
+@@ -86,7 +87,12 @@
|
|
|
3050
|
+ )
|
|
|
3051
|
+ nodeAuthorizer := node.NewAuthorizer(graph, nodeidentifier.NewDefaultNodeIdentifier(), bootstrappolicy.NodeRules())
|
|
|
3052
|
+ authorizers = append(authorizers, nodeAuthorizer)
|
|
|
3053
|
+-
|
|
|
3054
|
++ case modes.ModeVKE:
|
|
|
3055
|
++ vkeAuthorizer, err := vke.NewAuthorizer()
|
|
|
3056
|
++ if err != nil {
|
|
|
3057
|
++ return nil, nil, err
|
|
|
3058
|
++ }
|
|
|
3059
|
++ authorizers = append(authorizers, vkeAuthorizer)
|
|
|
3060
|
+ case modes.ModeAlwaysAllow:
|
|
|
3061
|
+ alwaysAllowAuthorizer := authorizerfactory.NewAlwaysAllowAuthorizer()
|
|
|
3062
|
+ authorizers = append(authorizers, alwaysAllowAuthorizer)
|
|
|
3063
|
+diff -duNr --no-dereference kubernetes-old/pkg/kubeapiserver/authorizer/modes/modes.go kubernetes/pkg/kubeapiserver/authorizer/modes/modes.go
|
|
|
3064
|
+--- kubernetes-old/pkg/kubeapiserver/authorizer/modes/modes.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3065
|
+@@ -25,9 +25,10 @@
|
|
|
3066
|
+ ModeWebhook string = "Webhook"
|
|
|
3067
|
+ ModeRBAC string = "RBAC"
|
|
|
3068
|
+ ModeNode string = "Node"
|
|
|
3069
|
++ ModeVKE string = "VKE"
|
|
|
3070
|
+ )
|
|
|
3071
|
+
|
|
|
3072
|
+-var AuthorizationModeChoices = []string{ModeAlwaysAllow, ModeAlwaysDeny, ModeABAC, ModeWebhook, ModeRBAC, ModeNode}
|
|
|
3073
|
++var AuthorizationModeChoices = []string{ModeAlwaysAllow, ModeAlwaysDeny, ModeABAC, ModeWebhook, ModeRBAC, ModeNode, ModeVKE}
|
|
|
3074
|
+
|
|
|
3075
|
+ // IsValidAuthorizationMode returns true if the given authorization mode is a valid one for the apiserver
|
|
|
3076
|
+ func IsValidAuthorizationMode(authzMode string) bool {
|
|
|
3077
|
+diff -duNr --no-dereference kubernetes-old/pkg/kubeapiserver/options/plugins.go kubernetes/pkg/kubeapiserver/options/plugins.go
|
|
|
3078
|
+--- kubernetes-old/pkg/kubeapiserver/options/plugins.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3079
|
+@@ -58,6 +58,7 @@
|
|
3043
|
3080
|
"k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle"
|
|
3044
|
3081
|
mutatingwebhook "k8s.io/apiserver/pkg/admission/plugin/webhook/mutating"
|
|
3045
|
3082
|
validatingwebhook "k8s.io/apiserver/pkg/admission/plugin/webhook/validating"
|
|
...
|
...
|
@@ -3048,7 +2965,7 @@ index 75095b2..0914847 100644
|
|
3048
|
3048
|
)
|
|
3049
|
3049
|
|
|
3050
|
3050
|
// AllOrderedPlugins is the list of all the plugins in order.
|
|
3051
|
|
-@@ -93,6 +94,7 @@ var AllOrderedPlugins = []string{
|
|
|
3051
|
+@@ -93,6 +94,7 @@
|
|
3052
|
3052
|
initialization.PluginName, // Initializers
|
|
3053
|
3053
|
validatingwebhook.PluginName, // ValidatingAdmissionWebhook
|
|
3054
|
3054
|
resourcequota.PluginName, // ResourceQuota
|
|
...
|
...
|
@@ -3056,7 +2973,7 @@ index 75095b2..0914847 100644
|
|
3056
|
3056
|
deny.PluginName, // AlwaysDeny
|
|
3057
|
3057
|
}
|
|
3058
|
3058
|
|
|
3059
|
|
-@@ -126,6 +128,7 @@ func RegisterAllAdmissionPlugins(plugins *admission.Plugins) {
|
|
|
3059
|
+@@ -126,6 +128,7 @@
|
|
3060
|
3060
|
setdefault.Register(plugins)
|
|
3061
|
3061
|
resize.Register(plugins)
|
|
3062
|
3062
|
storageobjectinuseprotection.Register(plugins)
|
|
...
|
...
|
@@ -3064,11 +2981,10 @@ index 75095b2..0914847 100644
|
|
3064
|
3064
|
}
|
|
3065
|
3065
|
|
|
3066
|
3066
|
// DefaultOffAdmissionPlugins get admission plugins off by default for kube-apiserver.
|
|
3067
|
|
-diff --git a/pkg/printers/internalversion/describe.go b/pkg/printers/internalversion/describe.go
|
|
3068
|
|
-index 318148d..bd26dc6 100644
|
|
3069
|
|
-+++ b/pkg/printers/internalversion/describe.go
|
|
3070
|
|
-@@ -754,6 +754,8 @@ func describeVolumes(volumes []api.Volume, w PrefixWriter, space string) {
|
|
|
3067
|
+diff -duNr --no-dereference kubernetes-old/pkg/printers/internalversion/describe.go kubernetes/pkg/printers/internalversion/describe.go
|
|
|
3068
|
+--- kubernetes-old/pkg/printers/internalversion/describe.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3069
|
+@@ -754,6 +754,8 @@
|
|
3071
|
3070
|
printFlexVolumeSource(volume.VolumeSource.FlexVolume, w)
|
|
3072
|
3071
|
case volume.VolumeSource.Flocker != nil:
|
|
3073
|
3072
|
printFlockerVolumeSource(volume.VolumeSource.Flocker, w)
|
|
...
|
...
|
@@ -3077,7 +2993,7 @@ index 318148d..bd26dc6 100644
|
|
3077
|
3077
|
default:
|
|
3078
|
3078
|
w.Write(LEVEL_1, "<unknown>\n")
|
|
3079
|
3079
|
}
|
|
3080
|
|
-@@ -1114,6 +1116,13 @@ func printCSIPersistentVolumeSource(csi *api.CSIPersistentVolumeSource, w Prefix
|
|
|
3080
|
+@@ -1114,6 +1116,13 @@
|
|
3081
|
3081
|
csi.Driver, csi.VolumeHandle, csi.ReadOnly)
|
|
3082
|
3082
|
}
|
|
3083
|
3083
|
|
|
...
|
...
|
@@ -3091,7 +3007,7 @@ index 318148d..bd26dc6 100644
|
|
3091
|
3091
|
type PersistentVolumeDescriber struct {
|
|
3092
|
3092
|
clientset.Interface
|
|
3093
|
3093
|
}
|
|
3094
|
|
-@@ -1250,6 +1259,8 @@ func describePersistentVolume(pv *api.PersistentVolume, events *api.EventList) (
|
|
|
3094
|
+@@ -1250,6 +1259,8 @@
|
|
3095
|
3095
|
printFlockerVolumeSource(pv.Spec.Flocker, w)
|
|
3096
|
3096
|
case pv.Spec.CSI != nil:
|
|
3097
|
3097
|
printCSIPersistentVolumeSource(pv.Spec.CSI, w)
|
|
...
|
...
|
@@ -3100,11 +3016,10 @@ index 318148d..bd26dc6 100644
|
|
3100
|
3100
|
default:
|
|
3101
|
3101
|
w.Write(LEVEL_1, "<unknown>\n")
|
|
3102
|
3102
|
}
|
|
3103
|
|
-diff --git a/pkg/security/podsecuritypolicy/util/util.go b/pkg/security/podsecuritypolicy/util/util.go
|
|
3104
|
|
-index d581f50..bfd21b1 100644
|
|
3105
|
|
-+++ b/pkg/security/podsecuritypolicy/util/util.go
|
|
3106
|
|
-@@ -68,6 +68,7 @@ func GetAllFSTypesAsSet() sets.String {
|
|
|
3103
|
+diff -duNr --no-dereference kubernetes-old/pkg/security/podsecuritypolicy/util/util.go kubernetes/pkg/security/podsecuritypolicy/util/util.go
|
|
|
3104
|
+--- kubernetes-old/pkg/security/podsecuritypolicy/util/util.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
3105
|
+@@ -68,6 +68,7 @@
|
|
3107
|
3106
|
string(extensions.PortworxVolume),
|
|
3108
|
3107
|
string(extensions.ScaleIO),
|
|
3109
|
3108
|
string(extensions.CSI),
|
|
...
|
...
|
@@ -3112,7 +3027,7 @@ index d581f50..bfd21b1 100644
|
|
3112
|
3112
|
)
|
|
3113
|
3113
|
return fstypes
|
|
3114
|
3114
|
}
|
|
3115
|
|
-@@ -129,6 +130,8 @@ func GetVolumeFSType(v api.Volume) (extensions.FSType, error) {
|
|
|
3115
|
+@@ -129,6 +130,8 @@
|
|
3116
|
3116
|
return extensions.PortworxVolume, nil
|
|
3117
|
3117
|
case v.ScaleIO != nil:
|
|
3118
|
3118
|
return extensions.ScaleIO, nil
|
|
...
|
...
|
@@ -3121,68 +3036,9 @@ index d581f50..bfd21b1 100644
|
|
3121
|
3121
|
}
|
|
3122
|
3122
|
|
|
3123
|
3123
|
return "", fmt.Errorf("unknown volume type for volume: %#v", v)
|
|
3124
|
|
-diff --git a/pkg/volume/cascade_disk/BUILD b/pkg/volume/cascade_disk/BUILD
|
|
3125
|
|
-new file mode 100644
|
|
3126
|
|
-index 0000000..3386612
|
|
3127
|
|
-+++ b/pkg/volume/cascade_disk/BUILD
|
|
3128
|
|
-@@ -0,0 +1,43 @@
|
|
3129
|
|
-+package(default_visibility = ["//visibility:public"])
|
|
3130
|
|
-+
|
|
3131
|
|
-+load(
|
|
3132
|
|
-+ "@io_bazel_rules_go//go:def.bzl",
|
|
3133
|
|
-+ "go_library",
|
|
3134
|
|
-+ "go_test",
|
|
3135
|
|
-+)
|
|
3136
|
|
-+
|
|
3137
|
|
-+go_library(
|
|
3138
|
|
-+ name = "go_default_library",
|
|
3139
|
|
-+ srcs = [
|
|
3140
|
|
-+ "attacher.go",
|
|
3141
|
|
-+ "cascade_disk.go",
|
|
3142
|
|
-+ "cascade_util.go",
|
|
3143
|
|
-+ ],
|
|
3144
|
|
-+ deps = [
|
|
3145
|
|
-+ "//pkg/cloudprovider:go_default_library",
|
|
3146
|
|
-+ "//pkg/cloudprovider/providers/cascade:go_default_library",
|
|
3147
|
|
-+ "//pkg/util/mount:go_default_library",
|
|
3148
|
|
-+ "//pkg/util/strings:go_default_library",
|
|
3149
|
|
-+ "//pkg/volume:go_default_library",
|
|
3150
|
|
-+ "//pkg/volume/util:go_default_library",
|
|
3151
|
|
-+ "//pkg/volume/util/volumehelper:go_default_library",
|
|
3152
|
|
-+ "//vendor/github.com/golang/glog:go_default_library",
|
|
3153
|
|
-+ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
3154
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
3155
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
3156
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
3157
|
|
-+ ],
|
|
3158
|
|
-+)
|
|
3159
|
|
-+
|
|
3160
|
|
-+filegroup(
|
|
3161
|
|
-+ name = "package-srcs",
|
|
3162
|
|
-+ srcs = glob(["**"]),
|
|
3163
|
|
-+ tags = ["automanaged"],
|
|
3164
|
|
-+ visibility = ["//visibility:private"],
|
|
3165
|
|
-+)
|
|
3166
|
|
-+
|
|
3167
|
|
-+filegroup(
|
|
3168
|
|
-+ name = "all-srcs",
|
|
3169
|
|
-+ srcs = [":package-srcs"],
|
|
3170
|
|
-+ tags = ["automanaged"],
|
|
3171
|
|
-+)
|
|
3172
|
|
-diff --git a/pkg/volume/cascade_disk/OWNERS b/pkg/volume/cascade_disk/OWNERS
|
|
3173
|
|
-new file mode 100644
|
|
3174
|
|
-index 0000000..c3a4ed7
|
|
3175
|
|
-+++ b/pkg/volume/cascade_disk/OWNERS
|
|
3176
|
|
-@@ -0,0 +1,2 @@
|
|
3177
|
|
-+maintainers:
|
|
3178
|
|
-+- ashokc
|
|
3179
|
|
-diff --git a/pkg/volume/cascade_disk/attacher.go b/pkg/volume/cascade_disk/attacher.go
|
|
3180
|
|
-new file mode 100644
|
|
3181
|
|
-index 0000000..c19c37c
|
|
3182
|
|
-+++ b/pkg/volume/cascade_disk/attacher.go
|
|
|
3124
|
+diff -duNr --no-dereference kubernetes-old/pkg/volume/cascade_disk/attacher.go kubernetes/pkg/volume/cascade_disk/attacher.go
|
|
|
3125
|
+--- kubernetes-old/pkg/volume/cascade_disk/attacher.go 1969-12-31 16:00:00.000000000 -0800
|
|
3183
|
3126
|
@@ -0,0 +1,264 @@
|
|
3184
|
3127
|
+package cascade_disk
|
|
3185
|
3128
|
+
|
|
...
|
...
|
@@ -3448,11 +3304,56 @@ index 0000000..c19c37c
|
|
3448
|
3448
|
+func (detacher *cascadeDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
|
3449
|
3449
|
+ return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
|
3450
|
3450
|
+}
|
|
3451
|
|
-diff --git a/pkg/volume/cascade_disk/cascade_disk.go b/pkg/volume/cascade_disk/cascade_disk.go
|
|
3452
|
|
-new file mode 100644
|
|
3453
|
|
-index 0000000..3968060
|
|
3454
|
|
-+++ b/pkg/volume/cascade_disk/cascade_disk.go
|
|
|
3451
|
+diff -duNr --no-dereference kubernetes-old/pkg/volume/cascade_disk/BUILD kubernetes/pkg/volume/cascade_disk/BUILD
|
|
|
3452
|
+--- kubernetes-old/pkg/volume/cascade_disk/BUILD 1969-12-31 16:00:00.000000000 -0800
|
|
|
3453
|
+@@ -0,0 +1,43 @@
|
|
|
3454
|
++package(default_visibility = ["//visibility:public"])
|
|
|
3455
|
++
|
|
|
3456
|
++load(
|
|
|
3457
|
++ "@io_bazel_rules_go//go:def.bzl",
|
|
|
3458
|
++ "go_library",
|
|
|
3459
|
++ "go_test",
|
|
|
3460
|
++)
|
|
|
3461
|
++
|
|
|
3462
|
++go_library(
|
|
|
3463
|
++ name = "go_default_library",
|
|
|
3464
|
++ srcs = [
|
|
|
3465
|
++ "attacher.go",
|
|
|
3466
|
++ "cascade_disk.go",
|
|
|
3467
|
++ "cascade_util.go",
|
|
|
3468
|
++ ],
|
|
|
3469
|
++ deps = [
|
|
|
3470
|
++ "//pkg/cloudprovider:go_default_library",
|
|
|
3471
|
++ "//pkg/cloudprovider/providers/cascade:go_default_library",
|
|
|
3472
|
++ "//pkg/util/mount:go_default_library",
|
|
|
3473
|
++ "//pkg/util/strings:go_default_library",
|
|
|
3474
|
++ "//pkg/volume:go_default_library",
|
|
|
3475
|
++ "//pkg/volume/util:go_default_library",
|
|
|
3476
|
++ "//pkg/volume/util/volumehelper:go_default_library",
|
|
|
3477
|
++ "//vendor/github.com/golang/glog:go_default_library",
|
|
|
3478
|
++ "//vendor/k8s.io/api/core/v1:go_default_library",
|
|
|
3479
|
++ "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
|
3480
|
++ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
|
3481
|
++ "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
|
3482
|
++ ],
|
|
|
3483
|
++)
|
|
|
3484
|
++
|
|
|
3485
|
++filegroup(
|
|
|
3486
|
++ name = "package-srcs",
|
|
|
3487
|
++ srcs = glob(["**"]),
|
|
|
3488
|
++ tags = ["automanaged"],
|
|
|
3489
|
++ visibility = ["//visibility:private"],
|
|
|
3490
|
++)
|
|
|
3491
|
++
|
|
|
3492
|
++filegroup(
|
|
|
3493
|
++ name = "all-srcs",
|
|
|
3494
|
++ srcs = [":package-srcs"],
|
|
|
3495
|
++ tags = ["automanaged"],
|
|
|
3496
|
++)
|
|
|
3497
|
+diff -duNr --no-dereference kubernetes-old/pkg/volume/cascade_disk/cascade_disk.go kubernetes/pkg/volume/cascade_disk/cascade_disk.go
|
|
|
3498
|
+--- kubernetes-old/pkg/volume/cascade_disk/cascade_disk.go 1969-12-31 16:00:00.000000000 -0800
|
|
3455
|
3499
|
@@ -0,0 +1,390 @@
|
|
3456
|
3500
|
+package cascade_disk
|
|
3457
|
3501
|
+
|
|
...
|
...
|
@@ -3844,11 +3745,9 @@ index 0000000..3968060
|
|
3844
|
3844
|
+
|
|
3845
|
3845
|
+ return nil, false, fmt.Errorf("Spec does not reference a Cascade disk type")
|
|
3846
|
3846
|
+}
|
|
3847
|
|
-diff --git a/pkg/volume/cascade_disk/cascade_util.go b/pkg/volume/cascade_disk/cascade_util.go
|
|
3848
|
|
-new file mode 100644
|
|
3849
|
|
-index 0000000..e08b7d0
|
|
3850
|
|
-+++ b/pkg/volume/cascade_disk/cascade_util.go
|
|
|
3847
|
+diff -duNr --no-dereference kubernetes-old/pkg/volume/cascade_disk/cascade_util.go kubernetes/pkg/volume/cascade_disk/cascade_util.go
|
|
|
3848
|
+--- kubernetes-old/pkg/volume/cascade_disk/cascade_util.go 1969-12-31 16:00:00.000000000 -0800
|
|
3851
|
3849
|
@@ -0,0 +1,152 @@
|
|
3852
|
3850
|
+package cascade_disk
|
|
3853
|
3851
|
+
|
|
...
|
...
|
@@ -4002,11 +3901,16 @@ index 0000000..e08b7d0
|
|
4002
|
4002
|
+
|
|
4003
|
4003
|
+ return resolved, nil
|
|
4004
|
4004
|
+}
|
|
4005
|
|
-diff --git a/plugin/pkg/admission/persistentvolume/label/admission.go b/plugin/pkg/admission/persistentvolume/label/admission.go
|
|
4006
|
|
-index 819adae..3d55589 100644
|
|
4007
|
|
-+++ b/plugin/pkg/admission/persistentvolume/label/admission.go
|
|
4008
|
|
-@@ -27,6 +27,7 @@ import (
|
|
|
4005
|
+diff -duNr --no-dereference kubernetes-old/pkg/volume/cascade_disk/OWNERS kubernetes/pkg/volume/cascade_disk/OWNERS
|
|
|
4006
|
+--- kubernetes-old/pkg/volume/cascade_disk/OWNERS 1969-12-31 16:00:00.000000000 -0800
|
|
|
4007
|
+@@ -0,0 +1,2 @@
|
|
|
4008
|
++maintainers:
|
|
|
4009
|
++- ashokc
|
|
|
4010
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/admission/persistentvolume/label/admission.go kubernetes/plugin/pkg/admission/persistentvolume/label/admission.go
|
|
|
4011
|
+--- kubernetes-old/plugin/pkg/admission/persistentvolume/label/admission.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
4012
|
+@@ -27,6 +27,7 @@
|
|
4009
|
4013
|
api "k8s.io/kubernetes/pkg/apis/core"
|
|
4010
|
4014
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
|
4011
|
4015
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
|
|
...
|
...
|
@@ -4014,7 +3918,7 @@ index 819adae..3d55589 100644
|
|
4014
|
4014
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
|
4015
|
4015
|
kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
|
|
4016
|
4016
|
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
|
4017
|
|
-@@ -52,6 +53,7 @@ type persistentVolumeLabel struct {
|
|
|
4017
|
+@@ -52,6 +53,7 @@
|
|
4018
|
4018
|
ebsVolumes aws.Volumes
|
|
4019
|
4019
|
cloudConfig []byte
|
|
4020
|
4020
|
gceCloudProvider *gce.GCECloud
|
|
...
|
...
|
@@ -4022,7 +3926,7 @@ index 819adae..3d55589 100644
|
|
4022
|
4022
|
}
|
|
4023
|
4023
|
|
|
4024
|
4024
|
var _ admission.MutationInterface = &persistentVolumeLabel{}
|
|
4025
|
|
-@@ -104,6 +106,13 @@ func (l *persistentVolumeLabel) Admit(a admission.Attributes) (err error) {
|
|
|
4025
|
+@@ -104,6 +106,13 @@
|
|
4026
|
4026
|
}
|
|
4027
|
4027
|
volumeLabels = labels
|
|
4028
|
4028
|
}
|
|
...
|
...
|
@@ -4036,7 +3940,7 @@ index 819adae..3d55589 100644
|
|
4036
|
4036
|
|
|
4037
|
4037
|
if len(volumeLabels) != 0 {
|
|
4038
|
4038
|
if volume.Labels == nil {
|
|
4039
|
|
-@@ -216,3 +225,48 @@ func (l *persistentVolumeLabel) getGCECloudProvider() (*gce.GCECloud, error) {
|
|
|
4039
|
+@@ -216,3 +225,48 @@
|
|
4040
|
4040
|
}
|
|
4041
|
4041
|
return l.gceCloudProvider, nil
|
|
4042
|
4042
|
}
|
|
...
|
...
|
@@ -4085,78 +3989,9 @@ index 819adae..3d55589 100644
|
|
4085
|
4085
|
+ }
|
|
4086
|
4086
|
+ return l.cascadeDisks, nil
|
|
4087
|
4087
|
+}
|
|
4088
|
|
-diff --git a/plugin/pkg/admission/vke/BUILD b/plugin/pkg/admission/vke/BUILD
|
|
4089
|
|
-new file mode 100644
|
|
4090
|
|
-index 0000000..2fb36c7
|
|
4091
|
|
-+++ b/plugin/pkg/admission/vke/BUILD
|
|
4092
|
|
-@@ -0,0 +1,60 @@
|
|
4093
|
|
-+package(default_visibility = ["//visibility:public"])
|
|
4094
|
|
-+
|
|
4095
|
|
-+load(
|
|
4096
|
|
-+ "@io_bazel_rules_go//go:def.bzl",
|
|
4097
|
|
-+ "go_library",
|
|
4098
|
|
-+)
|
|
4099
|
|
-+
|
|
4100
|
|
-+go_library(
|
|
4101
|
|
-+ name = "go_default_library",
|
|
4102
|
|
-+ srcs = ["admission.go"],
|
|
4103
|
|
-+ importpath = "k8s.io/kubernetes/plugin/pkg/admission/vke",
|
|
4104
|
|
-+ deps = [
|
|
4105
|
|
-+ "//pkg/apis/core:go_default_library",
|
|
4106
|
|
-+ "//pkg/apis/extensions:go_default_library",
|
|
4107
|
|
-+ "//pkg/apis/policy/v1beta1:go_default_library",
|
|
4108
|
|
-+ "//pkg/apis/rbac:go_default_library",
|
|
4109
|
|
-+ "//pkg/registry/rbac:go_default_library",
|
|
4110
|
|
-+ "//pkg/security/podsecuritypolicy:go_default_library",
|
|
4111
|
|
-+ "//vendor/github.com/golang/glog:go_default_library",
|
|
4112
|
|
-+ "//vendor/k8s.io/api/policy/v1beta1:go_default_library"
|
|
4113
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
|
4114
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
|
4115
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
|
4116
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
4117
|
|
-+ "//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
|
|
4118
|
|
-+ ],
|
|
4119
|
|
-+)
|
|
4120
|
|
-+
|
|
4121
|
|
-+go_test(
|
|
4122
|
|
-+ name = "go_default_test",
|
|
4123
|
|
-+ srcs = ["admission_test.go"],
|
|
4124
|
|
-+ embed = [":go_default_library"],
|
|
4125
|
|
-+ deps = [
|
|
4126
|
|
-+ "//pkg/apis/core:go_default_library",
|
|
4127
|
|
-+ "//pkg/apis/extensions:go_default_library",
|
|
4128
|
|
-+ "//pkg/apis/rbac:go_default_library",
|
|
4129
|
|
-+ "//pkg/registry/rbac:go_default_library",
|
|
4130
|
|
-+ "//pkg/security/podsecuritypolicy:go_default_library",
|
|
4131
|
|
-+ "//vendor/github.com/golang/glog:go_default_library",
|
|
4132
|
|
-+ "//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
4133
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
|
4134
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
|
4135
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
|
4136
|
|
-+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
4137
|
|
-+ "//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
|
|
4138
|
|
-+ ],
|
|
4139
|
|
-+)
|
|
4140
|
|
-+
|
|
4141
|
|
-+filegroup(
|
|
4142
|
|
-+ name = "package-srcs",
|
|
4143
|
|
-+ srcs = glob(["**"]),
|
|
4144
|
|
-+ tags = ["automanaged"],
|
|
4145
|
|
-+ visibility = ["//visibility:private"],
|
|
4146
|
|
-+)
|
|
4147
|
|
-+
|
|
4148
|
|
-+filegroup(
|
|
4149
|
|
-+ name = "all-srcs",
|
|
4150
|
|
-+ srcs = [":package-srcs"],
|
|
4151
|
|
-+ tags = ["automanaged"],
|
|
4152
|
|
-+)
|
|
4153
|
|
-\ No newline at end of file
|
|
4154
|
|
-diff --git a/plugin/pkg/admission/vke/admission.go b/plugin/pkg/admission/vke/admission.go
|
|
4155
|
|
-new file mode 100644
|
|
4156
|
|
-index 0000000..64c2d16
|
|
4157
|
|
-+++ b/plugin/pkg/admission/vke/admission.go
|
|
|
4088
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/admission/vke/admission.go kubernetes/plugin/pkg/admission/vke/admission.go
|
|
|
4089
|
+--- kubernetes-old/plugin/pkg/admission/vke/admission.go 1969-12-31 16:00:00.000000000 -0800
|
|
4158
|
4090
|
@@ -0,0 +1,554 @@
|
|
4159
|
4091
|
+package vke
|
|
4160
|
4092
|
+
|
|
...
|
...
|
@@ -4712,11 +4547,9 @@ index 0000000..64c2d16
|
|
4712
|
4712
|
+ }
|
|
4713
|
4713
|
+ return nil
|
|
4714
|
4714
|
+}
|
|
4715
|
|
-diff --git a/plugin/pkg/admission/vke/admission_test.go b/plugin/pkg/admission/vke/admission_test.go
|
|
4716
|
|
-new file mode 100644
|
|
4717
|
|
-index 0000000..4ce4a1f
|
|
4718
|
|
-+++ b/plugin/pkg/admission/vke/admission_test.go
|
|
|
4715
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/admission/vke/admission_test.go kubernetes/plugin/pkg/admission/vke/admission_test.go
|
|
|
4716
|
+--- kubernetes-old/plugin/pkg/admission/vke/admission_test.go 1969-12-31 16:00:00.000000000 -0800
|
|
4719
|
4717
|
@@ -0,0 +1,882 @@
|
|
4720
|
4718
|
+package vke
|
|
4721
|
4719
|
+
|
|
...
|
...
|
@@ -5600,11 +5433,182 @@ index 0000000..4ce4a1f
|
|
5600
|
5600
|
+ p.user.Groups = append(p.user.Groups, group)
|
|
5601
|
5601
|
+ return p
|
|
5602
|
5602
|
+}
|
|
5603
|
|
-diff --git a/staging/src/k8s.io/api/core/v1/generated.pb.go b/staging/src/k8s.io/api/core/v1/generated.pb.go
|
|
5604
|
|
-index 85c7b63..b97b2f1 100644
|
|
5605
|
|
-+++ b/staging/src/k8s.io/api/core/v1/generated.pb.go
|
|
5606
|
|
-@@ -35,6 +35,7 @@ limitations under the License.
|
|
|
5603
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/admission/vke/BUILD kubernetes/plugin/pkg/admission/vke/BUILD
|
|
|
5604
|
+--- kubernetes-old/plugin/pkg/admission/vke/BUILD 1969-12-31 16:00:00.000000000 -0800
|
|
|
5605
|
+@@ -0,0 +1,60 @@
|
|
|
5606
|
++package(default_visibility = ["//visibility:public"])
|
|
|
5607
|
++
|
|
|
5608
|
++load(
|
|
|
5609
|
++ "@io_bazel_rules_go//go:def.bzl",
|
|
|
5610
|
++ "go_library",
|
|
|
5611
|
++)
|
|
|
5612
|
++
|
|
|
5613
|
++go_library(
|
|
|
5614
|
++ name = "go_default_library",
|
|
|
5615
|
++ srcs = ["admission.go"],
|
|
|
5616
|
++ importpath = "k8s.io/kubernetes/plugin/pkg/admission/vke",
|
|
|
5617
|
++ deps = [
|
|
|
5618
|
++ "//pkg/apis/core:go_default_library",
|
|
|
5619
|
++ "//pkg/apis/extensions:go_default_library",
|
|
|
5620
|
++ "//pkg/apis/policy/v1beta1:go_default_library",
|
|
|
5621
|
++ "//pkg/apis/rbac:go_default_library",
|
|
|
5622
|
++ "//pkg/registry/rbac:go_default_library",
|
|
|
5623
|
++ "//pkg/security/podsecuritypolicy:go_default_library",
|
|
|
5624
|
++ "//vendor/github.com/golang/glog:go_default_library",
|
|
|
5625
|
++ "//vendor/k8s.io/api/policy/v1beta1:go_default_library"
|
|
|
5626
|
++ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
|
|
5627
|
++ "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
|
|
5628
|
++ "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
|
|
5629
|
++ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
|
5630
|
++ "//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
|
|
|
5631
|
++ ],
|
|
|
5632
|
++)
|
|
|
5633
|
++
|
|
|
5634
|
++go_test(
|
|
|
5635
|
++ name = "go_default_test",
|
|
|
5636
|
++ srcs = ["admission_test.go"],
|
|
|
5637
|
++ embed = [":go_default_library"],
|
|
|
5638
|
++ deps = [
|
|
|
5639
|
++ "//pkg/apis/core:go_default_library",
|
|
|
5640
|
++ "//pkg/apis/extensions:go_default_library",
|
|
|
5641
|
++ "//pkg/apis/rbac:go_default_library",
|
|
|
5642
|
++ "//pkg/registry/rbac:go_default_library",
|
|
|
5643
|
++ "//pkg/security/podsecuritypolicy:go_default_library",
|
|
|
5644
|
++ "//vendor/github.com/golang/glog:go_default_library",
|
|
|
5645
|
++ "//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
|
5646
|
++ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
|
|
5647
|
++ "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
|
|
5648
|
++ "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
|
|
5649
|
++ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
|
5650
|
++ "//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
|
|
|
5651
|
++ ],
|
|
|
5652
|
++)
|
|
|
5653
|
++
|
|
|
5654
|
++filegroup(
|
|
|
5655
|
++ name = "package-srcs",
|
|
|
5656
|
++ srcs = glob(["**"]),
|
|
|
5657
|
++ tags = ["automanaged"],
|
|
|
5658
|
++ visibility = ["//visibility:private"],
|
|
|
5659
|
++)
|
|
|
5660
|
++
|
|
|
5661
|
++filegroup(
|
|
|
5662
|
++ name = "all-srcs",
|
|
|
5663
|
++ srcs = [":package-srcs"],
|
|
|
5664
|
++ tags = ["automanaged"],
|
|
|
5665
|
++)
|
|
|
5666
|
+\ No newline at end of file
|
|
|
5667
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/auth/authorizer/vke/BUILD kubernetes/plugin/pkg/auth/authorizer/vke/BUILD
|
|
|
5668
|
+--- kubernetes-old/plugin/pkg/auth/authorizer/vke/BUILD 1969-12-31 16:00:00.000000000 -0800
|
|
|
5669
|
+@@ -0,0 +1,30 @@
|
|
|
5670
|
++package(default_visibility = ["//visibility:public"])
|
|
|
5671
|
++
|
|
|
5672
|
++load(
|
|
|
5673
|
++ "@io_bazel_rules_go//go:def.bzl",
|
|
|
5674
|
++ "go_library",
|
|
|
5675
|
++)
|
|
|
5676
|
++
|
|
|
5677
|
++go_library(
|
|
|
5678
|
++ name = "go_default_library",
|
|
|
5679
|
++ srcs = [
|
|
|
5680
|
++ "vke_authorizer.go",
|
|
|
5681
|
++ ],
|
|
|
5682
|
++ importpath = "k8s.io/kubernetes/plugin/pkg/auth/authorizer/vke",
|
|
|
5683
|
++ deps = [
|
|
|
5684
|
++ "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
|
|
|
5685
|
++ ],
|
|
|
5686
|
++)
|
|
|
5687
|
++
|
|
|
5688
|
++filegroup(
|
|
|
5689
|
++ name = "package-srcs",
|
|
|
5690
|
++ srcs = glob(["**"]),
|
|
|
5691
|
++ tags = ["automanaged"],
|
|
|
5692
|
++ visibility = ["//visibility:private"],
|
|
|
5693
|
++)
|
|
|
5694
|
++
|
|
|
5695
|
++filegroup(
|
|
|
5696
|
++ name = "all-srcs",
|
|
|
5697
|
++ srcs = [":package-srcs"],
|
|
|
5698
|
++ tags = ["automanaged"],
|
|
|
5699
|
++)
|
|
|
5700
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/auth/authorizer/vke/OWNERS kubernetes/plugin/pkg/auth/authorizer/vke/OWNERS
|
|
|
5701
|
+--- kubernetes-old/plugin/pkg/auth/authorizer/vke/OWNERS 1969-12-31 16:00:00.000000000 -0800
|
|
|
5702
|
+@@ -0,0 +1,2 @@
|
|
|
5703
|
++maintainers:
|
|
|
5704
|
++- ashokc
|
|
|
5705
|
+diff -duNr --no-dereference kubernetes-old/plugin/pkg/auth/authorizer/vke/vke_authorizer.go kubernetes/plugin/pkg/auth/authorizer/vke/vke_authorizer.go
|
|
|
5706
|
+--- kubernetes-old/plugin/pkg/auth/authorizer/vke/vke_authorizer.go 1969-12-31 16:00:00.000000000 -0800
|
|
|
5707
|
+@@ -0,0 +1,63 @@
|
|
|
5708
|
++package vke
|
|
|
5709
|
++
|
|
|
5710
|
++import (
|
|
|
5711
|
++ "bufio"
|
|
|
5712
|
++ "fmt"
|
|
|
5713
|
++ "os"
|
|
|
5714
|
++ "strings"
|
|
|
5715
|
++
|
|
|
5716
|
++ "github.com/golang/glog"
|
|
|
5717
|
++ "k8s.io/apiserver/pkg/authorization/authorizer"
|
|
|
5718
|
++)
|
|
|
5719
|
++
|
|
|
5720
|
++const systemClusterPrefix = "system:clusterID:"
|
|
|
5721
|
++
|
|
|
5722
|
++// VKEAuthorizer authorizes requests which comes from nodes using certificates.
|
|
|
5723
|
++// If a request is from a node which is not a part of the cluster, reject.
|
|
|
5724
|
++type VKEAuthorizer struct {
|
|
|
5725
|
++ clusterID string
|
|
|
5726
|
++}
|
|
|
5727
|
++
|
|
|
5728
|
++// NewAuthorizer returns a new node authorizer
|
|
|
5729
|
++func NewAuthorizer() (authorizer.Authorizer, error) {
|
|
|
5730
|
++ file, err := os.Open("/etc/kubernetes/cc_cloud.config")
|
|
|
5731
|
++ if err != nil {
|
|
|
5732
|
++ return nil, err
|
|
|
5733
|
++ }
|
|
|
5734
|
++ defer file.Close()
|
|
|
5735
|
++
|
|
|
5736
|
++ scanner := bufio.NewScanner(file)
|
|
|
5737
|
++
|
|
|
5738
|
++ for scanner.Scan() {
|
|
|
5739
|
++ lineContent := scanner.Text()
|
|
|
5740
|
++ if strings.Contains(lineContent, "clusterID = ") {
|
|
|
5741
|
++ clusterID := strings.SplitAfter(lineContent, "= ")[1]
|
|
|
5742
|
++ return &VKEAuthorizer{clusterID: clusterID}, nil
|
|
|
5743
|
++ }
|
|
|
5744
|
++ }
|
|
|
5745
|
++
|
|
|
5746
|
++ return nil, fmt.Errorf("Cluster ID cannot be parsed from config file successfully")
|
|
|
5747
|
++}
|
|
|
5748
|
++
|
|
|
5749
|
++// Authorize authorizes requests based on the VKE authorizer.
|
|
|
5750
|
++func (v *VKEAuthorizer) Authorize(attrs authorizer.Attributes) (authorizer.Decision, string, error) {
|
|
|
5751
|
++ if isNonClusterNode(attrs, v.clusterID) {
|
|
|
5752
|
++ glog.V(2).Infof("VKE authorizer: DENY the request because it is from a different cluster")
|
|
|
5753
|
++ return authorizer.DecisionDeny, "", nil
|
|
|
5754
|
++ }
|
|
|
5755
|
++ return authorizer.DecisionNoOpinion, "", nil
|
|
|
5756
|
++}
|
|
|
5757
|
++
|
|
|
5758
|
++func isNonClusterNode(attrs authorizer.Attributes, clusterID string) bool {
|
|
|
5759
|
++ groups := attrs.GetUser().GetGroups()
|
|
|
5760
|
++ for _, group := range groups {
|
|
|
5761
|
++ if strings.HasPrefix(group, systemClusterPrefix) {
|
|
|
5762
|
++ groupParts := strings.Split(group, ":")
|
|
|
5763
|
++ if clusterID != "" && groupParts[len(groupParts)-1] != clusterID {
|
|
|
5764
|
++ return true
|
|
|
5765
|
++ }
|
|
|
5766
|
++ }
|
|
|
5767
|
++ }
|
|
|
5768
|
++
|
|
|
5769
|
++ return false
|
|
|
5770
|
++}
|
|
|
5771
|
+diff -duNr --no-dereference kubernetes-old/staging/src/k8s.io/api/core/v1/generated.pb.go kubernetes/staging/src/k8s.io/api/core/v1/generated.pb.go
|
|
|
5772
|
+--- kubernetes-old/staging/src/k8s.io/api/core/v1/generated.pb.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
5773
|
+@@ -35,6 +35,7 @@
|
|
5607
|
5774
|
Binding
|
|
5608
|
5775
|
CSIPersistentVolumeSource
|
|
5609
|
5776
|
Capabilities
|
|
...
|
...
|
@@ -5612,7 +5616,7 @@ index 85c7b63..b97b2f1 100644
|
|
5612
|
5612
|
CephFSPersistentVolumeSource
|
|
5613
|
5613
|
CephFSVolumeSource
|
|
5614
|
5614
|
CinderVolumeSource
|
|
5615
|
|
-@@ -262,9 +263,11 @@ func (m *AvoidPods) Reset() { *m = AvoidPods{} }
|
|
|
5615
|
+@@ -262,9 +263,11 @@
|
|
5616
|
5616
|
func (*AvoidPods) ProtoMessage() {}
|
|
5617
|
5617
|
func (*AvoidPods) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
|
|
5618
|
5618
|
|
|
...
|
...
|
@@ -5627,7 +5631,7 @@ index 85c7b63..b97b2f1 100644
|
|
5627
|
5627
|
|
|
5628
|
5628
|
func (m *AzureFilePersistentVolumeSource) Reset() { *m = AzureFilePersistentVolumeSource{} }
|
|
5629
|
5629
|
func (*AzureFilePersistentVolumeSource) ProtoMessage() {}
|
|
5630
|
|
-@@ -1052,6 +1055,11 @@ func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) {
|
|
|
5630
|
+@@ -1052,6 +1055,11 @@
|
|
5631
|
5631
|
return fileDescriptorGenerated, []int{187}
|
|
5632
|
5632
|
}
|
|
5633
|
5633
|
|
|
...
|
...
|
@@ -5639,7 +5643,7 @@ index 85c7b63..b97b2f1 100644
|
|
5639
|
5639
|
func init() {
|
|
5640
|
5640
|
proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource")
|
|
5641
|
5641
|
proto.RegisterType((*Affinity)(nil), "k8s.io.api.core.v1.Affinity")
|
|
5642
|
|
-@@ -1063,6 +1071,7 @@ func init() {
|
|
|
5642
|
+@@ -1063,6 +1071,7 @@
|
|
5643
|
5643
|
proto.RegisterType((*Binding)(nil), "k8s.io.api.core.v1.Binding")
|
|
5644
|
5644
|
proto.RegisterType((*CSIPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CSIPersistentVolumeSource")
|
|
5645
|
5645
|
proto.RegisterType((*Capabilities)(nil), "k8s.io.api.core.v1.Capabilities")
|
|
...
|
...
|
@@ -5647,7 +5651,7 @@ index 85c7b63..b97b2f1 100644
|
|
5647
|
5647
|
proto.RegisterType((*CephFSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CephFSPersistentVolumeSource")
|
|
5648
|
5648
|
proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource")
|
|
5649
|
5649
|
proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource")
|
|
5650
|
|
-@@ -1683,6 +1692,32 @@ func (m *Capabilities) MarshalTo(dAtA []byte) (int, error) {
|
|
|
5650
|
+@@ -1683,6 +1692,32 @@
|
|
5651
|
5651
|
return i, nil
|
|
5652
|
5652
|
}
|
|
5653
|
5653
|
|
|
...
|
...
|
@@ -5680,7 +5684,7 @@ index 85c7b63..b97b2f1 100644
|
|
5680
|
5680
|
func (m *CephFSPersistentVolumeSource) Marshal() (dAtA []byte, err error) {
|
|
5681
|
5681
|
size := m.Size()
|
|
5682
|
5682
|
dAtA = make([]byte, size)
|
|
5683
|
|
-@@ -6447,13 +6482,13 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) {
|
|
|
5683
|
+@@ -6447,13 +6482,13 @@
|
|
5684
|
5684
|
}
|
|
5685
|
5685
|
i += n124
|
|
5686
|
5686
|
}
|
|
...
|
...
|
@@ -5697,7 +5701,7 @@ index 85c7b63..b97b2f1 100644
|
|
5697
|
5697
|
if err != nil {
|
|
5698
|
5698
|
return 0, err
|
|
5699
|
5699
|
}
|
|
5700
|
|
-@@ -6531,6 +6566,18 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) {
|
|
|
5700
|
+@@ -6531,6 +6566,18 @@
|
|
5701
|
5701
|
}
|
|
5702
|
5702
|
i += n131
|
|
5703
|
5703
|
}
|
|
...
|
...
|
@@ -5716,7 +5720,7 @@ index 85c7b63..b97b2f1 100644
|
|
5716
|
5716
|
return i, nil
|
|
5717
|
5717
|
}
|
|
5718
|
5718
|
|
|
5719
|
|
-@@ -10544,13 +10591,13 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) {
|
|
|
5719
|
+@@ -10544,13 +10591,13 @@
|
|
5720
|
5720
|
}
|
|
5721
|
5721
|
i += n229
|
|
5722
|
5722
|
}
|
|
...
|
...
|
@@ -5733,7 +5737,7 @@ index 85c7b63..b97b2f1 100644
|
|
5733
|
5733
|
if err != nil {
|
|
5734
|
5734
|
return 0, err
|
|
5735
|
5735
|
}
|
|
5736
|
|
-@@ -10616,6 +10663,18 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) {
|
|
|
5736
|
+@@ -10616,6 +10663,18 @@
|
|
5737
|
5737
|
}
|
|
5738
|
5738
|
i += n235
|
|
5739
|
5739
|
}
|
|
...
|
...
|
@@ -5752,7 +5756,7 @@ index 85c7b63..b97b2f1 100644
|
|
5752
|
5752
|
return i, nil
|
|
5753
|
5753
|
}
|
|
5754
|
5754
|
|
|
5755
|
|
-@@ -10873,6 +10932,16 @@ func (m *Capabilities) Size() (n int) {
|
|
|
5755
|
+@@ -10873,6 +10932,16 @@
|
|
5756
|
5756
|
return n
|
|
5757
|
5757
|
}
|
|
5758
|
5758
|
|
|
...
|
...
|
@@ -5769,7 +5773,7 @@ index 85c7b63..b97b2f1 100644
|
|
5769
|
5769
|
func (m *CephFSPersistentVolumeSource) Size() (n int) {
|
|
5770
|
5770
|
var l int
|
|
5771
|
5771
|
_ = l
|
|
5772
|
|
-@@ -12616,8 +12685,8 @@ func (m *PersistentVolumeSource) Size() (n int) {
|
|
|
5772
|
+@@ -12616,8 +12685,8 @@
|
|
5773
|
5773
|
l = m.Quobyte.Size()
|
|
5774
|
5774
|
n += 1 + l + sovGenerated(uint64(l))
|
|
5775
|
5775
|
}
|
|
...
|
...
|
@@ -5780,7 +5784,7 @@ index 85c7b63..b97b2f1 100644
|
|
5780
|
5780
|
n += 2 + l + sovGenerated(uint64(l))
|
|
5781
|
5781
|
}
|
|
5782
|
5782
|
if m.PhotonPersistentDisk != nil {
|
|
5783
|
|
-@@ -12644,6 +12713,10 @@ func (m *PersistentVolumeSource) Size() (n int) {
|
|
|
5783
|
+@@ -12644,6 +12713,10 @@
|
|
5784
|
5784
|
l = m.CSI.Size()
|
|
5785
|
5785
|
n += 2 + l + sovGenerated(uint64(l))
|
|
5786
|
5786
|
}
|
|
...
|
...
|
@@ -5791,7 +5795,7 @@ index 85c7b63..b97b2f1 100644
|
|
5791
|
5791
|
return n
|
|
5792
|
5792
|
}
|
|
5793
|
5793
|
|
|
5794
|
|
-@@ -14098,8 +14171,8 @@ func (m *VolumeSource) Size() (n int) {
|
|
|
5794
|
+@@ -14098,8 +14171,8 @@
|
|
5795
|
5795
|
l = m.Quobyte.Size()
|
|
5796
|
5796
|
n += 2 + l + sovGenerated(uint64(l))
|
|
5797
|
5797
|
}
|
|
...
|
...
|
@@ -5802,7 +5806,7 @@ index 85c7b63..b97b2f1 100644
|
|
5802
|
5802
|
n += 2 + l + sovGenerated(uint64(l))
|
|
5803
|
5803
|
}
|
|
5804
|
5804
|
if m.PhotonPersistentDisk != nil {
|
|
5805
|
|
-@@ -14122,6 +14195,10 @@ func (m *VolumeSource) Size() (n int) {
|
|
|
5805
|
+@@ -14122,6 +14195,10 @@
|
|
5806
|
5806
|
l = m.StorageOS.Size()
|
|
5807
|
5807
|
n += 2 + l + sovGenerated(uint64(l))
|
|
5808
|
5808
|
}
|
|
...
|
...
|
@@ -5813,7 +5817,7 @@ index 85c7b63..b97b2f1 100644
|
|
5813
|
5813
|
return n
|
|
5814
|
5814
|
}
|
|
5815
|
5815
|
|
|
5816
|
|
-@@ -14296,6 +14373,17 @@ func (this *Capabilities) String() string {
|
|
|
5816
|
+@@ -14296,6 +14373,17 @@
|
|
5817
|
5817
|
}, "")
|
|
5818
|
5818
|
return s
|
|
5819
|
5819
|
}
|
|
...
|
...
|
@@ -5831,7 +5835,7 @@ index 85c7b63..b97b2f1 100644
|
|
5831
|
5831
|
func (this *CephFSPersistentVolumeSource) String() string {
|
|
5832
|
5832
|
if this == nil {
|
|
5833
|
5833
|
return "nil"
|
|
5834
|
|
-@@ -15695,13 +15783,14 @@ func (this *PersistentVolumeSource) String() string {
|
|
|
5834
|
+@@ -15695,13 +15783,14 @@
|
|
5835
|
5835
|
`AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFilePersistentVolumeSource", "AzureFilePersistentVolumeSource", 1) + `,`,
|
|
5836
|
5836
|
`VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`,
|
|
5837
|
5837
|
`Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`,
|
|
...
|
...
|
@@ -5847,7 +5851,7 @@ index 85c7b63..b97b2f1 100644
|
|
5847
|
5847
|
`}`,
|
|
5848
|
5848
|
}, "")
|
|
5849
|
5849
|
return s
|
|
5850
|
|
-@@ -16843,12 +16932,13 @@ func (this *VolumeSource) String() string {
|
|
|
5850
|
+@@ -16843,12 +16932,13 @@
|
|
5851
|
5851
|
`ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapVolumeSource", "ConfigMapVolumeSource", 1) + `,`,
|
|
5852
|
5852
|
`VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`,
|
|
5853
|
5853
|
`Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`,
|
|
...
|
...
|
@@ -5862,7 +5866,7 @@ index 85c7b63..b97b2f1 100644
|
|
5862
|
5862
|
`}`,
|
|
5863
|
5863
|
}, "")
|
|
5864
|
5864
|
return s
|
|
5865
|
|
-@@ -35335,7 +35425,7 @@ func (m *PersistentVolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
5865
|
+@@ -35335,7 +35425,7 @@
|
|
5866
|
5866
|
iNdEx = postIndex
|
|
5867
|
5867
|
case 16:
|
|
5868
|
5868
|
if wireType != 2 {
|
|
...
|
...
|
@@ -5871,7 +5875,7 @@ index 85c7b63..b97b2f1 100644
|
|
5871
|
5871
|
}
|
|
5872
|
5872
|
var msglen int
|
|
5873
|
5873
|
for shift := uint(0); ; shift += 7 {
|
|
5874
|
|
-@@ -35359,10 +35449,10 @@ func (m *PersistentVolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
5874
|
+@@ -35359,10 +35449,10 @@
|
|
5875
|
5875
|
if postIndex > l {
|
|
5876
|
5876
|
return io.ErrUnexpectedEOF
|
|
5877
|
5877
|
}
|
|
...
|
...
|
@@ -5885,7 +5889,7 @@ index 85c7b63..b97b2f1 100644
|
|
5885
|
5885
|
return err
|
|
5886
|
5886
|
}
|
|
5887
|
5887
|
iNdEx = postIndex
|
|
5888
|
|
-@@ -35564,6 +35654,39 @@ func (m *PersistentVolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
5888
|
+@@ -35564,6 +35654,39 @@
|
|
5889
|
5889
|
return err
|
|
5890
|
5890
|
}
|
|
5891
|
5891
|
iNdEx = postIndex
|
|
...
|
...
|
@@ -5925,7 +5929,7 @@ index 85c7b63..b97b2f1 100644
|
|
5925
|
5925
|
default:
|
|
5926
|
5926
|
iNdEx = preIndex
|
|
5927
|
5927
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
|
5928
|
|
-@@ -36135,6 +36258,114 @@ func (m *PersistentVolumeStatus) Unmarshal(dAtA []byte) error {
|
|
|
5928
|
+@@ -36135,6 +36258,114 @@
|
|
5929
|
5929
|
}
|
|
5930
|
5930
|
return nil
|
|
5931
|
5931
|
}
|
|
...
|
...
|
@@ -6040,7 +6044,7 @@ index 85c7b63..b97b2f1 100644
|
|
6040
|
6040
|
func (m *PhotonPersistentDiskVolumeSource) Unmarshal(dAtA []byte) error {
|
|
6041
|
6041
|
l := len(dAtA)
|
|
6042
|
6042
|
iNdEx := 0
|
|
6043
|
|
-@@ -49741,7 +49972,7 @@ func (m *VolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
6043
|
+@@ -49741,7 +49972,7 @@
|
|
6044
|
6044
|
iNdEx = postIndex
|
|
6045
|
6045
|
case 22:
|
|
6046
|
6046
|
if wireType != 2 {
|
|
...
|
...
|
@@ -6049,7 +6053,7 @@ index 85c7b63..b97b2f1 100644
|
|
6049
|
6049
|
}
|
|
6050
|
6050
|
var msglen int
|
|
6051
|
6051
|
for shift := uint(0); ; shift += 7 {
|
|
6052
|
|
-@@ -49765,10 +49996,10 @@ func (m *VolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
6052
|
+@@ -49765,10 +49996,10 @@
|
|
6053
|
6053
|
if postIndex > l {
|
|
6054
|
6054
|
return io.ErrUnexpectedEOF
|
|
6055
|
6055
|
}
|
|
...
|
...
|
@@ -6063,7 +6067,7 @@ index 85c7b63..b97b2f1 100644
|
|
6063
|
6063
|
return err
|
|
6064
|
6064
|
}
|
|
6065
|
6065
|
iNdEx = postIndex
|
|
6066
|
|
-@@ -49937,6 +50168,39 @@ func (m *VolumeSource) Unmarshal(dAtA []byte) error {
|
|
|
6066
|
+@@ -49937,6 +50168,39 @@
|
|
6067
|
6067
|
return err
|
|
6068
|
6068
|
}
|
|
6069
|
6069
|
iNdEx = postIndex
|
|
...
|
...
|
@@ -6103,11 +6107,10 @@ index 85c7b63..b97b2f1 100644
|
|
6103
|
6103
|
default:
|
|
6104
|
6104
|
iNdEx = preIndex
|
|
6105
|
6105
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
|
6106
|
|
-diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go
|
|
6107
|
|
-index 08ef419..6fb4d80 100644
|
|
6108
|
|
-+++ b/staging/src/k8s.io/api/core/v1/types.go
|
|
6109
|
|
-@@ -333,9 +333,9 @@ type VolumeSource struct {
|
|
|
6106
|
+diff -duNr --no-dereference kubernetes-old/staging/src/k8s.io/api/core/v1/types.go kubernetes/staging/src/k8s.io/api/core/v1/types.go
|
|
|
6107
|
+--- kubernetes-old/staging/src/k8s.io/api/core/v1/types.go 2018-04-26 05:17:57.000000000 -0700
|
|
|
6108
|
+@@ -333,9 +333,9 @@
|
|
6110
|
6109
|
// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
|
|
6111
|
6110
|
// +optional
|
|
6112
|
6111
|
Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"`
|
|
...
|
...
|
@@ -6119,7 +6122,7 @@ index 08ef419..6fb4d80 100644
|
|
6119
|
6119
|
// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
|
|
6120
|
6120
|
PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"`
|
|
6121
|
6121
|
// Items for all in one resources secrets, configmaps, and downward API
|
|
6122
|
|
-@@ -349,6 +349,9 @@ type VolumeSource struct {
|
|
|
6122
|
+@@ -349,6 +349,9 @@
|
|
6123
|
6123
|
// StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
|
|
6124
|
6124
|
// +optional
|
|
6125
|
6125
|
StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"`
|
|
...
|
...
|
@@ -6129,7 +6132,7 @@ index 08ef419..6fb4d80 100644
|
|
6129
|
6129
|
}
|
|
6130
|
6130
|
|
|
6131
|
6131
|
// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
|
|
6132
|
|
-@@ -428,9 +431,9 @@ type PersistentVolumeSource struct {
|
|
|
6132
|
+@@ -428,9 +431,9 @@
|
|
6133
|
6133
|
// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
|
|
6134
|
6134
|
// +optional
|
|
6135
|
6135
|
Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"`
|
|
...
|
...
|
@@ -6141,7 +6144,7 @@ index 08ef419..6fb4d80 100644
|
|
6141
|
6141
|
// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
|
|
6142
|
6142
|
PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"`
|
|
6143
|
6143
|
// PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
|
|
6144
|
|
-@@ -449,6 +452,9 @@ type PersistentVolumeSource struct {
|
|
|
6144
|
+@@ -449,6 +452,9 @@
|
|
6145
|
6145
|
// CSI represents storage that handled by an external CSI driver (Beta feature).
|
|
6146
|
6146
|
// +optional
|
|
6147
|
6147
|
CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"`
|
|
...
|
...
|
@@ -6151,7 +6154,7 @@ index 08ef419..6fb4d80 100644
|
|
6151
|
6151
|
}
|
|
6152
|
6152
|
|
|
6153
|
6153
|
const (
|
|
6154
|
|
-@@ -1617,6 +1623,16 @@ type StorageOSPersistentVolumeSource struct {
|
|
|
6154
|
+@@ -1617,6 +1623,16 @@
|
|
6155
|
6155
|
SecretRef *ObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"`
|
|
6156
|
6156
|
}
|
|
6157
|
6157
|
|
|
...
|
...
|
@@ -6168,6 +6171,3 @@ index 08ef419..6fb4d80 100644
|
|
6168
|
6168
|
// Adapts a ConfigMap into a volume.
|
|
6169
|
6169
|
//
|
|
6170
|
6170
|
// The contents of the target ConfigMap's Data field will be presented in a
|
|
6171
|
|
-2.7.4
|
|
6172
|
|
-
|