bergerx/kubectl-status

View on GitHub
pkg/input/input.go

Summary

Maintainability
A
0 mins
Test Coverage
package input

import (
    "github.com/spf13/viper"
    "k8s.io/apimachinery/pkg/api/meta"
    "k8s.io/cli-runtime/pkg/resource"
    "k8s.io/client-go/dynamic"
    "k8s.io/client-go/kubernetes"
    "k8s.io/kubectl/pkg/cmd/util"
)

type ResourceRepo struct {
    f util.Factory
}

func NewResourceRepo(factory util.Factory) ResourceRepo {

    return ResourceRepo{
        f: factory,
    }
}

func (r *ResourceRepo) newBaseBuilder() *resource.Builder {
    builder := r.f.NewBuilder().
        NamespaceParam(viper.GetString("namespace")).
        DefaultNamespace().
        AllNamespaces(viper.GetBool("all-namepaces")).
        ContinueOnError().
        Unstructured().
        Flatten()
    if viper.GetBool("local") {
        builder = builder.
            FilenameParam(false, &resource.FilenameOptions{
                Filenames: viper.GetStringSlice("filename"),
                Recursive: viper.GetBool("recursive"),
            }).
            Local()
    }
    return builder
}

func (r *ResourceRepo) CLIQueryResults(args []string) *resource.Result {
    builder := r.newBaseBuilder().
        LabelSelectorParam(viper.GetString("selector")).
        FieldSelectorParam(viper.GetString("field-selector"))
    if !viper.GetBool("local") {
        builder = builder.
            FilenameParam(false, &resource.FilenameOptions{
                Filenames: viper.GetStringSlice("filename"),
                Recursive: viper.GetBool("recursive"),
            })
    }

    if !viper.GetBool("local") {
        builder = builder.ResourceTypeOrNameArgs(true, args...)
    }
    return builder.Do()
}

func (r *ResourceRepo) ResourceInfos(namespace string, args []string, labelSelector string) ([]*resource.Info, error) {
    builder := r.newBaseBuilder().
        NamespaceParam(namespace).
        ResourceTypeOrNameArgs(true, args...).
        LabelSelectorParam(labelSelector)
    return builder.Do().Infos()
}

func (r *ResourceRepo) ToRESTMapper() (meta.RESTMapper, error) {
    return r.f.ToRESTMapper()
}

func (r *ResourceRepo) KubernetesClientSet() (*kubernetes.Clientset, error) {
    return r.f.KubernetesClientSet()
}

func (r *ResourceRepo) DynamicClient() (dynamic.Interface, error) {
    return r.f.DynamicClient()
}