Added some ctl boilerplate
This commit is contained in:
54
clitools/pkg/cmd/apply/apply.go
Normal file
54
clitools/pkg/cmd/apply/apply.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package apply
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"undecided.project/monok8s/pkg/crds"
|
||||
"undecided.project/monok8s/pkg/kube"
|
||||
"github.com/spf13/cobra"
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||
"k8s.io/klog/v2"
|
||||
)
|
||||
|
||||
func NewCmdApply(flags *genericclioptions.ConfigFlags) *cobra.Command {
|
||||
cmd := &cobra.Command{Use: "apply", Short: "Apply MonoK8s resources"}
|
||||
cmd.AddCommand(newCmdApplyCRDs(flags))
|
||||
return cmd
|
||||
}
|
||||
|
||||
func newCmdApplyCRDs(flags *genericclioptions.ConfigFlags) *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "crds",
|
||||
Short: "Register the MonoKSConfig and OSUpgrade CRDs",
|
||||
RunE: func(cmd *cobra.Command, _ []string) error {
|
||||
clients, err := kube.NewClients(flags)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ctx := context.Background()
|
||||
for _, wanted := range crds.Definitions() {
|
||||
_, err := clients.APIExtensions.ApiextensionsV1().CustomResourceDefinitions().Create(ctx, wanted, metav1.CreateOptions{})
|
||||
if apierrors.IsAlreadyExists(err) {
|
||||
current, getErr := clients.APIExtensions.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, wanted.Name, metav1.GetOptions{})
|
||||
if getErr != nil {
|
||||
return getErr
|
||||
}
|
||||
wanted.ResourceVersion = current.ResourceVersion
|
||||
_, err = clients.APIExtensions.ApiextensionsV1().CustomResourceDefinitions().Update(ctx, wanted, metav1.UpdateOptions{})
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
klog.InfoS("crd applied", "name", wanted.Name)
|
||||
}
|
||||
_, _ = fmt.Fprintln(cmd.OutOrStdout(), "CRDs applied")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
var _ *apiextensionsv1.CustomResourceDefinition
|
||||
Reference in New Issue
Block a user