6
6
7
7
"github.com/pkg/errors"
8
8
apps "k8s.io/api/apps/v1"
9
- v1 "k8s.io/api/core/v1"
9
+ v1 "k8s.io/api/apps/v1"
10
+ corev1 "k8s.io/api/core/v1"
10
11
kerrors "k8s.io/apimachinery/pkg/api/errors"
11
12
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12
13
@@ -15,20 +16,21 @@ import (
15
16
)
16
17
17
18
// startChunkServers start all chunkservers for each device of every node
18
- func (c * Cluster ) startChunkServers () error {
19
+ func (c * Cluster ) startChunkServers () ([]* v1.Deployment , error ) {
20
+ results := make ([]* v1.Deployment , 0 )
19
21
if len (job2DeviceInfos ) == 0 {
20
22
logger .Errorf ("no job to format device and provision chunk file" )
21
- return nil
23
+ return results , nil
22
24
}
23
25
24
26
if len (chunkserverConfigs ) == 0 {
25
27
logger .Errorf ("no device need to start chunkserver" )
26
- return nil
28
+ return results , nil
27
29
}
28
30
29
31
if len (job2DeviceInfos ) != len (chunkserverConfigs ) {
30
32
logger .Errorf ("no device need to start chunkserver" )
31
- return errors .New ("failed to start chunkserver because of job numbers is not equal with chunkserver config" )
33
+ return results , errors .New ("failed to start chunkserver because of job numbers is not equal with chunkserver config" )
32
34
}
33
35
34
36
_ = c .createStartCSConfigMap ()
@@ -41,18 +43,19 @@ func (c *Cluster) startChunkServers() error {
41
43
42
44
err := c .createConfigMap (csConfig )
43
45
if err != nil {
44
- return errors .Wrapf (err , "failed to create chunkserver configmap for %v" , config .ChunkserverConfigMapName )
46
+ return results , errors .Wrapf (err , "failed to create chunkserver configmap for %v" ,
47
+ config .ChunkserverConfigMapName )
45
48
}
46
49
47
50
d , err := c .makeDeployment (& csConfig )
48
51
if err != nil {
49
- return errors .Wrap (err , "failed to create chunkserver Deployment" )
52
+ return results , errors .Wrap (err , "failed to create chunkserver Deployment" )
50
53
}
51
54
52
55
newDeployment , err := c .context .Clientset .AppsV1 ().Deployments (c .namespacedName .Namespace ).Create (d )
53
56
if err != nil {
54
57
if ! kerrors .IsAlreadyExists (err ) {
55
- return errors .Wrapf (err , "failed to create chunkserver deployment %s" , csConfig .ResourceName )
58
+ return results , errors .Wrapf (err , "failed to create chunkserver deployment %s" , csConfig .ResourceName )
56
59
}
57
60
logger .Infof ("deployment for chunkserver %s already exists. updating if needed" , csConfig .ResourceName )
58
61
@@ -63,18 +66,18 @@ func (c *Cluster) startChunkServers() error {
63
66
} else {
64
67
logger .Infof ("Deployment %s has been created , waiting for startup" , newDeployment .GetName ())
65
68
// TODO:wait for the new deployment
66
- // deploymentsToWaitFor = append(deploymentsToWaitFor , newDeployment)
69
+ results = append (results , newDeployment )
67
70
}
68
71
// update condition type and phase etc.
69
72
}
70
-
71
- return nil
73
+ return results , nil
72
74
}
73
75
74
76
// createCSClientConfigMap create cs_client configmap
75
77
func (c * Cluster ) createCSClientConfigMap () error {
76
78
// 1. get mds-conf-template from cluster
77
- csClientCMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .CsClientConfigMapTemp , metav1.GetOptions {})
79
+ csClientCMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .CsClientConfigMapTemp ,
80
+ metav1.GetOptions {})
78
81
if err != nil {
79
82
logger .Errorf ("failed to get configmap %s from cluster" , config .CsClientConfigMapTemp )
80
83
if kerrors .IsNotFound (err ) {
@@ -88,14 +91,15 @@ func (c *Cluster) createCSClientConfigMap() error {
88
91
// 3. replace ${} to specific parameters
89
92
replacedCsClientData , err := config .ReplaceConfigVars (csClientCMData , & chunkserverConfigs [0 ])
90
93
if err != nil {
91
- return errors .Wrap (err , "failed to Replace cs_client config template to generate a new cs_client configmap to start server." )
94
+ return errors .Wrap (err ,
95
+ "failed to Replace cs_client config template to generate a new cs_client configmap to start server." )
92
96
}
93
97
94
98
csClientConfigMap := map [string ]string {
95
99
config .CSClientConfigMapDataKey : replacedCsClientData ,
96
100
}
97
101
98
- cm := & v1 .ConfigMap {
102
+ cm := & corev1 .ConfigMap {
99
103
ObjectMeta : metav1.ObjectMeta {
100
104
Name : config .CSClientConfigMapName ,
101
105
Namespace : c .namespacedName .Namespace ,
@@ -105,7 +109,8 @@ func (c *Cluster) createCSClientConfigMap() error {
105
109
106
110
err = c .ownerInfo .SetControllerReference (cm )
107
111
if err != nil {
108
- return errors .Wrapf (err , "failed to set owner reference to cs_client.conf configmap %q" , config .CSClientConfigMapName )
112
+ return errors .Wrapf (err , "failed to set owner reference to cs_client.conf configmap %q" ,
113
+ config .CSClientConfigMapName )
109
114
}
110
115
111
116
// Create cs_client configmap in cluster
@@ -119,7 +124,8 @@ func (c *Cluster) createCSClientConfigMap() error {
119
124
120
125
// CreateS3ConfigMap creates s3 configmap
121
126
func (c * Cluster ) CreateS3ConfigMap () error {
122
- s3CMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .S3ConfigMapTemp , metav1.GetOptions {})
127
+ s3CMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .S3ConfigMapTemp ,
128
+ metav1.GetOptions {})
123
129
if err != nil {
124
130
logger .Errorf ("failed to get configmap %s from cluster" , config .S3ConfigMapTemp )
125
131
if kerrors .IsNotFound (err ) {
@@ -146,7 +152,7 @@ func (c *Cluster) CreateS3ConfigMap() error {
146
152
config .S3ConfigMapDataKey : configMapData ,
147
153
}
148
154
149
- cm := & v1 .ConfigMap {
155
+ cm := & corev1 .ConfigMap {
150
156
ObjectMeta : metav1.ObjectMeta {
151
157
Name : config .S3ConfigMapName ,
152
158
Namespace : c .namespacedName .Namespace ,
@@ -175,7 +181,7 @@ func (c *Cluster) createStartCSConfigMap() error {
175
181
startChunkserverScriptFileDataKey : script .START ,
176
182
}
177
183
178
- cm := & v1 .ConfigMap {
184
+ cm := & corev1 .ConfigMap {
179
185
ObjectMeta : metav1.ObjectMeta {
180
186
Name : startChunkserverConfigMapName ,
181
187
Namespace : c .namespacedName .Namespace ,
@@ -199,7 +205,8 @@ func (c *Cluster) createStartCSConfigMap() error {
199
205
// createConfigMap create chunkserver configmap for chunkserver server
200
206
func (c * Cluster ) createConfigMap (csConfig chunkserverConfig ) error {
201
207
// 1. get mds-conf-template from cluster
202
- chunkserverCMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .ChunkServerConfigMapTemp , metav1.GetOptions {})
208
+ chunkserverCMTemplate , err := c .context .Clientset .CoreV1 ().ConfigMaps (c .namespacedName .Namespace ).Get (config .ChunkServerConfigMapTemp ,
209
+ metav1.GetOptions {})
203
210
if err != nil {
204
211
logger .Errorf ("failed to get configmap %s from cluster" , config .ChunkServerConfigMapTemp )
205
212
if kerrors .IsNotFound (err ) {
@@ -217,7 +224,8 @@ func (c *Cluster) createConfigMap(csConfig chunkserverConfig) error {
217
224
// 3. replace ${} to specific parameters
218
225
replacedChunkServerData , err := config .ReplaceConfigVars (chunkserverData , & csConfig )
219
226
if err != nil {
220
- return errors .Wrap (err , "failed to Replace chunkserver config template to generate a new chunkserver configmap to start server." )
227
+ return errors .Wrap (err ,
228
+ "failed to Replace chunkserver config template to generate a new chunkserver configmap to start server." )
221
229
}
222
230
223
231
// for debug
@@ -227,7 +235,7 @@ func (c *Cluster) createConfigMap(csConfig chunkserverConfig) error {
227
235
config .ChunkserverConfigMapDataKey : replacedChunkServerData ,
228
236
}
229
237
230
- cm := & v1 .ConfigMap {
238
+ cm := & corev1 .ConfigMap {
231
239
ObjectMeta : metav1.ObjectMeta {
232
240
Name : csConfig .CurrentConfigMapName ,
233
241
Namespace : c .namespacedName .Namespace ,
@@ -237,7 +245,8 @@ func (c *Cluster) createConfigMap(csConfig chunkserverConfig) error {
237
245
238
246
err = c .ownerInfo .SetControllerReference (cm )
239
247
if err != nil {
240
- return errors .Wrapf (err , "failed to set owner reference to chunkserverconfig configmap %q" , config .ChunkserverConfigMapName )
248
+ return errors .Wrapf (err , "failed to set owner reference to chunkserverconfig configmap %q" ,
249
+ config .ChunkserverConfigMapName )
241
250
}
242
251
243
252
// Create chunkserver config in cluster
@@ -254,19 +263,19 @@ func (c *Cluster) makeDeployment(csConfig *chunkserverConfig) (*apps.Deployment,
254
263
vols , _ := c .createTopoAndToolVolumeAndMount ()
255
264
volumes = append (volumes , vols ... )
256
265
257
- podSpec := v1 .PodTemplateSpec {
266
+ podSpec := corev1 .PodTemplateSpec {
258
267
ObjectMeta : metav1.ObjectMeta {
259
268
Name : csConfig .ResourceName ,
260
269
Labels : c .getChunkServerPodLabels (csConfig ),
261
270
},
262
- Spec : v1 .PodSpec {
263
- Containers : []v1 .Container {
271
+ Spec : corev1 .PodSpec {
272
+ Containers : []corev1 .Container {
264
273
c .makeCSDaemonContainer (csConfig ),
265
274
},
266
275
NodeName : csConfig .NodeName ,
267
- RestartPolicy : v1 .RestartPolicyAlways ,
276
+ RestartPolicy : corev1 .RestartPolicyAlways ,
268
277
HostNetwork : true ,
269
- DNSPolicy : v1 .DNSClusterFirstWithHostNet ,
278
+ DNSPolicy : corev1 .DNSClusterFirstWithHostNet ,
270
279
Volumes : volumes ,
271
280
},
272
281
}
@@ -301,7 +310,7 @@ func (c *Cluster) makeDeployment(csConfig *chunkserverConfig) (*apps.Deployment,
301
310
}
302
311
303
312
// makeCSDaemonContainer create chunkserver container
304
- func (c * Cluster ) makeCSDaemonContainer (csConfig * chunkserverConfig ) v1 .Container {
313
+ func (c * Cluster ) makeCSDaemonContainer (csConfig * chunkserverConfig ) corev1 .Container {
305
314
306
315
privileged := true
307
316
runAsUser := int64 (0 )
@@ -321,7 +330,7 @@ func (c *Cluster) makeCSDaemonContainer(csConfig *chunkserverConfig) v1.Containe
321
330
argsChunkserverPort := strconv .Itoa (csConfig .Port )
322
331
argsConfigFileMountPath := path .Join (config .ChunkserverConfigMapMountPathDir , config .ChunkserverConfigMapDataKey )
323
332
324
- container := v1 .Container {
333
+ container := corev1 .Container {
325
334
Name : "chunkserver" ,
326
335
Command : []string {
327
336
"/bin/bash" ,
@@ -339,16 +348,16 @@ func (c *Cluster) makeCSDaemonContainer(csConfig *chunkserverConfig) v1.Containe
339
348
Image : c .spec .CurveVersion .Image ,
340
349
ImagePullPolicy : c .spec .CurveVersion .ImagePullPolicy ,
341
350
VolumeMounts : volMounts ,
342
- Ports : []v1 .ContainerPort {
351
+ Ports : []corev1 .ContainerPort {
343
352
{
344
353
Name : "listen-port" ,
345
354
ContainerPort : int32 (csConfig .Port ),
346
355
HostPort : int32 (csConfig .Port ),
347
- Protocol : v1 .ProtocolTCP ,
356
+ Protocol : corev1 .ProtocolTCP ,
348
357
},
349
358
},
350
- Env : []v1 .EnvVar {{Name : "TZ" , Value : "Asia/Hangzhou" }},
351
- SecurityContext : & v1 .SecurityContext {
359
+ Env : []corev1 .EnvVar {{Name : "TZ" , Value : "Asia/Hangzhou" }},
360
+ SecurityContext : & corev1 .SecurityContext {
352
361
Privileged : & privileged ,
353
362
RunAsUser : & runAsUser ,
354
363
RunAsNonRoot : & runAsNonRoot ,
0 commit comments