forked from abiosoft/colima
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkubernetes.go
128 lines (110 loc) · 3.08 KB
/
kubernetes.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package cmd
import (
"fmt"
"github.com/abiosoft/colima/cmd/root"
"github.com/abiosoft/colima/config"
"github.com/abiosoft/colima/environment/container/kubernetes"
"github.com/spf13/cobra"
)
// kubernetesCmd represents the kubernetes command
var kubernetesCmd = &cobra.Command{
Use: "kubernetes",
Aliases: []string{"kube", "k8s", "k"},
Short: "manage Kubernetes cluster",
Long: `Manage the Kubernetes cluster`,
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
// cobra overrides PersistentPreRunE when redeclared.
// re-run rootCmd's.
if err := root.Cmd().PersistentPreRunE(cmd, args); err != nil {
return err
}
if !newApp().Active() {
return fmt.Errorf("%s is not running", config.Profile().DisplayName)
}
return nil
},
}
// kubernetesStartCmd represents the kubernetes start command
var kubernetesStartCmd = &cobra.Command{
Use: "start",
Short: "start the Kubernetes cluster",
Long: `Start the Kubernetes cluster.`,
RunE: func(cmd *cobra.Command, args []string) error {
app := newApp()
k, err := app.Kubernetes()
if err != nil {
return err
}
if err := k.Provision(); err != nil {
return err
}
return k.Start()
},
}
// kubernetesStopCmd represents the kubernetes stop command
var kubernetesStopCmd = &cobra.Command{
Use: "stop",
Short: "stop the Kubernetes cluster",
Long: `Stop the Kubernetes cluster.`,
RunE: func(cmd *cobra.Command, args []string) error {
app := newApp()
k, err := app.Kubernetes()
if err != nil {
return err
}
if k.Version() == "" {
return fmt.Errorf("%s is not enabled", kubernetes.Name)
}
return k.Stop()
},
}
// kubernetesDeleteCmd represents the kubernetes delete command
var kubernetesDeleteCmd = &cobra.Command{
Use: "delete",
Short: "delete the Kubernetes cluster",
Long: `Delete the Kubernetes cluster.`,
RunE: func(cmd *cobra.Command, args []string) error {
app := newApp()
k, err := app.Kubernetes()
if err != nil {
return err
}
if k.Version() == "" {
return fmt.Errorf("%s is not enabled", kubernetes.Name)
}
return k.Teardown()
},
}
// kubernetesResetCmd represents the kubernetes reset command
var kubernetesResetCmd = &cobra.Command{
Use: "reset",
Short: "reset the Kubernetes cluster",
Long: `Reset the Kubernetes cluster.
This resets the Kubernetes cluster and all Kubernetes objects
will be deleted.
The Kubernetes images are cached making the startup (after reset) much faster.`,
RunE: func(cmd *cobra.Command, args []string) error {
app := newApp()
k, err := app.Kubernetes()
if err != nil {
return err
}
if err := k.Teardown(); err != nil {
return fmt.Errorf("error deleting %s: %w", kubernetes.Name, err)
}
if err := k.Provision(); err != nil {
return err
}
if err := k.Start(); err != nil {
return fmt.Errorf("error starting %s: %w", kubernetes.Name, err)
}
return nil
},
}
func init() {
root.Cmd().AddCommand(kubernetesCmd)
kubernetesCmd.AddCommand(kubernetesStartCmd)
kubernetesCmd.AddCommand(kubernetesStopCmd)
kubernetesCmd.AddCommand(kubernetesDeleteCmd)
kubernetesCmd.AddCommand(kubernetesResetCmd)
}