package
0.37.0
Repository: https://github.com/cisco-open/operator-tools.git
Documentation: pkg.go.dev

# README

CRD

Once an operator is installed and CRDs are applied, these commands help to verify CRDs are in place.

package main

import (
    "flag"
	"fmt"
	"log"
	"os"
	"path/filepath"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"

	"github.com/cisco-open/operator-tools/pkg/crd"
)

func main() {
	var kubeconfig *string
	if home := homeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()

	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		log.Fatal(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		log.Fatal(err)
	}

	c := crd.NewCRD(clientset)
	resources, err := c.ListAPIResources(metav1.GroupVersion{
		Group:   "monitoring.coreos.com",
		Version: "v1",
	})
	if err != nil {
		log.Fatal(err)
	}
	for _, resource := range resources {
		fmt.Println(resource.Name)
	}
	// Output:
	// alertmanagers
	// servicemonitors
	// prometheuses
	// prometheusrules
	// podmonitors

	has, err := c.HasAPIResource(metav1.GroupVersion{
		Group:   "monitoring.coreos.com",
		Version: "v1",
	}, "servicemonitors")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%t\n", has)
	// Output: true
}


func homeDir() string {
	if h := os.Getenv("HOME"); h != "" {
		return h
	}
	return os.Getenv("USERPROFILE") // windows
}

# Functions

No description provided by the author

# Structs

No description provided by the author

# Interfaces

ServerResourcesInterface has methods for obtaining supported resources on the API server.