node

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package node is the YAML node model behind KubeObject. It preserves formatting while reading and writing maps, slices, and scalars.

Index

Constants

This section is empty.

Variables

View Source
var PrecomputedIsNamespaceScoped = map[yaml.TypeMeta]bool{
	{APIVersion: "admissionregistration.k8s.io/v1", Kind: "MutatingWebhookConfiguration"}:        false,
	{APIVersion: "admissionregistration.k8s.io/v1", Kind: "ValidatingWebhookConfiguration"}:      false,
	{APIVersion: "admissionregistration.k8s.io/v1beta1", Kind: "MutatingWebhookConfiguration"}:   false,
	{APIVersion: "admissionregistration.k8s.io/v1beta1", Kind: "ValidatingWebhookConfiguration"}: false,
	{APIVersion: "apiextensions.k8s.io/v1", Kind: "CustomResourceDefinition"}:                    false,
	{APIVersion: "apiextensions.k8s.io/v1beta1", Kind: "CustomResourceDefinition"}:               false,
	{APIVersion: "apiregistration.k8s.io/v1", Kind: "APIService"}:                                false,
	{APIVersion: "apiregistration.k8s.io/v1beta1", Kind: "APIService"}:                           false,
	{APIVersion: "apps/v1", Kind: "ControllerRevision"}:                                          true,
	{APIVersion: "apps/v1", Kind: "DaemonSet"}:                                                   true,
	{APIVersion: "apps/v1", Kind: "Deployment"}:                                                  true,
	{APIVersion: "apps/v1", Kind: "ReplicaSet"}:                                                  true,
	{APIVersion: "apps/v1", Kind: "StatefulSet"}:                                                 true,
	{APIVersion: "autoscaling/v1", Kind: "HorizontalPodAutoscaler"}:                              true,
	{APIVersion: "autoscaling/v1", Kind: "Scale"}:                                                true,
	{APIVersion: "autoscaling/v2beta1", Kind: "HorizontalPodAutoscaler"}:                         true,
	{APIVersion: "autoscaling/v2beta2", Kind: "HorizontalPodAutoscaler"}:                         true,
	{APIVersion: "batch/v1", Kind: "CronJob"}:                                                    true,
	{APIVersion: "batch/v1", Kind: "Job"}:                                                        true,
	{APIVersion: "batch/v1beta1", Kind: "CronJob"}:                                               true,
	{APIVersion: "certificates.k8s.io/v1", Kind: "CertificateSigningRequest"}:                    false,
	{APIVersion: "certificates.k8s.io/v1beta1", Kind: "CertificateSigningRequest"}:               false,
	{APIVersion: "coordination.k8s.io/v1", Kind: "Lease"}:                                        true,
	{APIVersion: "coordination.k8s.io/v1beta1", Kind: "Lease"}:                                   true,
	{APIVersion: "discovery.k8s.io/v1", Kind: "EndpointSlice"}:                                   true,
	{APIVersion: "discovery.k8s.io/v1beta1", Kind: "EndpointSlice"}:                              true,
	{APIVersion: "events.k8s.io/v1", Kind: "Event"}:                                              true,
	{APIVersion: "events.k8s.io/v1beta1", Kind: "Event"}:                                         true,
	{APIVersion: "extensions/v1beta1", Kind: "Ingress"}:                                          true,
	{APIVersion: "flowcontrol.apiserver.k8s.io/v1beta1", Kind: "FlowSchema"}:                     false,
	{APIVersion: "flowcontrol.apiserver.k8s.io/v1beta1", Kind: "PriorityLevelConfiguration"}:     false,
	{APIVersion: "networking.k8s.io/v1", Kind: "Ingress"}:                                        true,
	{APIVersion: "networking.k8s.io/v1", Kind: "IngressClass"}:                                   false,
	{APIVersion: "networking.k8s.io/v1", Kind: "NetworkPolicy"}:                                  true,
	{APIVersion: "networking.k8s.io/v1beta1", Kind: "Ingress"}:                                   true,
	{APIVersion: "networking.k8s.io/v1beta1", Kind: "IngressClass"}:                              false,
	{APIVersion: "node.k8s.io/v1", Kind: "RuntimeClass"}:                                         false,
	{APIVersion: "node.k8s.io/v1beta1", Kind: "RuntimeClass"}:                                    false,
	{APIVersion: "policy/v1", Kind: "PodDisruptionBudget"}:                                       true,
	{APIVersion: "policy/v1beta1", Kind: "PodDisruptionBudget"}:                                  true,
	{APIVersion: "policy/v1beta1", Kind: "PodSecurityPolicy"}:                                    false,
	{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRole"}:                            false,
	{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRoleBinding"}:                     false,
	{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"}:                                   true,
	{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "RoleBinding"}:                            true,
	{APIVersion: "rbac.authorization.k8s.io/v1beta1", Kind: "ClusterRole"}:                       false,
	{APIVersion: "rbac.authorization.k8s.io/v1beta1", Kind: "ClusterRoleBinding"}:                false,
	{APIVersion: "rbac.authorization.k8s.io/v1beta1", Kind: "Role"}:                              true,
	{APIVersion: "rbac.authorization.k8s.io/v1beta1", Kind: "RoleBinding"}:                       true,
	{APIVersion: "scheduling.k8s.io/v1", Kind: "PriorityClass"}:                                  false,
	{APIVersion: "scheduling.k8s.io/v1beta1", Kind: "PriorityClass"}:                             false,
	{APIVersion: "storage.k8s.io/v1", Kind: "CSIDriver"}:                                         false,
	{APIVersion: "storage.k8s.io/v1", Kind: "CSINode"}:                                           false,
	{APIVersion: "storage.k8s.io/v1", Kind: "StorageClass"}:                                      false,
	{APIVersion: "storage.k8s.io/v1", Kind: "VolumeAttachment"}:                                  false,
	{APIVersion: "storage.k8s.io/v1beta1", Kind: "CSIDriver"}:                                    false,
	{APIVersion: "storage.k8s.io/v1beta1", Kind: "CSINode"}:                                      false,
	{APIVersion: "storage.k8s.io/v1beta1", Kind: "CSIStorageCapacity"}:                           true,
	{APIVersion: "storage.k8s.io/v1beta1", Kind: "StorageClass"}:                                 false,
	{APIVersion: "storage.k8s.io/v1beta1", Kind: "VolumeAttachment"}:                             false,
	{APIVersion: "v1", Kind: "ComponentStatus"}:                                                  false,
	{APIVersion: "v1", Kind: "ConfigMap"}:                                                        true,
	{APIVersion: "v1", Kind: "Endpoints"}:                                                        true,
	{APIVersion: "v1", Kind: "Event"}:                                                            true,
	{APIVersion: "v1", Kind: "LimitRange"}:                                                       true,
	{APIVersion: "v1", Kind: "Namespace"}:                                                        false,
	{APIVersion: "v1", Kind: "Node"}:                                                             false,
	{APIVersion: "v1", Kind: "NodeProxyOptions"}:                                                 false,
	{APIVersion: "v1", Kind: "PersistentVolume"}:                                                 false,
	{APIVersion: "v1", Kind: "PersistentVolumeClaim"}:                                            true,
	{APIVersion: "v1", Kind: "Pod"}:                                                              true,
	{APIVersion: "v1", Kind: "PodAttachOptions"}:                                                 true,
	{APIVersion: "v1", Kind: "PodExecOptions"}:                                                   true,
	{APIVersion: "v1", Kind: "PodPortForwardOptions"}:                                            true,
	{APIVersion: "v1", Kind: "PodProxyOptions"}:                                                  true,
	{APIVersion: "v1", Kind: "PodTemplate"}:                                                      true,
	{APIVersion: "v1", Kind: "ReplicationController"}:                                            true,
	{APIVersion: "v1", Kind: "ResourceQuota"}:                                                    true,
	{APIVersion: "v1", Kind: "Secret"}:                                                           true,
	{APIVersion: "v1", Kind: "Service"}:                                                          true,
	{APIVersion: "v1", Kind: "ServiceAccount"}:                                                   true,
	{APIVersion: "v1", Kind: "ServiceProxyOptions"}:                                              true,
}

PrecomputedIsNamespaceScoped copies the sigs.k8s.io/kustomize/kyaml/openapi precomputedIsNamespaceScoped

Functions

func MapVariantToTypedObject

func MapVariantToTypedObject(mv *MapVariant, ptr any) error

func NewDoc

func NewDoc(nodes ...*yaml.Node) *doc

func ParseDoc

func ParseDoc(b []byte) (*doc, error)

Types

type MapVariant

type MapVariant struct {
	// contains filtered or unexported fields
}

func ExtractObjects

func ExtractObjects(nodes ...*yaml.Node) ([]*MapVariant, error)

func NewMap

func NewMap(node *yaml.Node) *MapVariant

func NewStringMapVariant

func NewStringMapVariant(m map[string]string) *MapVariant

func TypedObjectToMapVariant

func TypedObjectToMapVariant(v any) (*MapVariant, error)

func (*MapVariant) Entries

func (o *MapVariant) Entries() (map[string]variant, error)

func (*MapVariant) GetKind

func (o *MapVariant) GetKind() VariantKind

func (*MapVariant) GetMap

func (o *MapVariant) GetMap(field string) *MapVariant

GetMap will return the field as a map if it exists and is a map, otherwise it will return nil. Note that if the value exists but is not a map, nil will be returned.

func (*MapVariant) GetNestedBool

func (o *MapVariant) GetNestedBool(fields ...string) (bool, bool, error)

func (*MapVariant) GetNestedFloat

func (o *MapVariant) GetNestedFloat(fields ...string) (float64, bool, error)

func (*MapVariant) GetNestedInt

func (o *MapVariant) GetNestedInt(fields ...string) (int, bool, error)

func (*MapVariant) GetNestedMap

func (o *MapVariant) GetNestedMap(fields ...string) (*MapVariant, bool, error)

func (*MapVariant) GetNestedScalar

func (o *MapVariant) GetNestedScalar(fields ...string) (*scalarVariant, bool, error)

func (*MapVariant) GetNestedSlice

func (o *MapVariant) GetNestedSlice(fields ...string) (*SliceVariant, bool, error)

func (*MapVariant) GetNestedString

func (o *MapVariant) GetNestedString(fields ...string) (string, bool, error)

func (*MapVariant) GetNestedStringMap

func (o *MapVariant) GetNestedStringMap(fields ...string) (map[string]string, bool, error)

func (*MapVariant) GetNestedValue

func (o *MapVariant) GetNestedValue(fields ...string) (variant, bool, error)

func (*MapVariant) GetRNode

func (o *MapVariant) GetRNode(fields ...string) (*yaml.RNode, bool, error)

func (*MapVariant) HasKey

func (o *MapVariant) HasKey(key string) bool

func (*MapVariant) IsEmpty

func (o *MapVariant) IsEmpty() bool

func (*MapVariant) Node

func (o *MapVariant) Node() *yaml.Node

func (*MapVariant) RemoveNestedField

func (o *MapVariant) RemoveNestedField(fields ...string) (bool, error)

func (*MapVariant) Set

func (o *MapVariant) Set(newValue *MapVariant)

func (*MapVariant) SetNestedBool

func (o *MapVariant) SetNestedBool(b bool, fields ...string) error

func (*MapVariant) SetNestedFloat

func (o *MapVariant) SetNestedFloat(f float64, fields ...string) error

func (*MapVariant) SetNestedInt

func (o *MapVariant) SetNestedInt(i int, fields ...string) error

func (*MapVariant) SetNestedMap

func (o *MapVariant) SetNestedMap(m *MapVariant, fields ...string) error

func (*MapVariant) SetNestedSlice

func (o *MapVariant) SetNestedSlice(s *SliceVariant, fields ...string) error

func (*MapVariant) SetNestedString

func (o *MapVariant) SetNestedString(s string, fields ...string) error

func (*MapVariant) SetNestedStringMap

func (o *MapVariant) SetNestedStringMap(m map[string]string, fields ...string) error

func (*MapVariant) SetNestedValue

func (o *MapVariant) SetNestedValue(val variant, fields ...string) error

func (*MapVariant) UpsertMap

func (o *MapVariant) UpsertMap(field string) *MapVariant

UpsertMap will return the field as a map if it exists and is a map, otherwise it will insert a map at the specified field. Note that if the value exists but is not a map, it will be replaced with a map.

type SliceVariant

type SliceVariant struct {
	// contains filtered or unexported fields
}

func NewSliceVariant

func NewSliceVariant(s ...variant) *SliceVariant

func TypedObjectToSliceVariant

func TypedObjectToSliceVariant(v any) (*SliceVariant, error)

func (*SliceVariant) Add

func (v *SliceVariant) Add(node variant)

func (*SliceVariant) Clear

func (v *SliceVariant) Clear()

func (*SliceVariant) Elements

func (v *SliceVariant) Elements() ([]*MapVariant, error)

func (*SliceVariant) GetKind

func (v *SliceVariant) GetKind() VariantKind

func (*SliceVariant) Node

func (v *SliceVariant) Node() *yaml.Node

type VariantKind

type VariantKind string
const (
	VariantKindMap    VariantKind = "Map"
	VariantKindSlice  VariantKind = "Slice"
	VariantKindScalar VariantKind = "Scalar"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL