blob: 37141bd5dac98d9775824bc7650b3ea4e29cf1c4 [file] [log] [blame]
Zack Williamse940c7a2019-08-21 14:25:39 -07001/*
2Copyright 2016 The Kubernetes Authors.
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17package v1
18
19import (
20 "k8s.io/apimachinery/pkg/runtime/schema"
21 "k8s.io/apimachinery/pkg/types"
22)
23
24// TODO: move this, Object, List, and Type to a different package
25type ObjectMetaAccessor interface {
26 GetObjectMeta() Object
27}
28
29// Object lets you work with object metadata from any of the versioned or
30// internal API objects. Attempting to set or retrieve a field on an object that does
31// not support that field (Name, UID, Namespace on lists) will be a no-op and return
32// a default value.
33type Object interface {
34 GetNamespace() string
35 SetNamespace(namespace string)
36 GetName() string
37 SetName(name string)
38 GetGenerateName() string
39 SetGenerateName(name string)
40 GetUID() types.UID
41 SetUID(uid types.UID)
42 GetResourceVersion() string
43 SetResourceVersion(version string)
44 GetGeneration() int64
45 SetGeneration(generation int64)
46 GetSelfLink() string
47 SetSelfLink(selfLink string)
48 GetCreationTimestamp() Time
49 SetCreationTimestamp(timestamp Time)
50 GetDeletionTimestamp() *Time
51 SetDeletionTimestamp(timestamp *Time)
52 GetDeletionGracePeriodSeconds() *int64
53 SetDeletionGracePeriodSeconds(*int64)
54 GetLabels() map[string]string
55 SetLabels(labels map[string]string)
56 GetAnnotations() map[string]string
57 SetAnnotations(annotations map[string]string)
58 GetInitializers() *Initializers
59 SetInitializers(initializers *Initializers)
60 GetFinalizers() []string
61 SetFinalizers(finalizers []string)
62 GetOwnerReferences() []OwnerReference
63 SetOwnerReferences([]OwnerReference)
64 GetClusterName() string
65 SetClusterName(clusterName string)
David Bainbridge86971522019-09-26 22:09:39 +000066 GetManagedFields() []ManagedFieldsEntry
67 SetManagedFields(managedFields []ManagedFieldsEntry)
Zack Williamse940c7a2019-08-21 14:25:39 -070068}
69
70// ListMetaAccessor retrieves the list interface from an object
71type ListMetaAccessor interface {
72 GetListMeta() ListInterface
73}
74
75// Common lets you work with core metadata from any of the versioned or
76// internal API objects. Attempting to set or retrieve a field on an object that does
77// not support that field will be a no-op and return a default value.
78// TODO: move this, and TypeMeta and ListMeta, to a different package
79type Common interface {
80 GetResourceVersion() string
81 SetResourceVersion(version string)
82 GetSelfLink() string
83 SetSelfLink(selfLink string)
84}
85
86// ListInterface lets you work with list metadata from any of the versioned or
87// internal API objects. Attempting to set or retrieve a field on an object that does
88// not support that field will be a no-op and return a default value.
89// TODO: move this, and TypeMeta and ListMeta, to a different package
90type ListInterface interface {
91 GetResourceVersion() string
92 SetResourceVersion(version string)
93 GetSelfLink() string
94 SetSelfLink(selfLink string)
95 GetContinue() string
96 SetContinue(c string)
David Bainbridge86971522019-09-26 22:09:39 +000097 GetRemainingItemCount() *int64
98 SetRemainingItemCount(c *int64)
Zack Williamse940c7a2019-08-21 14:25:39 -070099}
100
101// Type exposes the type and APIVersion of versioned or internal API objects.
102// TODO: move this, and TypeMeta and ListMeta, to a different package
103type Type interface {
104 GetAPIVersion() string
105 SetAPIVersion(version string)
106 GetKind() string
107 SetKind(kind string)
108}
109
David Bainbridge86971522019-09-26 22:09:39 +0000110var _ ListInterface = &ListMeta{}
111
Zack Williamse940c7a2019-08-21 14:25:39 -0700112func (meta *ListMeta) GetResourceVersion() string { return meta.ResourceVersion }
113func (meta *ListMeta) SetResourceVersion(version string) { meta.ResourceVersion = version }
114func (meta *ListMeta) GetSelfLink() string { return meta.SelfLink }
115func (meta *ListMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink }
116func (meta *ListMeta) GetContinue() string { return meta.Continue }
117func (meta *ListMeta) SetContinue(c string) { meta.Continue = c }
David Bainbridge86971522019-09-26 22:09:39 +0000118func (meta *ListMeta) GetRemainingItemCount() *int64 { return meta.RemainingItemCount }
119func (meta *ListMeta) SetRemainingItemCount(c *int64) { meta.RemainingItemCount = c }
Zack Williamse940c7a2019-08-21 14:25:39 -0700120
121func (obj *TypeMeta) GetObjectKind() schema.ObjectKind { return obj }
122
123// SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta
124func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) {
125 obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
126}
127
128// GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta
129func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind {
130 return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind)
131}
132
133func (obj *ListMeta) GetListMeta() ListInterface { return obj }
134
135func (obj *ObjectMeta) GetObjectMeta() Object { return obj }
136
137// Namespace implements metav1.Object for any object with an ObjectMeta typed field. Allows
138// fast, direct access to metadata fields for API objects.
139func (meta *ObjectMeta) GetNamespace() string { return meta.Namespace }
140func (meta *ObjectMeta) SetNamespace(namespace string) { meta.Namespace = namespace }
141func (meta *ObjectMeta) GetName() string { return meta.Name }
142func (meta *ObjectMeta) SetName(name string) { meta.Name = name }
143func (meta *ObjectMeta) GetGenerateName() string { return meta.GenerateName }
144func (meta *ObjectMeta) SetGenerateName(generateName string) { meta.GenerateName = generateName }
145func (meta *ObjectMeta) GetUID() types.UID { return meta.UID }
146func (meta *ObjectMeta) SetUID(uid types.UID) { meta.UID = uid }
147func (meta *ObjectMeta) GetResourceVersion() string { return meta.ResourceVersion }
148func (meta *ObjectMeta) SetResourceVersion(version string) { meta.ResourceVersion = version }
149func (meta *ObjectMeta) GetGeneration() int64 { return meta.Generation }
150func (meta *ObjectMeta) SetGeneration(generation int64) { meta.Generation = generation }
151func (meta *ObjectMeta) GetSelfLink() string { return meta.SelfLink }
152func (meta *ObjectMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink }
153func (meta *ObjectMeta) GetCreationTimestamp() Time { return meta.CreationTimestamp }
154func (meta *ObjectMeta) SetCreationTimestamp(creationTimestamp Time) {
155 meta.CreationTimestamp = creationTimestamp
156}
157func (meta *ObjectMeta) GetDeletionTimestamp() *Time { return meta.DeletionTimestamp }
158func (meta *ObjectMeta) SetDeletionTimestamp(deletionTimestamp *Time) {
159 meta.DeletionTimestamp = deletionTimestamp
160}
161func (meta *ObjectMeta) GetDeletionGracePeriodSeconds() *int64 { return meta.DeletionGracePeriodSeconds }
162func (meta *ObjectMeta) SetDeletionGracePeriodSeconds(deletionGracePeriodSeconds *int64) {
163 meta.DeletionGracePeriodSeconds = deletionGracePeriodSeconds
164}
165func (meta *ObjectMeta) GetLabels() map[string]string { return meta.Labels }
166func (meta *ObjectMeta) SetLabels(labels map[string]string) { meta.Labels = labels }
167func (meta *ObjectMeta) GetAnnotations() map[string]string { return meta.Annotations }
168func (meta *ObjectMeta) SetAnnotations(annotations map[string]string) { meta.Annotations = annotations }
169func (meta *ObjectMeta) GetInitializers() *Initializers { return meta.Initializers }
170func (meta *ObjectMeta) SetInitializers(initializers *Initializers) { meta.Initializers = initializers }
171func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers }
172func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers }
173func (meta *ObjectMeta) GetOwnerReferences() []OwnerReference { return meta.OwnerReferences }
174func (meta *ObjectMeta) SetOwnerReferences(references []OwnerReference) {
175 meta.OwnerReferences = references
176}
David Bainbridge86971522019-09-26 22:09:39 +0000177func (meta *ObjectMeta) GetClusterName() string { return meta.ClusterName }
178func (meta *ObjectMeta) SetClusterName(clusterName string) { meta.ClusterName = clusterName }
179func (meta *ObjectMeta) GetManagedFields() []ManagedFieldsEntry { return meta.ManagedFields }
180func (meta *ObjectMeta) SetManagedFields(managedFields []ManagedFieldsEntry) {
181 meta.ManagedFields = managedFields
182}