Ctrl K
ComunidadGuías…

internal/checks/fixtures_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package checks

import (
	"maps"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)

const testNamespace = "apps"

func metadata(name string) map[string]any {
	return map[string]any{"name": name, "namespace": testNamespace}
}

func container(name string, fields map[string]any) map[string]any {
	out := map[string]any{"name": name, "image": "registry.example/app:1.4.2"}
	maps.Copy(out, fields)
	return out
}

func podSpec(containers ...map[string]any) map[string]any {
	listed := make([]any, 0, len(containers))
	for _, entry := range containers {
		listed = append(listed, entry)
	}
	return map[string]any{"containers": listed}
}

func pod(name string, spec map[string]any) *unstructured.Unstructured {
	return &unstructured.Unstructured{Object: map[string]any{
		"apiVersion": "v1",
		"kind":       "Pod",
		"metadata":   metadata(name),
		"spec":       spec,
	}}
}

func workload(kind, name string, spec map[string]any) *unstructured.Unstructured {
	version := "apps/v1"
	if kindGroups[kind] == "batch" {
		version = "batch/v1"
	}
	return &unstructured.Unstructured{Object: map[string]any{
		"apiVersion": version,
		"kind":       kind,
		"metadata":   metadata(name),
		"spec": map[string]any{
			"selector": map[string]any{"matchLabels": map[string]any{"app": name}},
			"template": map[string]any{"spec": spec},
		},
	}}
}

func deployment(name string, spec map[string]any) *unstructured.Unstructured {
	return workload("Deployment", name, spec)
}

func cronJob(name string, spec map[string]any) *unstructured.Unstructured {
	return &unstructured.Unstructured{Object: map[string]any{
		"apiVersion": "batch/v1",
		"kind":       "CronJob",
		"metadata":   metadata(name),
		"spec": map[string]any{
			"jobTemplate": map[string]any{
				"spec": map[string]any{"template": map[string]any{"spec": spec}},
			},
		},
	}}
}

func specOf(obj *unstructured.Unstructured) map[string]any {
	spec, ok := obj.Object["spec"].(map[string]any)
	if !ok {
		return map[string]any{}
	}
	return spec
}

func replicas(obj *unstructured.Unstructured, count int64) *unstructured.Unstructured {
	specOf(obj)["replicas"] = count
	return obj
}

func apiVersionFor(kind string) string {
	group := kindGroups[kind]
	if group == "" {
		return "v1"
	}
	return group + "/v1"
}

func ownedBy(obj *unstructured.Unstructured, kind, name string) *unstructured.Unstructured {
	obj.SetOwnerReferences([]metav1.OwnerReference{{
		APIVersion: apiVersionFor(kind),
		Kind:       kind,
		Name:       name,
	}})
	return obj
}

func onNode(obj *unstructured.Unstructured, node string) *unstructured.Unstructured {
	specOf(obj)["nodeName"] = node
	return obj
}

func withSecurity(fields map[string]any) map[string]any {
	return map[string]any{"securityContext": fields}
}

func resources(section string, values map[string]any) map[string]any {
	return map[string]any{"resources": map[string]any{section: values}}
}

func requestsAndLimits(request, limit map[string]any) map[string]any {
	return map[string]any{"resources": map[string]any{"requests": request, "limits": limit}}
}