Skip to content

Commit 5840b42

Browse files
committed
Code review
1 parent 0715a00 commit 5840b42

File tree

4 files changed

+198
-156
lines changed

4 files changed

+198
-156
lines changed

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func main() {
8181
KubeAdmExtraArguments: config.KubeAdm.ExtraArguments,
8282
}
8383

84-
if phSaveState == false || fileExists(phSavedState) == false {
84+
if !phSaveState || !fileExists(phSavedState) {
8585
phMultipassServer = &MultipassServer{
8686
ResourceLimiter: &ResourceLimiter{
8787
map[string]int64{ResourceNameCores: 1, ResourceNameMemory: 10000000},

node.go

Lines changed: 117 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,38 @@ import (
2121
type MultipassNodeState int32
2222

2323
const (
24+
multipassCommandLine string = "multipass"
25+
kubectlCommandLine string = "kubectl"
26+
kubeConfigArgument string = "--kubeconfig"
27+
deleteArgument string = "delete"
28+
nodeArgument string = "node"
29+
annotateArgument string = "annotate"
30+
labelArgument string = "label"
31+
nodesArgument string = "nodes"
32+
overwriteArgument string = "--overwrite"
33+
outputArgument string = "--output"
34+
jsonArgument string = "json"
35+
getArgument string = "get"
36+
copyFileArgument string = "copy-files"
37+
execArgument string = "exec"
38+
sudoArgument string = "sudo"
39+
dashDashArgument string = "--"
40+
kubeadmArgument string = "kubeadm"
41+
joinArgument string = "join"
42+
tokenArgument string = "--token"
43+
discoveryArgument string = "--discovery-token-ca-cert-hash"
44+
launchArgument string = "launch"
45+
nameArgument string = "--name"
46+
uncordonArgument string = "uncordon"
47+
cordonArgument string = "cordon"
48+
drainArgument string = "drain"
49+
deleteLocalArgument string = "--delete-local-data"
50+
forceArgument string = "--force"
51+
ignoreDaemonsetArgument string = "--ignore-daemonsets"
52+
purgeArgument string = "--purge"
53+
stopArgument string = "stop"
54+
startArgument string = "start"
55+
infoArgument string = "info"
2456
// MultipassNodeStateNotCreated not created state
2557
MultipassNodeStateNotCreated MultipassNodeState = 0
2658

@@ -144,11 +176,11 @@ func (vm *MultipassNode) prepareKubelet() error {
144176

145177
defer os.Remove(fName)
146178

147-
if out, err = pipe("multipass", "copy-files", fName, vm.NodeName+":"+fName); err != nil {
179+
if out, err = pipe(multipassCommandLine, copyFileArgument, fName, vm.NodeName+":"+fName); err != nil {
148180
return fmt.Errorf(errKubeletNotConfigured, vm.NodeName, out, err)
149181
}
150182

151-
if out, err = pipe("multipass", "exec", vm.NodeName, "--", "sudo", "bash", fName); err != nil {
183+
if out, err = pipe(multipassCommandLine, execArgument, vm.NodeName, dashDashArgument, sudoArgument, "bash", fName); err != nil {
152184
return fmt.Errorf(errKubeletNotConfigured, vm.NodeName, out, err)
153185
}
154186

@@ -163,13 +195,13 @@ func (vm *MultipassNode) waitReady(kubeconfig string) error {
163195
var out string
164196
var err error
165197
var arg = []string{
166-
"kubectl",
167-
"get",
168-
"nodes",
198+
kubectlCommandLine,
199+
getArgument,
200+
nodesArgument,
169201
vm.NodeName,
170-
"--output",
171-
"json",
172-
"--kubeconfig",
202+
outputArgument,
203+
jsonArgument,
204+
kubeConfigArgument,
173205
kubeconfig,
174206
}
175207

@@ -184,13 +216,9 @@ func (vm *MultipassNode) waitReady(kubeconfig string) error {
184216
}
185217

186218
for _, status := range nodeInfo.Status.Conditions {
187-
if status.Type == "Ready" {
188-
if b, e := strconv.ParseBool(string(status.Status)); e == nil {
189-
if b {
190-
glog.Infof("The kubernetes node %s is Ready", vm.NodeName)
191-
return nil
192-
}
193-
}
219+
if b, e := strconv.ParseBool(string(status.Status)); status.Type == "Ready" && e == nil && b {
220+
glog.Infof("The kubernetes node %s is Ready", vm.NodeName)
221+
return nil
194222
}
195223
}
196224

@@ -204,17 +232,17 @@ func (vm *MultipassNode) waitReady(kubeconfig string) error {
204232

205233
func (vm *MultipassNode) kubeAdmJoin(extras *nodeCreationExtra) error {
206234
args := []string{
207-
"multipass",
208-
"exec",
235+
multipassCommandLine,
236+
execArgument,
209237
vm.NodeName,
210-
"--",
211-
"sudo",
212-
"kubeadm",
213-
"join",
238+
dashDashArgument,
239+
sudoArgument,
240+
kubeadmArgument,
241+
joinArgument,
214242
extras.kubeHost,
215-
"--token",
243+
tokenArgument,
216244
extras.kubeToken,
217-
"--discovery-token-ca-cert-hash",
245+
discoveryArgument,
218246
extras.kubeCACert,
219247
}
220248

@@ -234,9 +262,9 @@ func (vm *MultipassNode) setNodeLabels(extras *nodeCreationExtra) error {
234262
if len(extras.nodeLabels)+len(extras.systemLabels) > 0 {
235263

236264
args := []string{
237-
"kubectl",
238-
"label",
239-
"nodes",
265+
kubectlCommandLine,
266+
labelArgument,
267+
nodesArgument,
240268
vm.NodeName,
241269
}
242270

@@ -249,7 +277,7 @@ func (vm *MultipassNode) setNodeLabels(extras *nodeCreationExtra) error {
249277
args = append(args, fmt.Sprintf("%s=%s", k, v))
250278
}
251279

252-
args = append(args, "--kubeconfig")
280+
args = append(args, kubeConfigArgument)
253281
args = append(args, extras.kubeConfig)
254282

255283
if err := shell(args...); err != nil {
@@ -258,15 +286,15 @@ func (vm *MultipassNode) setNodeLabels(extras *nodeCreationExtra) error {
258286
}
259287

260288
args := []string{
261-
"kubectl",
262-
"annotate",
263-
"node",
289+
kubectlCommandLine,
290+
annotateArgument,
291+
nodeArgument,
264292
vm.NodeName,
265293
fmt.Sprintf("%s=%s", nodeLabelGroupName, extras.nodegroupID),
266294
fmt.Sprintf("%s=%s", annotationNodeAutoProvisionned, strconv.FormatBool(vm.AutoProvisionned)),
267295
fmt.Sprintf("%s=%d", annotationNodeIndex, vm.NodeIndex),
268-
"--overwrite",
269-
"--kubeconfig",
296+
overwriteArgument,
297+
kubeConfigArgument,
270298
extras.kubeConfig,
271299
}
272300

@@ -280,7 +308,7 @@ func (vm *MultipassNode) setNodeLabels(extras *nodeCreationExtra) error {
280308
func (vm *MultipassNode) mountPoints(extras *nodeCreationExtra) {
281309
if extras.mountPoints != nil && len(extras.mountPoints) > 0 {
282310
for hostPath, guestPath := range extras.mountPoints {
283-
if err := shell("multipass", "mount", hostPath, fmt.Sprintf("%s:%s", vm.NodeName, guestPath)); err != nil {
311+
if err := shell(multipassCommandLine, "mount", hostPath, fmt.Sprintf("%s:%s", vm.NodeName, guestPath)); err != nil {
284312
glog.Warningf(errUnableToMountPath, hostPath, guestPath, vm.NodeName, err)
285313
}
286314
}
@@ -331,9 +359,9 @@ func (vm *MultipassNode) launchVM(extras *nodeCreationExtra) error {
331359
err = fmt.Errorf(errVMAlreadyCreated, vm.NodeName)
332360
} else if cloudInitFile, err = vm.writeCloudFile(extras); err == nil {
333361
var args = []string{
334-
"multipass",
335-
"launch",
336-
"--name",
362+
multipassCommandLine,
363+
launchArgument,
364+
nameArgument,
337365
vm.NodeName,
338366
}
339367

@@ -406,35 +434,31 @@ func (vm *MultipassNode) startVM(kubeconfig string) error {
406434

407435
glog.Infof("Start VM:%s", vm.NodeName)
408436

409-
if vm.AutoProvisionned == false {
437+
if !vm.AutoProvisionned {
410438
err = fmt.Errorf(errVMNotProvisionnedByMe, vm.NodeName)
411-
} else {
412-
state, err = vm.statusVM()
413-
414-
if err == nil {
415-
if state == MultipassNodeStateStopped {
416-
if err = shell("multipass", "start", vm.NodeName); err != nil {
417-
args := []string{
418-
"kubectl",
419-
"uncordon",
420-
vm.NodeName,
421-
"--kubeconfig",
422-
kubeconfig,
423-
}
424-
425-
if err = shell(args...); err != nil {
426-
glog.Errorf(errKubeCtlIgnoredError, vm.NodeName, err)
439+
} else if state, err = vm.statusVM(); err == nil {
440+
if state == MultipassNodeStateStopped {
441+
if err = shell(multipassCommandLine, startArgument, vm.NodeName); err != nil {
442+
args := []string{
443+
kubectlCommandLine,
444+
uncordonArgument,
445+
vm.NodeName,
446+
kubeConfigArgument,
447+
kubeconfig,
448+
}
427449

428-
err = nil
429-
}
450+
if err = shell(args...); err != nil {
451+
glog.Errorf(errKubeCtlIgnoredError, vm.NodeName, err)
430452

431-
vm.State = MultipassNodeStateRunning
432-
} else {
433-
err = fmt.Errorf(errStartVMFailed, vm.NodeName, err)
453+
err = nil
434454
}
435-
} else if state != MultipassNodeStateRunning {
436-
err = fmt.Errorf(errStartVMFailed, vm.NodeName, fmt.Sprintf("Unexpected state: %d", state))
455+
456+
vm.State = MultipassNodeStateRunning
457+
} else {
458+
err = fmt.Errorf(errStartVMFailed, vm.NodeName, err)
437459
}
460+
} else if state != MultipassNodeStateRunning {
461+
err = fmt.Errorf(errStartVMFailed, vm.NodeName, fmt.Sprintf("Unexpected state: %d", state))
438462
}
439463
}
440464

@@ -455,34 +479,30 @@ func (vm *MultipassNode) stopVM(kubeconfig string) error {
455479

456480
glog.Infof("Stop VM:%s", vm.NodeName)
457481

458-
if vm.AutoProvisionned == false {
482+
if !vm.AutoProvisionned {
459483
err = fmt.Errorf(errVMNotProvisionnedByMe, vm.NodeName)
460-
} else {
461-
state, err = vm.statusVM()
484+
} else if state, err = vm.statusVM(); err == nil {
462485

463-
if err == nil {
464-
465-
if state == MultipassNodeStateRunning {
466-
args := []string{
467-
"kubectl",
468-
"cordon",
469-
vm.NodeName,
470-
"--kubeconfig",
471-
kubeconfig,
472-
}
486+
if state == MultipassNodeStateRunning {
487+
args := []string{
488+
kubectlCommandLine,
489+
cordonArgument,
490+
vm.NodeName,
491+
kubeConfigArgument,
492+
kubeconfig,
493+
}
473494

474-
if err = shell(args...); err != nil {
475-
glog.Errorf(errKubeCtlIgnoredError, vm.NodeName, err)
476-
}
495+
if err = shell(args...); err != nil {
496+
glog.Errorf(errKubeCtlIgnoredError, vm.NodeName, err)
497+
}
477498

478-
if err = shell("multipass", "stop", vm.NodeName); err == nil {
479-
vm.State = MultipassNodeStateStopped
480-
} else {
481-
err = fmt.Errorf(errStopVMFailed, vm.NodeName, err)
482-
}
483-
} else if state != MultipassNodeStateStopped {
484-
err = fmt.Errorf(errStopVMFailed, vm.NodeName, fmt.Sprintf("Unexpected state: %d", state))
499+
if err = shell(multipassCommandLine, stopArgument, vm.NodeName); err == nil {
500+
vm.State = MultipassNodeStateStopped
501+
} else {
502+
err = fmt.Errorf(errStopVMFailed, vm.NodeName, err)
485503
}
504+
} else if state != MultipassNodeStateStopped {
505+
err = fmt.Errorf(errStopVMFailed, vm.NodeName, fmt.Sprintf("Unexpected state: %d", state))
486506
}
487507
}
488508

@@ -509,13 +529,13 @@ func (vm *MultipassNode) deleteVM(kubeconfig string) error {
509529
if err == nil {
510530

511531
args := []string{
512-
"kubectl",
513-
"drain",
532+
kubectlCommandLine,
533+
drainArgument,
514534
vm.NodeName,
515-
"--delete-local-data",
516-
"--force",
517-
"--ignore-daemonsets",
518-
"--kubeconfig",
535+
deleteLocalArgument,
536+
forceArgument,
537+
ignoreDaemonsetArgument,
538+
kubeConfigArgument,
519539
kubeconfig,
520540
}
521541

@@ -524,11 +544,11 @@ func (vm *MultipassNode) deleteVM(kubeconfig string) error {
524544
}
525545

526546
args = []string{
527-
"kubectl",
528-
"delete",
529-
"node",
547+
kubectlCommandLine,
548+
deleteArgument,
549+
nodeArgument,
530550
vm.NodeName,
531-
"--kubeconfig",
551+
kubeConfigArgument,
532552
kubeconfig,
533553
}
534554

@@ -537,18 +557,18 @@ func (vm *MultipassNode) deleteVM(kubeconfig string) error {
537557
}
538558

539559
if state == MultipassNodeStateRunning {
540-
if err = shell("multipass", "stop", vm.NodeName); err == nil {
560+
if err = shell(multipassCommandLine, stopArgument, vm.NodeName); err == nil {
541561
vm.State = MultipassNodeStateStopped
542562

543-
if err = shell("multipass", "delete", "--purge", vm.NodeName); err == nil {
563+
if err = shell(multipassCommandLine, deleteArgument, purgeArgument, vm.NodeName); err == nil {
544564
vm.State = MultipassNodeStateDeleted
545565
} else {
546566
err = fmt.Errorf(errDeleteVMFailed, vm.NodeName, err)
547567
}
548568
} else {
549569
err = fmt.Errorf(errStopVMFailed, vm.NodeName, err)
550570
}
551-
} else if err = shell("multipass", "delete", "--purge", vm.NodeName); err == nil {
571+
} else if err = shell(multipassCommandLine, deleteArgument, purgeArgument, vm.NodeName); err == nil {
552572
vm.State = MultipassNodeStateDeleted
553573
} else {
554574
err = fmt.Errorf(errDeleteVMFailed, vm.NodeName, err)
@@ -573,7 +593,7 @@ func (vm *MultipassNode) statusVM() (MultipassNodeState, error) {
573593
var err error
574594
var vmInfos MultipassVMInfos
575595

576-
if out, err = pipe("multipass", "info", vm.NodeName, "--format=json"); err != nil {
596+
if out, err = pipe(multipassCommandLine, infoArgument, vm.NodeName, "--format=json"); err != nil {
577597
glog.Errorf(errGetVMInfoFailed, vm.NodeName, err)
578598
return MultipassNodeStateUndefined, err
579599
}

0 commit comments

Comments
 (0)