pull file
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Close Stale Issues / close_stale_issues (push) Has been cancelled
repo-sync / repo-sync (push) Has been cancelled
auto-deploy-tencent-scf / pre-check (push) Has been cancelled
auto-deploy-tencent-scf / deploy serverless (push) Has been cancelled
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Close Stale Issues / close_stale_issues (push) Has been cancelled
repo-sync / repo-sync (push) Has been cancelled
auto-deploy-tencent-scf / pre-check (push) Has been cancelled
auto-deploy-tencent-scf / deploy serverless (push) Has been cancelled
This commit is contained in:
130
krew/pkg/cmd/delete.go
Normal file
130
krew/pkg/cmd/delete.go
Normal file
@@ -0,0 +1,130 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/krusty"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
"sigs.k8s.io/yaml"
|
||||
|
||||
"github.com/RayWangQvQ/BiliBiliToolPro/krew/pkg/options"
|
||||
helper "github.com/RayWangQvQ/BiliBiliToolPro/krew/pkg/utils"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
const (
|
||||
deleteDesc = `
|
||||
'delete' command delete bilibilipro tool.`
|
||||
deleteExample = ` kubectl bilipro delete <--name deployment_name>`
|
||||
)
|
||||
|
||||
type deleteCmd struct {
|
||||
out io.Writer
|
||||
errOut io.Writer
|
||||
output bool
|
||||
deployOpts options.DeployOptions
|
||||
}
|
||||
|
||||
func newDeleteCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
o := &deleteCmd{out: out, errOut: errOut}
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "delete",
|
||||
Short: "Delete bilibilipro",
|
||||
Long: deleteDesc,
|
||||
Example: deleteExample,
|
||||
Args: cobra.MaximumNArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
err := o.run(out)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
fmt.Println("bilibili tool is removed from your cluster")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
f := cmd.Flags()
|
||||
f.StringVarP(&o.deployOpts.Namespace, "namespace", "n", "bilipro", "namespace scope for this request")
|
||||
f.StringVarP(&o.deployOpts.Name, "name", "", "bilibilipro", "name of deployment to delete")
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (o *deleteCmd) run(writer io.Writer) error {
|
||||
inDiskSys, err := helper.GetResourceFileSys()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// remove namespace files lastly
|
||||
resources := []string{"base/bilibiliPro/deployment.yaml"}
|
||||
|
||||
// write the kustomization file
|
||||
|
||||
kustomizationYaml := types.Kustomization{
|
||||
TypeMeta: types.TypeMeta{
|
||||
Kind: "Kustomization",
|
||||
APIVersion: "kustomize.config.k8s.io/v1beta1",
|
||||
},
|
||||
Resources: resources,
|
||||
}
|
||||
|
||||
if o.deployOpts.Namespace != "" {
|
||||
kustomizationYaml.Namespace = o.deployOpts.Namespace
|
||||
}
|
||||
|
||||
// Compile the kustomization to a file and create on the in memory filesystem
|
||||
kustYaml, err := yaml.Marshal(kustomizationYaml)
|
||||
if err != nil {
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
kustFile, err := inDiskSys.Create("./bilipro/kustomization.yaml")
|
||||
if err != nil {
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
_, err = kustFile.Write(kustYaml)
|
||||
if err != nil {
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
// kustomize build the target location
|
||||
k := krusty.MakeKustomizer(
|
||||
krusty.MakeDefaultOptions(),
|
||||
)
|
||||
|
||||
m, err := k.Run(inDiskSys, "./bilipro")
|
||||
if err != nil {
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
yml, err := m.AsYaml()
|
||||
if err != nil {
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
if o.output {
|
||||
_, err = writer.Write(yml)
|
||||
return helper.GenErrorMsg(helper.TEMPLATE_ERROR, err.Error())
|
||||
}
|
||||
|
||||
// do kubectl delete
|
||||
cmd := exec.Command("kubectl", "delete", "-f", "-")
|
||||
|
||||
if err := helper.Run(cmd, strings.NewReader(string(yml))); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// delete the namespace
|
||||
cmd = exec.Command("kubectl", "delete", "ns", o.deployOpts.Namespace)
|
||||
if err := helper.Run(cmd, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user