penguin/monok8s

k8s image for Mono Gateway Dev Kit

clitools/pkg/cmd/agent/agent.go

raw ยท 1459 bytes

package agent

import (
	"context"
	"fmt"
	"time"

	monov1alpha1 "undecided.project/monok8s/pkg/apis/monok8s/v1alpha1"
	"undecided.project/monok8s/pkg/kube"
	"github.com/spf13/cobra"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/runtime/schema"
	"k8s.io/cli-runtime/pkg/genericclioptions"
	"k8s.io/klog/v2"
)

func NewCmdAgent(flags *genericclioptions.ConfigFlags) *cobra.Command {
	var namespace string
	cmd := &cobra.Command{
		Use:   "agent",
		Short: "Watch OSUpgrade resources and do nothing for now",
		RunE: func(cmd *cobra.Command, _ []string) error {
			clients, err := kube.NewClients(flags)
			if err != nil {
				return err
			}
			gvr := schema.GroupVersionResource{Group: monov1alpha1.Group, Version: monov1alpha1.Version, Resource: "osupgrades"}
			ctx := cmd.Context()
			for {
				list, err := clients.Dynamic.Resource(gvr).Namespace(namespace).List(ctx, metav1.ListOptions{})
				if err != nil {
					return err
				}
				klog.InfoS("agent tick", "namespace", namespace, "items", len(list.Items))
				for _, item := range list.Items {
					klog.InfoS("observed osupgrade", "name", item.GetName(), "resourceVersion", item.GetResourceVersion())
				}
				select {
				case <-ctx.Done():
					return ctx.Err()
				case <-time.After(15 * time.Second):
				}
			}
		},
	}
	cmd.Flags().StringVar(&namespace, "namespace", "kube-system", "namespace to watch")
	return cmd
}

var _ = context.Background
var _ = fmt.Sprintf