Code refactoring for bpa operator
[icn.git] / cmd / bpa-operator / vendor / k8s.io / apimachinery / pkg / runtime / register.go
1 /*
2 Copyright 2015 The Kubernetes Authors.
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8     http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15 */
16
17 package runtime
18
19 import "k8s.io/apimachinery/pkg/runtime/schema"
20
21 // SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta
22 func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) {
23         obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
24 }
25
26 // GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta
27 func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind {
28         return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind)
29 }
30
31 func (obj *TypeMeta) GetObjectKind() schema.ObjectKind { return obj }
32
33 // GetObjectKind implements Object for VersionedObjects, returning an empty ObjectKind
34 // interface if no objects are provided, or the ObjectKind interface of the object in the
35 // highest array position.
36 func (obj *VersionedObjects) GetObjectKind() schema.ObjectKind {
37         last := obj.Last()
38         if last == nil {
39                 return schema.EmptyObjectKind
40         }
41         return last.GetObjectKind()
42 }
43
44 // First returns the leftmost object in the VersionedObjects array, which is usually the
45 // object as serialized on the wire.
46 func (obj *VersionedObjects) First() Object {
47         if len(obj.Objects) == 0 {
48                 return nil
49         }
50         return obj.Objects[0]
51 }
52
53 // Last is the rightmost object in the VersionedObjects array, which is the object after
54 // all transformations have been applied. This is the same object that would be returned
55 // by Decode in a normal invocation (without VersionedObjects in the into argument).
56 func (obj *VersionedObjects) Last() Object {
57         if len(obj.Objects) == 0 {
58                 return nil
59         }
60         return obj.Objects[len(obj.Objects)-1]
61 }