deepcopy: add interface deepcopy funcs

- add DeepCopyObject() to runtime.Object interface
- add DeepCopyObject() via deepcopy-gen
- add DeepCopyObject() manually
- add DeepCopySelector() to selector interfaces
- add custom DeepCopy func for TableRow.Cells
This commit is contained in:
Dr. Stefan Schimanski 2017-07-06 10:59:05 +02:00
parent 774560085e
commit 39d95b9b06
135 changed files with 1063 additions and 12 deletions

View File

@ -14,5 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// +k8s:deepcopy-gen=package,register
// +groupName=kubeadm.k8s.io // +groupName=kubeadm.k8s.io
package kubeadm // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" package kubeadm // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"

View File

@ -22,6 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type MasterConfiguration struct { type MasterConfiguration struct {
metav1.TypeMeta metav1.TypeMeta
@ -86,6 +88,8 @@ type Etcd struct {
Image string Image string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type NodeConfiguration struct { type NodeConfiguration struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -16,4 +16,5 @@ limitations under the License.
// +k8s:defaulter-gen=TypeMeta // +k8s:defaulter-gen=TypeMeta
// +groupName=kubeadm.k8s.io // +groupName=kubeadm.k8s.io
// +k8s:deepcopy-gen=package
package v1alpha1 // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1" package v1alpha1 // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1"

View File

@ -22,6 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type MasterConfiguration struct { type MasterConfiguration struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -86,6 +88,8 @@ type Etcd struct {
Image string `json:"image"` Image string `json:"image"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type NodeConfiguration struct { type NodeConfiguration struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -14,5 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// +k8s:deepcopy-gen=package,register
// +groupName=testgroup.k8s.io // +groupName=testgroup.k8s.io
package testgroup // import "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup" package testgroup // import "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"

View File

@ -19,6 +19,7 @@ package testgroup
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType struct { type TestType struct {
metav1.TypeMeta metav1.TypeMeta
@ -26,6 +27,8 @@ type TestType struct {
Status TestTypeStatus Status TestTypeStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestTypeList struct { type TestTypeList struct {
metav1.TypeMeta metav1.TypeMeta
metav1.ListMeta metav1.ListMeta

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// +k8s:deepcopy-gen=package,register
// +k8s:openapi-gen=true // +k8s:openapi-gen=true
// +groupName=testgroup.k8s.io // +groupName=testgroup.k8s.io
package v1 package v1

View File

@ -19,6 +19,7 @@ package v1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType struct { type TestType struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -32,6 +33,8 @@ type TestType struct {
Status TestTypeStatus `json:"status,omitempty"` Status TestTypeStatus `json:"status,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestTypeList struct { type TestTypeList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// +optional // +optional

View File

@ -93,6 +93,7 @@ type ClusterStatus struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation. // Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation.
type Cluster struct { type Cluster struct {
@ -110,6 +111,8 @@ type Cluster struct {
Status ClusterStatus Status ClusterStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A list of all the kubernetes clusters registered to the federation // A list of all the kubernetes clusters registered to the federation
type ClusterList struct { type ClusterList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -93,6 +93,7 @@ type ClusterStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +nonNamespaced=true // +nonNamespaced=true
// Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation. // Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation.
@ -111,6 +112,8 @@ type Cluster struct {
Status ClusterStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status ClusterStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A list of all the kubernetes clusters registered to the federation // A list of all the kubernetes clusters registered to the federation
type ClusterList struct { type ClusterList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -589,6 +589,7 @@ staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer
staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1 staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1
staging/src/k8s.io/apimachinery/pkg/conversion staging/src/k8s.io/apimachinery/pkg/conversion
staging/src/k8s.io/apimachinery/pkg/conversion/unstructured staging/src/k8s.io/apimachinery/pkg/conversion/unstructured
staging/src/k8s.io/apimachinery/pkg/labels
staging/src/k8s.io/apimachinery/pkg/openapi staging/src/k8s.io/apimachinery/pkg/openapi
staging/src/k8s.io/apimachinery/pkg/runtime/schema staging/src/k8s.io/apimachinery/pkg/runtime/schema
staging/src/k8s.io/apimachinery/pkg/runtime/serializer staging/src/k8s.io/apimachinery/pkg/runtime/serializer

View File

@ -29,12 +29,23 @@ import (
type FakeAPIObject struct{} type FakeAPIObject struct{}
func (obj *FakeAPIObject) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (obj *FakeAPIObject) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (obj *FakeAPIObject) DeepCopyObject() runtime.Object {
if obj == nil {
return nil
}
clone := *obj
return &clone
}
type ExtensionAPIObject struct { type ExtensionAPIObject struct {
metav1.TypeMeta metav1.TypeMeta
metav1.ObjectMeta metav1.ObjectMeta
} }
func (obj *ExtensionAPIObject) DeepCopyObject() runtime.Object {
panic("ExtensionAPIObject does not support DeepCopy")
}
func TestGetReference(t *testing.T) { func TestGetReference(t *testing.T) {
// when vendoring kube, if you don't force the set of registered versions (like make test does) // when vendoring kube, if you don't force the set of registered versions (like make test does)

View File

@ -417,6 +417,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type PersistentVolume struct { type PersistentVolume struct {
metav1.TypeMeta metav1.TypeMeta
@ -483,6 +484,8 @@ type PersistentVolumeStatus struct {
Reason string Reason string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type PersistentVolumeList struct { type PersistentVolumeList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -491,6 +494,7 @@ type PersistentVolumeList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PersistentVolumeClaim is a user's request for and claim to a persistent volume // PersistentVolumeClaim is a user's request for and claim to a persistent volume
type PersistentVolumeClaim struct { type PersistentVolumeClaim struct {
@ -507,6 +511,8 @@ type PersistentVolumeClaim struct {
Status PersistentVolumeClaimStatus Status PersistentVolumeClaimStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type PersistentVolumeClaimList struct { type PersistentVolumeClaimList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -1839,6 +1845,8 @@ const (
RestartPolicyNever RestartPolicy = "Never" RestartPolicyNever RestartPolicy = "Never"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodList is a list of Pods. // PodList is a list of Pods.
type PodList struct { type PodList struct {
metav1.TypeMeta metav1.TypeMeta
@ -2356,6 +2364,8 @@ type PodStatus struct {
ContainerStatuses []ContainerStatus ContainerStatuses []ContainerStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
type PodStatusResult struct { type PodStatusResult struct {
metav1.TypeMeta metav1.TypeMeta
@ -2368,6 +2378,7 @@ type PodStatusResult struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Pod is a collection of containers, used as either input (create, update) or as output (list, get). // Pod is a collection of containers, used as either input (create, update) or as output (list, get).
type Pod struct { type Pod struct {
@ -2397,6 +2408,7 @@ type PodTemplateSpec struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodTemplate describes a template for creating copies of a predefined pod. // PodTemplate describes a template for creating copies of a predefined pod.
type PodTemplate struct { type PodTemplate struct {
@ -2409,6 +2421,8 @@ type PodTemplate struct {
Template PodTemplateSpec Template PodTemplateSpec
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodTemplateList is a list of PodTemplates. // PodTemplateList is a list of PodTemplates.
type PodTemplateList struct { type PodTemplateList struct {
metav1.TypeMeta metav1.TypeMeta
@ -2502,6 +2516,7 @@ type ReplicationControllerCondition struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicationController represents the configuration of a replication controller. // ReplicationController represents the configuration of a replication controller.
type ReplicationController struct { type ReplicationController struct {
@ -2519,6 +2534,8 @@ type ReplicationController struct {
Status ReplicationControllerStatus Status ReplicationControllerStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicationControllerList is a collection of replication controllers. // ReplicationControllerList is a collection of replication controllers.
type ReplicationControllerList struct { type ReplicationControllerList struct {
metav1.TypeMeta metav1.TypeMeta
@ -2534,6 +2551,8 @@ const (
ClusterIPNone = "None" ClusterIPNone = "None"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceList holds a list of services. // ServiceList holds a list of services.
type ServiceList struct { type ServiceList struct {
metav1.TypeMeta metav1.TypeMeta
@ -2732,6 +2751,7 @@ type ServicePort struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Service is a named abstraction of software service (for example, mysql) consisting of local port // Service is a named abstraction of software service (for example, mysql) consisting of local port
// (for example 3306) that the proxy listens on, and the selector that determines which pods // (for example 3306) that the proxy listens on, and the selector that determines which pods
@ -2751,6 +2771,7 @@ type Service struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceAccount binds together: // ServiceAccount binds together:
// * a name, understood by users, and perhaps by peripheral systems, for an identity // * a name, understood by users, and perhaps by peripheral systems, for an identity
@ -2776,6 +2797,8 @@ type ServiceAccount struct {
AutomountServiceAccountToken *bool AutomountServiceAccountToken *bool
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceAccountList is a list of ServiceAccount objects // ServiceAccountList is a list of ServiceAccount objects
type ServiceAccountList struct { type ServiceAccountList struct {
metav1.TypeMeta metav1.TypeMeta
@ -2786,6 +2809,7 @@ type ServiceAccountList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Endpoints is a collection of endpoints that implement the actual service. Example: // Endpoints is a collection of endpoints that implement the actual service. Example:
// Name: "mysvc", // Name: "mysvc",
@ -2855,6 +2879,8 @@ type EndpointPort struct {
Protocol Protocol Protocol Protocol
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EndpointsList is a list of endpoints. // EndpointsList is a list of endpoints.
type EndpointsList struct { type EndpointsList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3126,6 +3152,7 @@ type ResourceList map[ResourceName]resource.Quantity
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Node is a worker node in Kubernetes // Node is a worker node in Kubernetes
// The name of the node according to etcd is in ObjectMeta.Name. // The name of the node according to etcd is in ObjectMeta.Name.
@ -3143,6 +3170,8 @@ type Node struct {
Status NodeStatus Status NodeStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NodeList is a list of nodes. // NodeList is a list of nodes.
type NodeList struct { type NodeList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3186,6 +3215,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A namespace provides a scope for Names. // A namespace provides a scope for Names.
// Use of multiple namespaces is optional // Use of multiple namespaces is optional
@ -3203,6 +3233,8 @@ type Namespace struct {
Status NamespaceStatus Status NamespaceStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NamespaceList is a list of Namespaces. // NamespaceList is a list of Namespaces.
type NamespaceList struct { type NamespaceList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3212,6 +3244,8 @@ type NamespaceList struct {
Items []Namespace Items []Namespace
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. // Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
// Deprecated in 1.7, please use the bindings subresource of pods instead. // Deprecated in 1.7, please use the bindings subresource of pods instead.
type Binding struct { type Binding struct {
@ -3245,6 +3279,8 @@ const (
DeletePropagationForeground DeletionPropagation = "Foreground" DeletePropagationForeground DeletionPropagation = "Foreground"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeleteOptions may be provided when deleting an API object // DeleteOptions may be provided when deleting an API object
// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
type DeleteOptions struct { type DeleteOptions struct {
@ -3276,6 +3312,8 @@ type DeleteOptions struct {
PropagationPolicy *DeletionPropagation PropagationPolicy *DeletionPropagation
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ListOptions is the query options to a standard REST list call, and has future support for // ListOptions is the query options to a standard REST list call, and has future support for
// watch calls. // watch calls.
// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
@ -3303,6 +3341,8 @@ type ListOptions struct {
TimeoutSeconds *int64 TimeoutSeconds *int64
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodLogOptions is the query options for a Pod's logs REST call // PodLogOptions is the query options for a Pod's logs REST call
type PodLogOptions struct { type PodLogOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3335,6 +3375,8 @@ type PodLogOptions struct {
LimitBytes *int64 LimitBytes *int64
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodAttachOptions is the query options to a Pod's remote attach call // PodAttachOptions is the query options to a Pod's remote attach call
// TODO: merge w/ PodExecOptions below for stdin, stdout, etc // TODO: merge w/ PodExecOptions below for stdin, stdout, etc
type PodAttachOptions struct { type PodAttachOptions struct {
@ -3361,6 +3403,8 @@ type PodAttachOptions struct {
Container string Container string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodExecOptions is the query options to a Pod's remote exec call // PodExecOptions is the query options to a Pod's remote exec call
type PodExecOptions struct { type PodExecOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3384,6 +3428,8 @@ type PodExecOptions struct {
Command []string Command []string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPortForwardOptions is the query options to a Pod's port forward call // PodPortForwardOptions is the query options to a Pod's port forward call
type PodPortForwardOptions struct { type PodPortForwardOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3393,6 +3439,8 @@ type PodPortForwardOptions struct {
Ports []int32 Ports []int32
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodProxyOptions is the query options to a Pod's proxy call // PodProxyOptions is the query options to a Pod's proxy call
type PodProxyOptions struct { type PodProxyOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3401,6 +3449,8 @@ type PodProxyOptions struct {
Path string Path string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NodeProxyOptions is the query options to a Node's proxy call // NodeProxyOptions is the query options to a Node's proxy call
type NodeProxyOptions struct { type NodeProxyOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3409,6 +3459,8 @@ type NodeProxyOptions struct {
Path string Path string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceProxyOptions is the query options to a Service's proxy call. // ServiceProxyOptions is the query options to a Service's proxy call.
type ServiceProxyOptions struct { type ServiceProxyOptions struct {
metav1.TypeMeta metav1.TypeMeta
@ -3422,6 +3474,7 @@ type ServiceProxyOptions struct {
} }
// ObjectReference contains enough information to let you inspect or modify the referred object. // ObjectReference contains enough information to let you inspect or modify the referred object.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ObjectReference struct { type ObjectReference struct {
// +optional // +optional
Kind string Kind string
@ -3454,6 +3507,8 @@ type LocalObjectReference struct {
Name string Name string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type SerializedReference struct { type SerializedReference struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -3478,6 +3533,7 @@ const (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Event is a report of an event somewhere in the cluster. // Event is a report of an event somewhere in the cluster.
// TODO: Decide whether to store these separately or with the object they apply to. // TODO: Decide whether to store these separately or with the object they apply to.
@ -3523,6 +3579,8 @@ type Event struct {
Type string Type string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EventList is a list of events. // EventList is a list of events.
type EventList struct { type EventList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3532,6 +3590,8 @@ type EventList struct {
Items []Event Items []Event
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// List holds a list of objects, which may not be known by the server. // List holds a list of objects, which may not be known by the server.
type List struct { type List struct {
metav1.TypeMeta metav1.TypeMeta
@ -3582,6 +3642,7 @@ type LimitRangeSpec struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LimitRange sets resource usage limits for each kind of resource in a Namespace // LimitRange sets resource usage limits for each kind of resource in a Namespace
type LimitRange struct { type LimitRange struct {
@ -3594,6 +3655,8 @@ type LimitRange struct {
Spec LimitRangeSpec Spec LimitRangeSpec
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LimitRangeList is a list of LimitRange items. // LimitRangeList is a list of LimitRange items.
type LimitRangeList struct { type LimitRangeList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3672,6 +3735,7 @@ type ResourceQuotaStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ResourceQuota sets aggregate quota restrictions enforced per namespace // ResourceQuota sets aggregate quota restrictions enforced per namespace
type ResourceQuota struct { type ResourceQuota struct {
@ -3688,6 +3752,8 @@ type ResourceQuota struct {
Status ResourceQuotaStatus Status ResourceQuotaStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ResourceQuotaList is a list of ResourceQuota items // ResourceQuotaList is a list of ResourceQuota items
type ResourceQuotaList struct { type ResourceQuotaList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3699,6 +3765,7 @@ type ResourceQuotaList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Secret holds secret data of a certain type. The total bytes of the values in // Secret holds secret data of a certain type. The total bytes of the values in
// the Data field must be less than MaxSecretSize bytes. // the Data field must be less than MaxSecretSize bytes.
@ -3803,6 +3870,8 @@ const (
TLSPrivateKeyKey = "tls.key" TLSPrivateKeyKey = "tls.key"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type SecretList struct { type SecretList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -3812,6 +3881,7 @@ type SecretList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ConfigMap holds configuration data for components or applications to consume. // ConfigMap holds configuration data for components or applications to consume.
type ConfigMap struct { type ConfigMap struct {
@ -3825,6 +3895,8 @@ type ConfigMap struct {
Data map[string]string Data map[string]string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ConfigMapList is a resource containing a list of ConfigMap objects. // ConfigMapList is a resource containing a list of ConfigMap objects.
type ConfigMapList struct { type ConfigMapList struct {
metav1.TypeMeta metav1.TypeMeta
@ -3895,6 +3967,7 @@ type ComponentCondition struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ComponentStatus (and ComponentStatusList) holds the cluster validation info. // ComponentStatus (and ComponentStatusList) holds the cluster validation info.
type ComponentStatus struct { type ComponentStatus struct {
@ -3906,6 +3979,8 @@ type ComponentStatus struct {
Conditions []ComponentCondition Conditions []ComponentCondition
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ComponentStatusList struct { type ComponentStatusList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -3969,6 +4044,8 @@ type SELinuxOptions struct {
Level string Level string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RangeAllocation is an opaque API object (not exposed to end users) that can be persisted to record // RangeAllocation is an opaque API object (not exposed to end users) that can be persisted to record
// the global allocation state of the cluster. The schema of Range and Data generic, in that Range // the global allocation state of the cluster. The schema of Range and Data generic, in that Range
// should be a string representation of the inputs to a range (for instance, for IP allocation it // should be a string representation of the inputs to a range (for instance, for IP allocation it

View File

@ -33,11 +33,11 @@ type Time struct {
time.Time `protobuf:"-"` time.Time `protobuf:"-"`
} }
// DeepCopy returns a deep-copy of the Time value. The underlying time.Time // DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time
// type is effectively immutable in the time API, so it is safe to // type is effectively immutable in the time API, so it is safe to
// copy-by-assign, despite the presence of (unexported) Pointer fields. // copy-by-assign, despite the presence of (unexported) Pointer fields.
func (t Time) DeepCopy() Time { func (t *Time) DeepCopyInto(out *Time) {
return t *out = *t
} }
// String returns the representation of the time. // String returns the representation of the time.

View File

@ -23,6 +23,8 @@ package unversioned
// TypeMeta describes an individual object in an API response or request // TypeMeta describes an individual object in an API response or request
// with strings representing the type of the object and its API schema version. // with strings representing the type of the object and its API schema version.
// Structures that are versioned or persisted should inline TypeMeta. // Structures that are versioned or persisted should inline TypeMeta.
//
// +k8s:deepcopy-gen=false
type TypeMeta struct { type TypeMeta struct {
// Kind is a string value representing the REST resource this object represents. // Kind is a string value representing the REST resource this object represents.
// Servers may infer this from the endpoint the client submits requests to. // Servers may infer this from the endpoint the client submits requests to.

19
pkg/apis/abac/doc.go Normal file
View File

@ -0,0 +1,19 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// +k8s:deepcopy-gen=package
package abac

View File

@ -20,6 +20,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Policy contains a single ABAC policy rule // Policy contains a single ABAC policy rule
type Policy struct { type Policy struct {
metav1.TypeMeta metav1.TypeMeta

20
pkg/apis/abac/v0/doc.go Normal file
View File

@ -0,0 +1,20 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// +k8s:deepcopy-gen=package,register
// +groupName=abac.authorization.kubernetes.io
package v0 // import "k8s.io/kubernetes/pkg/apis/abac/v0"

View File

@ -21,6 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Policy contains a single ABAC policy rule // Policy contains a single ABAC policy rule
type Policy struct { type Policy struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -21,6 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Policy contains a single ABAC policy rule // Policy contains a single ABAC policy rule
type Policy struct { type Policy struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -23,6 +23,8 @@ import (
"k8s.io/kubernetes/pkg/apis/authentication" "k8s.io/kubernetes/pkg/apis/authentication"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// AdmissionReview describes an admission request. // AdmissionReview describes an admission request.
type AdmissionReview struct { type AdmissionReview struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -23,6 +23,8 @@ import (
"k8s.io/apiserver/pkg/admission" "k8s.io/apiserver/pkg/admission"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// AdmissionReview describes an admission request. // AdmissionReview describes an admission request.
type AdmissionReview struct { type AdmissionReview struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InitializerConfiguration describes the configuration of initializers. // InitializerConfiguration describes the configuration of initializers.
type InitializerConfiguration struct { type InitializerConfiguration struct {
@ -40,6 +41,8 @@ type InitializerConfiguration struct {
Initializers []Initializer Initializers []Initializer
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InitializerConfigurationList is a list of InitializerConfiguration. // InitializerConfigurationList is a list of InitializerConfiguration.
type InitializerConfigurationList struct { type InitializerConfigurationList struct {
metav1.TypeMeta metav1.TypeMeta
@ -120,6 +123,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ExternalAdmissionHookConfiguration describes the configuration of initializers. // ExternalAdmissionHookConfiguration describes the configuration of initializers.
type ExternalAdmissionHookConfiguration struct { type ExternalAdmissionHookConfiguration struct {
@ -133,6 +137,8 @@ type ExternalAdmissionHookConfiguration struct {
ExternalAdmissionHooks []ExternalAdmissionHook ExternalAdmissionHooks []ExternalAdmissionHook
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. // ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.
type ExternalAdmissionHookConfigurationList struct { type ExternalAdmissionHookConfigurationList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -23,6 +23,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StatefulSet represents a set of pods with consistent identities. // StatefulSet represents a set of pods with consistent identities.
// Identities are defined as: // Identities are defined as:
@ -188,6 +189,8 @@ type StatefulSetStatus struct {
UpdateRevision string UpdateRevision string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StatefulSetList is a collection of StatefulSets. // StatefulSetList is a collection of StatefulSets.
type StatefulSetList struct { type StatefulSetList struct {
metav1.TypeMeta metav1.TypeMeta
@ -197,6 +200,7 @@ type StatefulSetList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ControllerRevision implements an immutable snapshot of state data. Clients // ControllerRevision implements an immutable snapshot of state data. Clients
// are responsible for serializing and deserializing the objects that contain // are responsible for serializing and deserializing the objects that contain
@ -218,6 +222,8 @@ type ControllerRevision struct {
Revision int64 Revision int64
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ControllerRevisionList is a resource containing a list of ControllerRevision objects. // ControllerRevisionList is a resource containing a list of ControllerRevision objects.
type ControllerRevisionList struct { type ControllerRevisionList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -38,6 +38,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TokenReview attempts to authenticate a token to a known user. // TokenReview attempts to authenticate a token to a known user.
type TokenReview struct { type TokenReview struct {

View File

@ -23,6 +23,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SubjectAccessReview checks whether or not a user or group can perform an action. Not filling in a // SubjectAccessReview checks whether or not a user or group can perform an action. Not filling in a
// spec.namespace means "in all namespaces". // spec.namespace means "in all namespaces".
@ -40,6 +41,7 @@ type SubjectAccessReview struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a // SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a
// spec.namespace means "in all namespaces". Self is a special case, because users should always be able // spec.namespace means "in all namespaces". Self is a special case, because users should always be able
@ -57,6 +59,7 @@ type SelfSubjectAccessReview struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace.
// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions

View File

@ -22,6 +22,8 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Scale represents a scaling request for a resource. // Scale represents a scaling request for a resource.
type Scale struct { type Scale struct {
metav1.TypeMeta metav1.TypeMeta
@ -325,6 +327,7 @@ type ResourceMetricStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// HorizontalPodAutoscaler is the configuration for a horizontal pod // HorizontalPodAutoscaler is the configuration for a horizontal pod
// autoscaler, which automatically manages the replica count of any resource // autoscaler, which automatically manages the replica count of any resource
@ -346,6 +349,8 @@ type HorizontalPodAutoscaler struct {
Status HorizontalPodAutoscalerStatus Status HorizontalPodAutoscalerStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. // HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.
type HorizontalPodAutoscalerList struct { type HorizontalPodAutoscalerList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -22,6 +22,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Job represents the configuration of a single job. // Job represents the configuration of a single job.
type Job struct { type Job struct {
@ -42,6 +43,8 @@ type Job struct {
Status JobStatus Status JobStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// JobList is a collection of jobs. // JobList is a collection of jobs.
type JobList struct { type JobList struct {
metav1.TypeMeta metav1.TypeMeta
@ -54,6 +57,8 @@ type JobList struct {
Items []Job Items []Job
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// JobTemplate describes a template for creating copies of a predefined pod. // JobTemplate describes a template for creating copies of a predefined pod.
type JobTemplate struct { type JobTemplate struct {
metav1.TypeMeta metav1.TypeMeta
@ -188,6 +193,7 @@ type JobCondition struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJob represents the configuration of a single cron job. // CronJob represents the configuration of a single cron job.
type CronJob struct { type CronJob struct {
@ -208,6 +214,8 @@ type CronJob struct {
Status CronJobStatus Status CronJobStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJobList is a collection of cron jobs. // CronJobList is a collection of cron jobs.
type CronJobList struct { type CronJobList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -20,6 +20,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Describes a certificate signing request // Describes a certificate signing request
type CertificateSigningRequest struct { type CertificateSigningRequest struct {
@ -102,6 +103,8 @@ type CertificateSigningRequestCondition struct {
LastUpdateTime metav1.Time LastUpdateTime metav1.Time
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type CertificateSigningRequestList struct { type CertificateSigningRequestList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional

View File

@ -78,6 +78,8 @@ type KubeProxyConntrackConfiguration struct {
TCPCloseWaitTimeout metav1.Duration TCPCloseWaitTimeout metav1.Duration
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// KubeProxyConfiguration contains everything necessary to configure the // KubeProxyConfiguration contains everything necessary to configure the
// Kubernetes proxy server. // Kubernetes proxy server.
type KubeProxyConfiguration struct { type KubeProxyConfiguration struct {
@ -166,6 +168,8 @@ const (
HairpinNone = "none" HairpinNone = "none"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true: // A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true:
// - its value will never, or cannot safely be changed during the lifetime of a node // - its value will never, or cannot safely be changed during the lifetime of a node
// - its value cannot be safely shared between nodes at the same time (e.g. a hostname) // - its value cannot be safely shared between nodes at the same time (e.g. a hostname)
@ -563,6 +567,8 @@ type KubeletAnonymousAuthentication struct {
Enabled bool Enabled bool
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type KubeSchedulerConfiguration struct { type KubeSchedulerConfiguration struct {
metav1.TypeMeta metav1.TypeMeta
@ -650,6 +656,8 @@ type GroupResource struct {
Resource string Resource string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type KubeControllerManagerConfiguration struct { type KubeControllerManagerConfiguration struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -74,6 +74,8 @@ type KubeProxyConntrackConfiguration struct {
TCPCloseWaitTimeout metav1.Duration `json:"tcpCloseWaitTimeout"` TCPCloseWaitTimeout metav1.Duration `json:"tcpCloseWaitTimeout"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// KubeProxyConfiguration contains everything necessary to configure the // KubeProxyConfiguration contains everything necessary to configure the
// Kubernetes proxy server. // Kubernetes proxy server.
type KubeProxyConfiguration struct { type KubeProxyConfiguration struct {
@ -144,6 +146,8 @@ const (
ProxyModeIPTables ProxyMode = "iptables" ProxyModeIPTables ProxyMode = "iptables"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type KubeSchedulerConfiguration struct { type KubeSchedulerConfiguration struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -241,6 +245,8 @@ type LeaderElectionConfiguration struct {
ResourceLock string `json:"resourceLock"` ResourceLock string `json:"resourceLock"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true: // A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true:
// - its value will never, or cannot safely be changed during the lifetime of a node // - its value will never, or cannot safely be changed during the lifetime of a node
// - its value cannot be safely shared between nodes at the same time (e.g. a hostname) // - its value cannot be safely shared between nodes at the same time (e.g. a hostname)

View File

@ -62,6 +62,7 @@ type ScaleStatus struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// represents a scaling request for a resource. // represents a scaling request for a resource.
type Scale struct { type Scale struct {
@ -79,6 +80,8 @@ type Scale struct {
Status ScaleStatus Status ScaleStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Dummy definition // Dummy definition
type ReplicationControllerDummy struct { type ReplicationControllerDummy struct {
metav1.TypeMeta metav1.TypeMeta
@ -109,6 +112,7 @@ type CustomMetricCurrentStatusList struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource // A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource
// types to the API. It consists of one or more Versions of the api. // types to the API. It consists of one or more Versions of the api.
@ -127,6 +131,8 @@ type ThirdPartyResource struct {
Versions []APIVersion Versions []APIVersion
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ThirdPartyResourceList struct { type ThirdPartyResourceList struct {
metav1.TypeMeta metav1.TypeMeta
@ -145,6 +151,8 @@ type APIVersion struct {
Name string Name string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// An internal object, used for versioned storage in etcd. Not exposed to the end user. // An internal object, used for versioned storage in etcd. Not exposed to the end user.
type ThirdPartyResourceData struct { type ThirdPartyResourceData struct {
metav1.TypeMeta metav1.TypeMeta
@ -158,6 +166,7 @@ type ThirdPartyResourceData struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Deployment struct { type Deployment struct {
metav1.TypeMeta metav1.TypeMeta
@ -221,6 +230,8 @@ type DeploymentSpec struct {
ProgressDeadlineSeconds *int32 ProgressDeadlineSeconds *int32
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeploymentRollback stores the information required to rollback a deployment. // DeploymentRollback stores the information required to rollback a deployment.
type DeploymentRollback struct { type DeploymentRollback struct {
metav1.TypeMeta metav1.TypeMeta
@ -367,6 +378,8 @@ type DeploymentCondition struct {
Message string Message string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type DeploymentList struct { type DeploymentList struct {
metav1.TypeMeta metav1.TypeMeta
// +optional // +optional
@ -507,6 +520,7 @@ type DaemonSetStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DaemonSet represents the configuration of a daemon set. // DaemonSet represents the configuration of a daemon set.
type DaemonSet struct { type DaemonSet struct {
@ -538,6 +552,8 @@ const (
DaemonSetTemplateGenerationKey string = "pod-template-generation" DaemonSetTemplateGenerationKey string = "pod-template-generation"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DaemonSetList is a collection of daemon sets. // DaemonSetList is a collection of daemon sets.
type DaemonSetList struct { type DaemonSetList struct {
metav1.TypeMeta metav1.TypeMeta
@ -550,6 +566,8 @@ type DaemonSetList struct {
Items []DaemonSet Items []DaemonSet
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ThirdPartyResourceDataList struct { type ThirdPartyResourceDataList struct {
metav1.TypeMeta metav1.TypeMeta
// Standard list metadata // Standard list metadata
@ -561,6 +579,7 @@ type ThirdPartyResourceDataList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Ingress is a collection of rules that allow inbound connections to reach the // Ingress is a collection of rules that allow inbound connections to reach the
// endpoints defined by a backend. An Ingress can be configured to give services // endpoints defined by a backend. An Ingress can be configured to give services
@ -584,6 +603,8 @@ type Ingress struct {
Status IngressStatus Status IngressStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// IngressList is a collection of Ingress. // IngressList is a collection of Ingress.
type IngressList struct { type IngressList struct {
metav1.TypeMeta metav1.TypeMeta
@ -727,6 +748,7 @@ type IngressBackend struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicaSet represents the configuration of a replica set. // ReplicaSet represents the configuration of a replica set.
type ReplicaSet struct { type ReplicaSet struct {
@ -744,6 +766,8 @@ type ReplicaSet struct {
Status ReplicaSetStatus Status ReplicaSetStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicaSetList is a collection of ReplicaSets. // ReplicaSetList is a collection of ReplicaSets.
type ReplicaSetList struct { type ReplicaSetList struct {
metav1.TypeMeta metav1.TypeMeta
@ -834,6 +858,7 @@ type ReplicaSetCondition struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodSecurityPolicy governs the ability to make requests that affect the SecurityContext // PodSecurityPolicy governs the ability to make requests that affect the SecurityContext
// that will be applied to a pod and container. // that will be applied to a pod and container.
@ -1045,6 +1070,8 @@ const (
SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodSecurityPolicyList is a list of PodSecurityPolicy objects. // PodSecurityPolicyList is a list of PodSecurityPolicy objects.
type PodSecurityPolicyList struct { type PodSecurityPolicyList struct {
metav1.TypeMeta metav1.TypeMeta
@ -1055,6 +1082,7 @@ type PodSecurityPolicyList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicy describes what network traffic is allowed for a set of Pods // NetworkPolicy describes what network traffic is allowed for a set of Pods
type NetworkPolicy struct { type NetworkPolicy struct {
@ -1137,6 +1165,8 @@ type NetworkPolicyPeer struct {
NamespaceSelector *metav1.LabelSelector NamespaceSelector *metav1.LabelSelector
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicyList is a list of NetworkPolicy objects. // NetworkPolicyList is a list of NetworkPolicy objects.
type NetworkPolicyList struct { type NetworkPolicyList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -23,6 +23,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ImageReview checks if the set of images in a pod are allowed. // ImageReview checks if the set of images in a pod are allowed.
type ImageReview struct { type ImageReview struct {

View File

@ -37,11 +37,11 @@ type Time struct {
time.Time `protobuf:"-"` time.Time `protobuf:"-"`
} }
// DeepCopy returns a deep-copy of the Time value. The underlying time.Time // DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time
// type is effectively immutable in the time API, so it is safe to // type is effectively immutable in the time API, so it is safe to
// copy-by-assign, despite the presence of (unexported) Pointer fields. // copy-by-assign, despite the presence of (unexported) Pointer fields.
func (t Time) DeepCopy() Time { func (t *Time) DeepCopyInto(out *Time) {
return t *out = *t
} }
// String returns the representation of the time. // String returns the representation of the time.

View File

@ -23,6 +23,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicy describes what network traffic is allowed for a set of Pods // NetworkPolicy describes what network traffic is allowed for a set of Pods
type NetworkPolicy struct { type NetworkPolicy struct {
@ -105,6 +106,8 @@ type NetworkPolicyPeer struct {
NamespaceSelector *metav1.LabelSelector NamespaceSelector *metav1.LabelSelector
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicyList is a list of NetworkPolicy objects. // NetworkPolicyList is a list of NetworkPolicy objects.
type NetworkPolicyList struct { type NetworkPolicyList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -78,6 +78,7 @@ type PodDisruptionBudgetStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
type PodDisruptionBudget struct { type PodDisruptionBudget struct {
@ -93,6 +94,8 @@ type PodDisruptionBudget struct {
Status PodDisruptionBudgetStatus Status PodDisruptionBudgetStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. // PodDisruptionBudgetList is a collection of PodDisruptionBudgets.
type PodDisruptionBudgetList struct { type PodDisruptionBudgetList struct {
metav1.TypeMeta metav1.TypeMeta
@ -103,6 +106,7 @@ type PodDisruptionBudgetList struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Eviction evicts a pod from its node subject to certain policies and safety constraints. // Eviction evicts a pod from its node subject to certain policies and safety constraints.
// This is a subresource of Pod. A request to cause such an eviction is // This is a subresource of Pod. A request to cause such an eviction is

View File

@ -15,6 +15,7 @@ limitations under the License.
*/ */
// +k8s:defaulter-gen=TypeMeta // +k8s:defaulter-gen=TypeMeta
// +k8s:deepcopy-gen=package,register
// Package policy is for any kind of policy object. Suitable examples, even if // Package policy is for any kind of policy object. Suitable examples, even if
// they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy,

View File

@ -53,6 +53,7 @@ type PodDisruptionBudgetStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
type PodDisruptionBudget struct { type PodDisruptionBudget struct {
@ -68,6 +69,8 @@ type PodDisruptionBudget struct {
Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. // PodDisruptionBudgetList is a collection of PodDisruptionBudgets.
type PodDisruptionBudgetList struct { type PodDisruptionBudgetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -76,6 +79,8 @@ type PodDisruptionBudgetList struct {
Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"` Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Eviction evicts a pod from its node subject to certain policies and safety constraints. // Eviction evicts a pod from its node subject to certain policies and safety constraints.
// This is a subresource of Pod. A request to cause such an eviction is // This is a subresource of Pod. A request to cause such an eviction is
// created by POSTing to .../pods/<pod name>/eviction. // created by POSTing to .../pods/<pod name>/eviction.

View File

@ -88,6 +88,7 @@ type RoleRef struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
type Role struct { type Role struct {
@ -100,6 +101,7 @@ type Role struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. // RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace.
// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given // It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given
@ -116,6 +118,8 @@ type RoleBinding struct {
RoleRef RoleRef RoleRef RoleRef
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBindingList is a collection of RoleBindings // RoleBindingList is a collection of RoleBindings
type RoleBindingList struct { type RoleBindingList struct {
metav1.TypeMeta metav1.TypeMeta
@ -126,6 +130,8 @@ type RoleBindingList struct {
Items []RoleBinding Items []RoleBinding
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleList is a collection of Roles // RoleList is a collection of Roles
type RoleList struct { type RoleList struct {
metav1.TypeMeta metav1.TypeMeta
@ -138,6 +144,7 @@ type RoleList struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
type ClusterRole struct { type ClusterRole struct {
@ -151,6 +158,7 @@ type ClusterRole struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, // ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
// and adds who information via Subject. // and adds who information via Subject.
@ -167,6 +175,8 @@ type ClusterRoleBinding struct {
RoleRef RoleRef RoleRef RoleRef
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBindingList is a collection of ClusterRoleBindings // ClusterRoleBindingList is a collection of ClusterRoleBindings
type ClusterRoleBindingList struct { type ClusterRoleBindingList struct {
metav1.TypeMeta metav1.TypeMeta
@ -177,6 +187,8 @@ type ClusterRoleBindingList struct {
Items []ClusterRoleBinding Items []ClusterRoleBinding
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleList is a collection of ClusterRoles // ClusterRoleList is a collection of ClusterRoles
type ClusterRoleList struct { type ClusterRoleList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -22,6 +22,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPreset is a policy resource that defines additional runtime // PodPreset is a policy resource that defines additional runtime
// requirements for a Pod. // requirements for a Pod.
@ -53,6 +54,8 @@ type PodPresetSpec struct {
VolumeMounts []api.VolumeMount VolumeMounts []api.VolumeMount
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPresetList is a list of PodPreset objects. // PodPresetList is a list of PodPreset objects.
type PodPresetList struct { type PodPresetList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -20,6 +20,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClass describes a named "class" of storage offered in a cluster. // StorageClass describes a named "class" of storage offered in a cluster.
// Different classes might map to quality-of-service levels, or to backup policies, // Different classes might map to quality-of-service levels, or to backup policies,
@ -47,6 +48,8 @@ type StorageClass struct {
Parameters map[string]string Parameters map[string]string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClassList is a collection of storage classes. // StorageClassList is a collection of storage classes.
type StorageClassList struct { type StorageClassList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -23,6 +23,9 @@ import (
// MetadataOnlyObject allows decoding only the apiVersion, kind, and metadata fields of // MetadataOnlyObject allows decoding only the apiVersion, kind, and metadata fields of
// JSON data. // JSON data.
// TODO: enable meta-only decoding for protobuf. // TODO: enable meta-only decoding for protobuf.
//
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type MetadataOnlyObject struct { type MetadataOnlyObject struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// +optional // +optional
@ -32,6 +35,9 @@ type MetadataOnlyObject struct {
// MetadataOnlyObjectList allows decoding from JSON data only the typemeta and metadata of // MetadataOnlyObjectList allows decoding from JSON data only the typemeta and metadata of
// a list, and those of the enclosing objects. // a list, and those of the enclosing objects.
// TODO: enable meta-only decoding for protobuf. // TODO: enable meta-only decoding for protobuf.
//
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type MetadataOnlyObjectList struct { type MetadataOnlyObjectList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// +optional // +optional

View File

@ -49,6 +49,8 @@ import (
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
) )
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalType struct { type InternalType struct {
Kind string Kind string
APIVersion string APIVersion string
@ -56,6 +58,8 @@ type InternalType struct {
Name string Name string
} }
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalType struct { type ExternalType struct {
Kind string `json:"kind"` Kind string `json:"kind"`
APIVersion string `json:"apiVersion"` APIVersion string `json:"apiVersion"`
@ -63,6 +67,8 @@ type ExternalType struct {
Name string `json:"name"` Name string `json:"name"`
} }
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalType2 struct { type ExternalType2 struct {
Kind string `json:"kind"` Kind string `json:"kind"`
APIVersion string `json:"apiVersion"` APIVersion string `json:"apiVersion"`
@ -99,6 +105,8 @@ func NewInternalType(kind, apiversion, name string) *InternalType {
return &item return &item
} }
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalNamespacedType struct { type InternalNamespacedType struct {
Kind string Kind string
APIVersion string APIVersion string
@ -107,6 +115,8 @@ type InternalNamespacedType struct {
Namespace string Namespace string
} }
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalNamespacedType struct { type ExternalNamespacedType struct {
Kind string `json:"kind"` Kind string `json:"kind"`
APIVersion string `json:"apiVersion"` APIVersion string `json:"apiVersion"`
@ -115,6 +125,8 @@ type ExternalNamespacedType struct {
Namespace string `json:"namespace"` Namespace string `json:"namespace"`
} }
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalNamespacedType2 struct { type ExternalNamespacedType2 struct {
Kind string `json:"kind"` Kind string `json:"kind"`
APIVersion string `json:"apiVersion"` APIVersion string `json:"apiVersion"`

View File

@ -20,6 +20,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestStruct struct { type TestStruct struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// +optional // +optional

View File

@ -78,6 +78,8 @@ type NetworkPlugin interface {
Status() error Status() error
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodNetworkStatus stores the network status of a pod (currently just the primary IP address) // PodNetworkStatus stores the network status of a pod (currently just the primary IP address)
// This struct represents version "v1beta1" // This struct represents version "v1beta1"
type PodNetworkStatus struct { type PodNetworkStatus struct {

View File

@ -215,10 +215,24 @@ type TestPrintType struct {
} }
func (obj *TestPrintType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (obj *TestPrintType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (obj *TestPrintType) DeepCopyObject() runtime.Object {
if obj == nil {
return nil
}
clone := *obj
return &clone
}
type TestUnknownType struct{} type TestUnknownType struct{}
func (obj *TestUnknownType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (obj *TestUnknownType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (obj *TestUnknownType) DeepCopyObject() runtime.Object {
if obj == nil {
return nil
}
clone := *obj
return &clone
}
func TestPrinter(t *testing.T) { func TestPrinter(t *testing.T) {
//test inputs //test inputs

View File

@ -21,6 +21,8 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Configuration provides configuration for the PodTolerationRestriction admission controller. // Configuration provides configuration for the PodTolerationRestriction admission controller.
type Configuration struct { type Configuration struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -21,6 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Configuration provides configuration for the PodTolerationRestriction admission controller. // Configuration provides configuration for the PodTolerationRestriction admission controller.
type Configuration struct { type Configuration struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -18,6 +18,8 @@ package resourcequota
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Configuration provides configuration for the ResourceQuota admission controller. // Configuration provides configuration for the ResourceQuota admission controller.
type Configuration struct { type Configuration struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -18,6 +18,8 @@ package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Configuration provides configuration for the ResourceQuota admission controller. // Configuration provides configuration for the ResourceQuota admission controller.
type Configuration struct { type Configuration struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -0,0 +1,20 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// +k8s:deepcopy-gen=package,register
// Package api contains scheduler plugin API objects.
package api // import "k8s.io/kubernetes/plugin/pkg/scheduler/api"

View File

@ -33,6 +33,8 @@ const (
MaxWeight = MaxInt / MaxPriority MaxWeight = MaxInt / MaxPriority
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Policy struct { type Policy struct {
metav1.TypeMeta metav1.TypeMeta
// Holds the information to configure the fit predicate functions // Holds the information to configure the fit predicate functions

View File

@ -0,0 +1,20 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// +k8s:deepcopy-gen=package,register
// Package v1 contains scheduler plugin API objects.
package v1 // import "k8s.io/kubernetes/plugin/pkg/scheduler/api/v1"

View File

@ -25,6 +25,8 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Policy struct { type Policy struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// Holds the information to configure the fit predicate functions // Holds the information to configure the fit predicate functions

View File

@ -22,6 +22,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InitializerConfiguration describes the configuration of initializers. // InitializerConfiguration describes the configuration of initializers.
type InitializerConfiguration struct { type InitializerConfiguration struct {
@ -42,6 +43,8 @@ type InitializerConfiguration struct {
Initializers []Initializer `json:"initializers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=initializers"` Initializers []Initializer `json:"initializers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=initializers"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InitializerConfigurationList is a list of InitializerConfiguration. // InitializerConfigurationList is a list of InitializerConfiguration.
type InitializerConfigurationList struct { type InitializerConfigurationList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -122,6 +125,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ExternalAdmissionHookConfiguration describes the configuration of initializers. // ExternalAdmissionHookConfiguration describes the configuration of initializers.
type ExternalAdmissionHookConfiguration struct { type ExternalAdmissionHookConfiguration struct {
@ -137,6 +141,8 @@ type ExternalAdmissionHookConfiguration struct {
ExternalAdmissionHooks []ExternalAdmissionHook `json:"externalAdmissionHooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=externalAdmissionHooks"` ExternalAdmissionHooks []ExternalAdmissionHook `json:"externalAdmissionHooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=externalAdmissionHooks"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. // ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.
type ExternalAdmissionHookConfigurationList struct { type ExternalAdmissionHookConfigurationList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -58,6 +58,7 @@ type ScaleStatus struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Scale represents a scaling request for a resource. // Scale represents a scaling request for a resource.
type Scale struct { type Scale struct {
@ -76,6 +77,7 @@ type Scale struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StatefulSet represents a set of pods with consistent identities. // StatefulSet represents a set of pods with consistent identities.
// Identities are defined as: // Identities are defined as:
@ -241,6 +243,8 @@ type StatefulSetStatus struct {
UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"` UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StatefulSetList is a collection of StatefulSets. // StatefulSetList is a collection of StatefulSets.
type StatefulSetList struct { type StatefulSetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -250,6 +254,7 @@ type StatefulSetList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Deployment enables declarative updates for Pods and ReplicaSets. // Deployment enables declarative updates for Pods and ReplicaSets.
type Deployment struct { type Deployment struct {
@ -316,6 +321,8 @@ type DeploymentSpec struct {
ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeploymentRollback stores the information required to rollback a deployment. // DeploymentRollback stores the information required to rollback a deployment.
type DeploymentRollback struct { type DeploymentRollback struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -467,6 +474,8 @@ type DeploymentCondition struct {
Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeploymentList is a list of Deployments. // DeploymentList is a list of Deployments.
type DeploymentList struct { type DeploymentList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -479,6 +488,7 @@ type DeploymentList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ControllerRevision implements an immutable snapshot of state data. Clients // ControllerRevision implements an immutable snapshot of state data. Clients
// are responsible for serializing and deserializing the objects that contain // are responsible for serializing and deserializing the objects that contain
@ -503,6 +513,8 @@ type ControllerRevision struct {
Revision int64 `json:"revision" protobuf:"varint,3,opt,name=revision"` Revision int64 `json:"revision" protobuf:"varint,3,opt,name=revision"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ControllerRevisionList is a resource containing a list of ControllerRevision objects. // ControllerRevisionList is a resource containing a list of ControllerRevision objects.
type ControllerRevisionList struct { type ControllerRevisionList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -40,6 +40,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TokenReview attempts to authenticate a token to a known user. // TokenReview attempts to authenticate a token to a known user.
// Note: TokenReview requests may be cached by the webhook token authenticator // Note: TokenReview requests may be cached by the webhook token authenticator

View File

@ -25,6 +25,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TokenReview attempts to authenticate a token to a known user. // TokenReview attempts to authenticate a token to a known user.
// Note: TokenReview requests may be cached by the webhook token authenticator // Note: TokenReview requests may be cached by the webhook token authenticator

View File

@ -25,6 +25,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SubjectAccessReview checks whether or not a user or group can perform an action. // SubjectAccessReview checks whether or not a user or group can perform an action.
type SubjectAccessReview struct { type SubjectAccessReview struct {
@ -43,6 +44,7 @@ type SubjectAccessReview struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a // SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a
// spec.namespace means "in all namespaces". Self is a special case, because users should always be able // spec.namespace means "in all namespaces". Self is a special case, because users should always be able
@ -62,6 +64,7 @@ type SelfSubjectAccessReview struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace.
// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions

View File

@ -25,6 +25,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SubjectAccessReview checks whether or not a user or group can perform an action. // SubjectAccessReview checks whether or not a user or group can perform an action.
type SubjectAccessReview struct { type SubjectAccessReview struct {
@ -43,6 +44,7 @@ type SubjectAccessReview struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a // SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a
// spec.namespace means "in all namespaces". Self is a special case, because users should always be able // spec.namespace means "in all namespaces". Self is a special case, because users should always be able
@ -62,6 +64,7 @@ type SelfSubjectAccessReview struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace.
// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions

View File

@ -73,6 +73,7 @@ type HorizontalPodAutoscalerStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// configuration of a horizontal pod autoscaler. // configuration of a horizontal pod autoscaler.
type HorizontalPodAutoscaler struct { type HorizontalPodAutoscaler struct {
@ -90,6 +91,8 @@ type HorizontalPodAutoscaler struct {
Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// list of horizontal pod autoscaler objects. // list of horizontal pod autoscaler objects.
type HorizontalPodAutoscalerList struct { type HorizontalPodAutoscalerList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -101,6 +104,8 @@ type HorizontalPodAutoscalerList struct {
Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Scale represents a scaling request for a resource. // Scale represents a scaling request for a resource.
type Scale struct { type Scale struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -276,6 +276,7 @@ type ResourceMetricStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// HorizontalPodAutoscaler is the configuration for a horizontal pod // HorizontalPodAutoscaler is the configuration for a horizontal pod
// autoscaler, which automatically manages the replica count of any resource // autoscaler, which automatically manages the replica count of any resource
@ -297,6 +298,8 @@ type HorizontalPodAutoscaler struct {
Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. // HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.
type HorizontalPodAutoscalerList struct { type HorizontalPodAutoscalerList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Job represents the configuration of a single job. // Job represents the configuration of a single job.
type Job struct { type Job struct {
@ -42,6 +43,8 @@ type Job struct {
Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// JobList is a collection of jobs. // JobList is a collection of jobs.
type JobList struct { type JobList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// JobTemplate describes a template for creating copies of a predefined pod. // JobTemplate describes a template for creating copies of a predefined pod.
type JobTemplate struct { type JobTemplate struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -50,6 +52,7 @@ type JobTemplateSpec struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJob represents the configuration of a single cron job. // CronJob represents the configuration of a single cron job.
type CronJob struct { type CronJob struct {
@ -70,6 +73,8 @@ type CronJob struct {
Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJobList is a collection of cron jobs. // CronJobList is a collection of cron jobs.
type CronJobList struct { type CronJobList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -24,6 +24,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Describes a certificate signing request // Describes a certificate signing request
type CertificateSigningRequest struct { type CertificateSigningRequest struct {
@ -112,6 +113,8 @@ type CertificateSigningRequestCondition struct {
LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,4,opt,name=lastUpdateTime"` LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,4,opt,name=lastUpdateTime"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type CertificateSigningRequestList struct { type CertificateSigningRequestList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// +optional // +optional

View File

@ -466,6 +466,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PersistentVolume (PV) is a storage resource provisioned by an administrator. // PersistentVolume (PV) is a storage resource provisioned by an administrator.
// It is analogous to a node. // It is analogous to a node.
@ -551,6 +552,8 @@ type PersistentVolumeStatus struct {
Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PersistentVolumeList is a list of PersistentVolume items. // PersistentVolumeList is a list of PersistentVolume items.
type PersistentVolumeList struct { type PersistentVolumeList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -564,6 +567,7 @@ type PersistentVolumeList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PersistentVolumeClaim is a user's request for and claim to a persistent volume // PersistentVolumeClaim is a user's request for and claim to a persistent volume
type PersistentVolumeClaim struct { type PersistentVolumeClaim struct {
@ -585,6 +589,8 @@ type PersistentVolumeClaim struct {
Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. // PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
type PersistentVolumeClaimList struct { type PersistentVolumeClaimList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -2653,6 +2659,8 @@ type PodStatus struct {
QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"` QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
type PodStatusResult struct { type PodStatusResult struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -2670,6 +2678,7 @@ type PodStatusResult struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Pod is a collection of containers that can run on a host. This resource is created // Pod is a collection of containers that can run on a host. This resource is created
// by clients and scheduled onto hosts. // by clients and scheduled onto hosts.
@ -2694,6 +2703,8 @@ type Pod struct {
Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodList is a list of Pods. // PodList is a list of Pods.
type PodList struct { type PodList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -2721,6 +2732,7 @@ type PodTemplateSpec struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodTemplate describes a template for creating copies of a predefined pod. // PodTemplate describes a template for creating copies of a predefined pod.
type PodTemplate struct { type PodTemplate struct {
@ -2736,6 +2748,8 @@ type PodTemplate struct {
Template PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` Template PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodTemplateList is a list of PodTemplates. // PodTemplateList is a list of PodTemplates.
type PodTemplateList struct { type PodTemplateList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -2842,6 +2856,7 @@ type ReplicationControllerCondition struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicationController represents the configuration of a replication controller. // ReplicationController represents the configuration of a replication controller.
type ReplicationController struct { type ReplicationController struct {
@ -2867,6 +2882,8 @@ type ReplicationController struct {
Status ReplicationControllerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status ReplicationControllerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicationControllerList is a collection of replication controllers. // ReplicationControllerList is a collection of replication controllers.
type ReplicationControllerList struct { type ReplicationControllerList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3093,6 +3110,7 @@ type ServicePort struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Service is a named abstraction of software service (for example, mysql) consisting of local port // Service is a named abstraction of software service (for example, mysql) consisting of local port
// (for example 3306) that the proxy listens on, and the selector that determines which pods // (for example 3306) that the proxy listens on, and the selector that determines which pods
@ -3123,6 +3141,8 @@ const (
ClusterIPNone = "None" ClusterIPNone = "None"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceList holds a list of services. // ServiceList holds a list of services.
type ServiceList struct { type ServiceList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3136,6 +3156,7 @@ type ServiceList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceAccount binds together: // ServiceAccount binds together:
// * a name, understood by users, and perhaps by peripheral systems, for an identity // * a name, understood by users, and perhaps by peripheral systems, for an identity
@ -3168,6 +3189,8 @@ type ServiceAccount struct {
AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,4,opt,name=automountServiceAccountToken"` AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,4,opt,name=automountServiceAccountToken"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceAccountList is a list of ServiceAccount objects // ServiceAccountList is a list of ServiceAccount objects
type ServiceAccountList struct { type ServiceAccountList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3182,6 +3205,7 @@ type ServiceAccountList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Endpoints is a collection of endpoints that implement the actual service. Example: // Endpoints is a collection of endpoints that implement the actual service. Example:
// Name: "mysvc", // Name: "mysvc",
@ -3275,6 +3299,8 @@ type EndpointPort struct {
Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,3,opt,name=protocol,casttype=Protocol"` Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,3,opt,name=protocol,casttype=Protocol"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EndpointsList is a list of endpoints. // EndpointsList is a list of endpoints.
type EndpointsList struct { type EndpointsList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3563,6 +3589,7 @@ type ResourceList map[ResourceName]resource.Quantity
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Node is a worker node in Kubernetes. // Node is a worker node in Kubernetes.
// Each node will have a unique identifier in the cache (i.e. in etcd). // Each node will have a unique identifier in the cache (i.e. in etcd).
@ -3586,6 +3613,8 @@ type Node struct {
Status NodeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status NodeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NodeList is the whole list of all Nodes which have been registered with master. // NodeList is the whole list of all Nodes which have been registered with master.
type NodeList struct { type NodeList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3635,6 +3664,7 @@ const (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Namespace provides a scope for Names. // Namespace provides a scope for Names.
// Use of multiple namespaces is optional. // Use of multiple namespaces is optional.
@ -3656,6 +3686,8 @@ type Namespace struct {
Status NamespaceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status NamespaceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NamespaceList is a list of Namespaces. // NamespaceList is a list of Namespaces.
type NamespaceList struct { type NamespaceList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3669,6 +3701,8 @@ type NamespaceList struct {
Items []Namespace `json:"items" protobuf:"bytes,2,rep,name=items"` Items []Namespace `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. // Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
// Deprecated in 1.7, please use the bindings subresource of pods instead. // Deprecated in 1.7, please use the bindings subresource of pods instead.
type Binding struct { type Binding struct {
@ -3704,6 +3738,8 @@ const (
DeletePropagationForeground DeletionPropagation = "Foreground" DeletePropagationForeground DeletionPropagation = "Foreground"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeleteOptions may be provided when deleting an API object // DeleteOptions may be provided when deleting an API object
// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
// +k8s:openapi-gen=false // +k8s:openapi-gen=false
@ -3737,6 +3773,8 @@ type DeleteOptions struct {
PropagationPolicy *DeletionPropagation `protobuf:"bytes,4,opt,name=propagationPolicy,casttype=DeletionPropagation"` PropagationPolicy *DeletionPropagation `protobuf:"bytes,4,opt,name=propagationPolicy,casttype=DeletionPropagation"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ListOptions is the query options to a standard REST list call. // ListOptions is the query options to a standard REST list call.
// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
// +k8s:openapi-gen=false // +k8s:openapi-gen=false
@ -3771,6 +3809,8 @@ type ListOptions struct {
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodLogOptions is the query options for a Pod's logs REST call. // PodLogOptions is the query options for a Pod's logs REST call.
type PodLogOptions struct { type PodLogOptions struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3811,6 +3851,8 @@ type PodLogOptions struct {
LimitBytes *int64 `json:"limitBytes,omitempty" protobuf:"varint,8,opt,name=limitBytes"` LimitBytes *int64 `json:"limitBytes,omitempty" protobuf:"varint,8,opt,name=limitBytes"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodAttachOptions is the query options to a Pod's remote attach call. // PodAttachOptions is the query options to a Pod's remote attach call.
// --- // ---
// TODO: merge w/ PodExecOptions below for stdin, stdout, etc // TODO: merge w/ PodExecOptions below for stdin, stdout, etc
@ -3846,6 +3888,8 @@ type PodAttachOptions struct {
Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodExecOptions is the query options to a Pod's remote exec call. // PodExecOptions is the query options to a Pod's remote exec call.
// --- // ---
// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging // TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
@ -3882,6 +3926,8 @@ type PodExecOptions struct {
Command []string `json:"command" protobuf:"bytes,6,rep,name=command"` Command []string `json:"command" protobuf:"bytes,6,rep,name=command"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPortForwardOptions is the query options to a Pod's port forward call // PodPortForwardOptions is the query options to a Pod's port forward call
// when using WebSockets. // when using WebSockets.
// The `port` query parameter must specify the port or // The `port` query parameter must specify the port or
@ -3897,6 +3943,8 @@ type PodPortForwardOptions struct {
Ports []int32 `json:"ports,omitempty" protobuf:"varint,1,rep,name=ports"` Ports []int32 `json:"ports,omitempty" protobuf:"varint,1,rep,name=ports"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodProxyOptions is the query options to a Pod's proxy call. // PodProxyOptions is the query options to a Pod's proxy call.
type PodProxyOptions struct { type PodProxyOptions struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3906,6 +3954,8 @@ type PodProxyOptions struct {
Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NodeProxyOptions is the query options to a Node's proxy call. // NodeProxyOptions is the query options to a Node's proxy call.
type NodeProxyOptions struct { type NodeProxyOptions struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3915,6 +3965,8 @@ type NodeProxyOptions struct {
Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ServiceProxyOptions is the query options to a Service's proxy call. // ServiceProxyOptions is the query options to a Service's proxy call.
type ServiceProxyOptions struct { type ServiceProxyOptions struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -3929,6 +3981,7 @@ type ServiceProxyOptions struct {
} }
// ObjectReference contains enough information to let you inspect or modify the referred object. // ObjectReference contains enough information to let you inspect or modify the referred object.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ObjectReference struct { type ObjectReference struct {
// Kind of the referent. // Kind of the referent.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
@ -3976,6 +4029,8 @@ type LocalObjectReference struct {
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SerializedReference is a reference to serialized object. // SerializedReference is a reference to serialized object.
type SerializedReference struct { type SerializedReference struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4003,6 +4058,7 @@ const (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Event is a report of an event somewhere in the cluster. // Event is a report of an event somewhere in the cluster.
// TODO: Decide whether to store these separately or with the object they apply to. // TODO: Decide whether to store these separately or with the object they apply to.
@ -4047,6 +4103,8 @@ type Event struct {
Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"` Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EventList is a list of events. // EventList is a list of events.
type EventList struct { type EventList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4059,6 +4117,8 @@ type EventList struct {
Items []Event `json:"items" protobuf:"bytes,2,rep,name=items"` Items []Event `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// List holds a list of objects, which may not be known by the server. // List holds a list of objects, which may not be known by the server.
type List struct { type List struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4112,6 +4172,7 @@ type LimitRangeSpec struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LimitRange sets resource usage limits for each kind of resource in a Namespace. // LimitRange sets resource usage limits for each kind of resource in a Namespace.
type LimitRange struct { type LimitRange struct {
@ -4127,6 +4188,8 @@ type LimitRange struct {
Spec LimitRangeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` Spec LimitRangeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// LimitRangeList is a list of LimitRange items. // LimitRangeList is a list of LimitRange items.
type LimitRangeList struct { type LimitRangeList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4210,6 +4273,7 @@ type ResourceQuotaStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ResourceQuota sets aggregate quota restrictions enforced per namespace // ResourceQuota sets aggregate quota restrictions enforced per namespace
type ResourceQuota struct { type ResourceQuota struct {
@ -4230,6 +4294,8 @@ type ResourceQuota struct {
Status ResourceQuotaStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status ResourceQuotaStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ResourceQuotaList is a list of ResourceQuota items. // ResourceQuotaList is a list of ResourceQuota items.
type ResourceQuotaList struct { type ResourceQuotaList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4244,6 +4310,7 @@ type ResourceQuotaList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Secret holds secret data of a certain type. The total bytes of the values in // Secret holds secret data of a certain type. The total bytes of the values in
// the Data field must be less than MaxSecretSize bytes. // the Data field must be less than MaxSecretSize bytes.
@ -4357,6 +4424,8 @@ const (
TLSPrivateKeyKey = "tls.key" TLSPrivateKeyKey = "tls.key"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SecretList is a list of Secret. // SecretList is a list of Secret.
type SecretList struct { type SecretList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4371,6 +4440,7 @@ type SecretList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ConfigMap holds configuration data for pods to consume. // ConfigMap holds configuration data for pods to consume.
type ConfigMap struct { type ConfigMap struct {
@ -4386,6 +4456,8 @@ type ConfigMap struct {
Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ConfigMapList is a resource containing a list of ConfigMap objects. // ConfigMapList is a resource containing a list of ConfigMap objects.
type ConfigMapList struct { type ConfigMapList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4426,6 +4498,7 @@ type ComponentCondition struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ComponentStatus (and ComponentStatusList) holds the cluster validation info. // ComponentStatus (and ComponentStatusList) holds the cluster validation info.
type ComponentStatus struct { type ComponentStatus struct {
@ -4442,6 +4515,8 @@ type ComponentStatus struct {
Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Status of all the conditions for the component as a list of ComponentStatus objects. // Status of all the conditions for the component as a list of ComponentStatus objects.
type ComponentStatusList struct { type ComponentStatusList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -4556,6 +4631,8 @@ type SELinuxOptions struct {
Level string `json:"level,omitempty" protobuf:"bytes,4,opt,name=level"` Level string `json:"level,omitempty" protobuf:"bytes,4,opt,name=level"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RangeAllocation is not a public type. // RangeAllocation is not a public type.
type RangeAllocation struct { type RangeAllocation struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -52,6 +52,7 @@ type ScaleStatus struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// represents a scaling request for a resource. // represents a scaling request for a resource.
type Scale struct { type Scale struct {
@ -69,6 +70,8 @@ type Scale struct {
Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Dummy definition // Dummy definition
type ReplicationControllerDummy struct { type ReplicationControllerDummy struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -99,6 +102,7 @@ type CustomMetricCurrentStatusList struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource // A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource
// types to the API. It consists of one or more Versions of the api. // types to the API. It consists of one or more Versions of the api.
@ -118,6 +122,8 @@ type ThirdPartyResource struct {
Versions []APIVersion `json:"versions,omitempty" protobuf:"bytes,3,rep,name=versions"` Versions []APIVersion `json:"versions,omitempty" protobuf:"bytes,3,rep,name=versions"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ThirdPartyResourceList is a list of ThirdPartyResources. // ThirdPartyResourceList is a list of ThirdPartyResources.
type ThirdPartyResourceList struct { type ThirdPartyResourceList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -137,6 +143,8 @@ type APIVersion struct {
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// An internal object, used for versioned storage in etcd. Not exposed to the end user. // An internal object, used for versioned storage in etcd. Not exposed to the end user.
type ThirdPartyResourceData struct { type ThirdPartyResourceData struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -150,6 +158,7 @@ type ThirdPartyResourceData struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Deployment enables declarative updates for Pods and ReplicaSets. // Deployment enables declarative updates for Pods and ReplicaSets.
type Deployment struct { type Deployment struct {
@ -216,6 +225,8 @@ type DeploymentSpec struct {
ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeploymentRollback stores the information required to rollback a deployment. // DeploymentRollback stores the information required to rollback a deployment.
type DeploymentRollback struct { type DeploymentRollback struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -367,6 +378,8 @@ type DeploymentCondition struct {
Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeploymentList is a list of Deployments. // DeploymentList is a list of Deployments.
type DeploymentList struct { type DeploymentList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -512,6 +525,7 @@ type DaemonSetStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DaemonSet represents the configuration of a daemon set. // DaemonSet represents the configuration of a daemon set.
type DaemonSet struct { type DaemonSet struct {
@ -548,6 +562,8 @@ const (
DefaultDaemonSetUniqueLabelKey = appsv1beta1.ControllerRevisionHashLabelKey DefaultDaemonSetUniqueLabelKey = appsv1beta1.ControllerRevisionHashLabelKey
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DaemonSetList is a collection of daemon sets. // DaemonSetList is a collection of daemon sets.
type DaemonSetList struct { type DaemonSetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -560,6 +576,8 @@ type DaemonSetList struct {
Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"` Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. // ThirdPartyResrouceDataList is a list of ThirdPartyResourceData.
type ThirdPartyResourceDataList struct { type ThirdPartyResourceDataList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -573,6 +591,7 @@ type ThirdPartyResourceDataList struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Ingress is a collection of rules that allow inbound connections to reach the // Ingress is a collection of rules that allow inbound connections to reach the
// endpoints defined by a backend. An Ingress can be configured to give services // endpoints defined by a backend. An Ingress can be configured to give services
@ -596,6 +615,8 @@ type Ingress struct {
Status IngressStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status IngressStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// IngressList is a collection of Ingress. // IngressList is a collection of Ingress.
type IngressList struct { type IngressList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -739,6 +760,7 @@ type IngressBackend struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicaSet represents the configuration of a ReplicaSet. // ReplicaSet represents the configuration of a ReplicaSet.
type ReplicaSet struct { type ReplicaSet struct {
@ -764,6 +786,8 @@ type ReplicaSet struct {
Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicaSetList is a collection of ReplicaSets. // ReplicaSetList is a collection of ReplicaSets.
type ReplicaSetList struct { type ReplicaSetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -864,6 +888,7 @@ type ReplicaSetCondition struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Pod Security Policy governs the ability to make requests that affect the Security Context // Pod Security Policy governs the ability to make requests that affect the Security Context
// that will be applied to a pod and container. // that will be applied to a pod and container.
@ -1063,6 +1088,8 @@ const (
SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Pod Security Policy List is a list of PodSecurityPolicy objects. // Pod Security Policy List is a list of PodSecurityPolicy objects.
type PodSecurityPolicyList struct { type PodSecurityPolicyList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -1075,6 +1102,8 @@ type PodSecurityPolicyList struct {
Items []PodSecurityPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` Items []PodSecurityPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicy describes what network traffic is allowed for a set of Pods // NetworkPolicy describes what network traffic is allowed for a set of Pods
type NetworkPolicy struct { type NetworkPolicy struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -1158,6 +1187,8 @@ type NetworkPolicyPeer struct {
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Network Policy List is a list of NetworkPolicy objects. // Network Policy List is a list of NetworkPolicy objects.
type NetworkPolicyList struct { type NetworkPolicyList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -23,6 +23,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ImageReview checks if the set of images in a pod are allowed. // ImageReview checks if the set of images in a pod are allowed.
type ImageReview struct { type ImageReview struct {

View File

@ -23,6 +23,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicy describes what network traffic is allowed for a set of Pods // NetworkPolicy describes what network traffic is allowed for a set of Pods
type NetworkPolicy struct { type NetworkPolicy struct {
@ -107,6 +108,8 @@ type NetworkPolicyPeer struct {
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// NetworkPolicyList is a list of NetworkPolicy objects. // NetworkPolicyList is a list of NetworkPolicy objects.
type NetworkPolicyList struct { type NetworkPolicyList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -75,6 +75,7 @@ type PodDisruptionBudgetStatus struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
type PodDisruptionBudget struct { type PodDisruptionBudget struct {
@ -87,6 +88,8 @@ type PodDisruptionBudget struct {
Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. // PodDisruptionBudgetList is a collection of PodDisruptionBudgets.
type PodDisruptionBudgetList struct { type PodDisruptionBudgetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -96,6 +99,7 @@ type PodDisruptionBudgetList struct {
// +genclient=true // +genclient=true
// +noMethods=true // +noMethods=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Eviction evicts a pod from its node subject to certain policies and safety constraints. // Eviction evicts a pod from its node subject to certain policies and safety constraints.
// This is a subresource of Pod. A request to cause such an eviction is // This is a subresource of Pod. A request to cause such an eviction is

View File

@ -100,6 +100,7 @@ type RoleRef struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
type Role struct { type Role struct {
@ -113,6 +114,7 @@ type Role struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. // RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace.
// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given // It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given
@ -131,6 +133,8 @@ type RoleBinding struct {
RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBindingList is a collection of RoleBindings // RoleBindingList is a collection of RoleBindings
type RoleBindingList struct { type RoleBindingList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -142,6 +146,8 @@ type RoleBindingList struct {
Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleList is a collection of Roles // RoleList is a collection of Roles
type RoleList struct { type RoleList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -155,6 +161,7 @@ type RoleList struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
type ClusterRole struct { type ClusterRole struct {
@ -169,6 +176,7 @@ type ClusterRole struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, // ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
// and adds who information via Subject. // and adds who information via Subject.
@ -186,6 +194,8 @@ type ClusterRoleBinding struct {
RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBindingList is a collection of ClusterRoleBindings // ClusterRoleBindingList is a collection of ClusterRoleBindings
type ClusterRoleBindingList struct { type ClusterRoleBindingList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -197,6 +207,8 @@ type ClusterRoleBindingList struct {
Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleList is a collection of ClusterRoles // ClusterRoleList is a collection of ClusterRoles
type ClusterRoleList struct { type ClusterRoleList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -98,6 +98,7 @@ type RoleRef struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
type Role struct { type Role struct {
@ -111,6 +112,7 @@ type Role struct {
} }
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. // RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace.
// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given // It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given
@ -129,6 +131,8 @@ type RoleBinding struct {
RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleBindingList is a collection of RoleBindings // RoleBindingList is a collection of RoleBindings
type RoleBindingList struct { type RoleBindingList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -140,6 +144,8 @@ type RoleBindingList struct {
Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// RoleList is a collection of Roles // RoleList is a collection of Roles
type RoleList struct { type RoleList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -153,6 +159,7 @@ type RoleList struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
type ClusterRole struct { type ClusterRole struct {
@ -167,6 +174,7 @@ type ClusterRole struct {
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, // ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
// and adds who information via Subject. // and adds who information via Subject.
@ -184,6 +192,8 @@ type ClusterRoleBinding struct {
RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleBindingList is a collection of ClusterRoleBindings // ClusterRoleBindingList is a collection of ClusterRoleBindings
type ClusterRoleBindingList struct { type ClusterRoleBindingList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -195,6 +205,8 @@ type ClusterRoleBindingList struct {
Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ClusterRoleList is a collection of ClusterRoles // ClusterRoleList is a collection of ClusterRoles
type ClusterRoleList struct { type ClusterRoleList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
) )
// +genclient=true // +genclient=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPreset is a policy resource that defines additional runtime // PodPreset is a policy resource that defines additional runtime
// requirements for a Pod. // requirements for a Pod.
@ -54,6 +55,8 @@ type PodPresetSpec struct {
VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty" protobuf:"bytes,5,rep,name=volumeMounts"` VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty" protobuf:"bytes,5,rep,name=volumeMounts"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// PodPresetList is a list of PodPreset objects. // PodPresetList is a list of PodPreset objects.
type PodPresetList struct { type PodPresetList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClass describes the parameters for a class of storage for // StorageClass describes the parameters for a class of storage for
// which PersistentVolumes can be dynamically provisioned. // which PersistentVolumes can be dynamically provisioned.
@ -44,6 +45,8 @@ type StorageClass struct {
Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClassList is a collection of storage classes. // StorageClassList is a collection of storage classes.
type StorageClassList struct { type StorageClassList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClass describes the parameters for a class of storage for // StorageClass describes the parameters for a class of storage for
// which PersistentVolumes can be dynamically provisioned. // which PersistentVolumes can be dynamically provisioned.
@ -44,6 +45,8 @@ type StorageClass struct {
Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StorageClassList is a collection of storage classes. // StorageClassList is a collection of storage classes.
type StorageClassList struct { type StorageClassList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -22,6 +22,7 @@ import (
const ExampleResourcePlural = "examples" const ExampleResourcePlural = "examples"
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Example struct { type Example struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata"` metav1.ObjectMeta `json:"metadata"`
@ -46,6 +47,7 @@ const (
ExampleStateProcessed ExampleState = "Processed" ExampleStateProcessed ExampleState = "Processed"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExampleList struct { type ExampleList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"` metav1.ListMeta `json:"metadata"`

View File

@ -115,6 +115,7 @@ const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format // CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format
// <.spec.name>.<.spec.group>. // <.spec.name>.<.spec.group>.
@ -128,6 +129,8 @@ type CustomResourceDefinition struct {
Status CustomResourceDefinitionStatus Status CustomResourceDefinitionStatus
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. // CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
type CustomResourceDefinitionList struct { type CustomResourceDefinitionList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -115,6 +115,7 @@ const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.
// +genclient=true // +genclient=true
// +nonNamespaced=true // +nonNamespaced=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format // CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format
// <.spec.name>.<.spec.group>. // <.spec.name>.<.spec.group>.
@ -128,6 +129,8 @@ type CustomResourceDefinition struct {
Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. // CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
type CustomResourceDefinitionList struct { type CustomResourceDefinitionList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -178,6 +178,13 @@ func Test_reasonForError(t *testing.T) {
type TestType struct{} type TestType struct{}
func (obj *TestType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (obj *TestType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (obj *TestType) DeepCopyObject() runtime.Object {
if obj == nil {
return nil
}
clone := *obj
return &clone
}
func TestFromObject(t *testing.T) { func TestFromObject(t *testing.T) {
table := []struct { table := []struct {

View File

@ -0,0 +1,19 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// +k8s:deepcopy-gen=package
package internalversion

View File

@ -22,6 +22,8 @@ import (
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ListOptions is the query options to a standard REST list call, and has future support for // ListOptions is the query options to a standard REST list call, and has future support for
// watch calls. // watch calls.
type ListOptions struct { type ListOptions struct {

View File

@ -37,11 +37,11 @@ type Time struct {
time.Time `protobuf:"-"` time.Time `protobuf:"-"`
} }
// DeepCopy returns a deep-copy of the Time value. The underlying time.Time // DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time
// type is effectively immutable in the time API, so it is safe to // type is effectively immutable in the time API, so it is safe to
// copy-by-assign, despite the presence of (unexported) Pointer fields. // copy-by-assign, despite the presence of (unexported) Pointer fields.
func (t Time) DeepCopy() Time { func (t *Time) DeepCopyInto(out *Time) {
return t *out = *t
} }
// String returns the representation of the time. // String returns the representation of the time.

View File

@ -35,6 +35,8 @@ import (
// TypeMeta describes an individual object in an API response or request // TypeMeta describes an individual object in an API response or request
// with strings representing the type of the object and its API schema version. // with strings representing the type of the object and its API schema version.
// Structures that are versioned or persisted should inline TypeMeta. // Structures that are versioned or persisted should inline TypeMeta.
//
// +k8s:deepcopy-gen=false
type TypeMeta struct { type TypeMeta struct {
// Kind is a string value representing the REST resource this object represents. // Kind is a string value representing the REST resource this object represents.
// Servers may infer this from the endpoint the client submits requests to. // Servers may infer this from the endpoint the client submits requests to.
@ -298,6 +300,8 @@ type OwnerReference struct {
BlockOwnerDeletion *bool `json:"blockOwnerDeletion,omitempty" protobuf:"varint,7,opt,name=blockOwnerDeletion"` BlockOwnerDeletion *bool `json:"blockOwnerDeletion,omitempty" protobuf:"varint,7,opt,name=blockOwnerDeletion"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ListOptions is the query options to a standard REST list call. // ListOptions is the query options to a standard REST list call.
type ListOptions struct { type ListOptions struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
@ -330,6 +334,8 @@ type ListOptions struct {
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ExportOptions is the query options to the standard REST get call. // ExportOptions is the query options to the standard REST get call.
type ExportOptions struct { type ExportOptions struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
@ -339,6 +345,8 @@ type ExportOptions struct {
Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// GetOptions is the standard query options to the standard REST get call. // GetOptions is the standard query options to the standard REST get call.
type GetOptions struct { type GetOptions struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
@ -370,6 +378,8 @@ const (
DeletePropagationForeground DeletionPropagation = "Foreground" DeletePropagationForeground DeletionPropagation = "Foreground"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// DeleteOptions may be provided when deleting an API object. // DeleteOptions may be provided when deleting an API object.
type DeleteOptions struct { type DeleteOptions struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
@ -408,6 +418,8 @@ type Preconditions struct {
UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Status is a return value for calls that don't return other objects. // Status is a return value for calls that don't return other objects.
type Status struct { type Status struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
@ -660,6 +672,7 @@ const (
// discover the API at /api, which is the root path of the legacy v1 API. // discover the API at /api, which is the root path of the legacy v1 API.
// //
// +protobuf.options.(gogoproto.goproto_stringer)=false // +protobuf.options.(gogoproto.goproto_stringer)=false
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type APIVersions struct { type APIVersions struct {
TypeMeta `json:",inline"` TypeMeta `json:",inline"`
// versions are the api versions that are available. // versions are the api versions that are available.
@ -674,6 +687,8 @@ type APIVersions struct {
ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"` ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// APIGroupList is a list of APIGroup, to allow clients to discover the API at // APIGroupList is a list of APIGroup, to allow clients to discover the API at
// /apis. // /apis.
type APIGroupList struct { type APIGroupList struct {
@ -682,6 +697,8 @@ type APIGroupList struct {
Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"` Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// APIGroup contains the name, the supported versions, and the preferred version // APIGroup contains the name, the supported versions, and the preferred version
// of a group. // of a group.
type APIGroup struct { type APIGroup struct {
@ -754,6 +771,8 @@ func (vs Verbs) String() string {
return fmt.Sprintf("%v", []string(vs)) return fmt.Sprintf("%v", []string(vs))
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// APIResourceList is a list of APIResource, it is used to expose the name of the // APIResourceList is a list of APIResource, it is used to expose the name of the
// resources supported in a specific group and version, and if the resource // resources supported in a specific group and version, and if the resource
// is namespaced. // is namespaced.

View File

@ -43,6 +43,8 @@ import (
// type if you are dealing with objects that are not in the server meta v1 schema. // type if you are dealing with objects that are not in the server meta v1 schema.
// //
// TODO: make the serialization part of this type distinct from the field accessors. // TODO: make the serialization part of this type distinct from the field accessors.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen=true
type Unstructured struct { type Unstructured struct {
// Object is a JSON compatible map with string, float, int, bool, []interface{}, or // Object is a JSON compatible map with string, float, int, bool, []interface{}, or
// map[string]interface{} // map[string]interface{}
@ -143,6 +145,50 @@ func (u *Unstructured) UnmarshalJSON(b []byte) error {
return err return err
} }
func deepCopyJSON(x interface{}) interface{} {
switch x := x.(type) {
case map[string]interface{}:
clone := make(map[string]interface{}, len(x))
for k, v := range x {
clone[k] = deepCopyJSON(v)
}
return clone
case []interface{}:
clone := make([]interface{}, len(x))
for i := range x {
clone[i] = deepCopyJSON(x[i])
}
return clone
default:
// only non-pointer values (float64, int64, bool, string) are left. These can be copied by-value.
return x
}
}
func (in *Unstructured) DeepCopy() *Unstructured {
if in == nil {
return nil
}
out := new(Unstructured)
*out = *in
out.Object = deepCopyJSON(in.Object).(map[string]interface{})
return out
}
func (in *UnstructuredList) DeepCopy() *UnstructuredList {
if in == nil {
return nil
}
out := new(UnstructuredList)
*out = *in
out.Object = deepCopyJSON(in.Object).(map[string]interface{})
out.Items = make([]Unstructured, len(in.Items))
for i := range in.Items {
in.Items[i].DeepCopyInto(&out.Items[i])
}
return out
}
func getNestedField(obj map[string]interface{}, fields ...string) interface{} { func getNestedField(obj map[string]interface{}, fields ...string) interface{} {
var val interface{} = obj var val interface{} = obj
for _, field := range fields { for _, field := range fields {
@ -541,6 +587,8 @@ func (u *Unstructured) SetClusterName(clusterName string) {
// UnstructuredList allows lists that do not have Golang structs // UnstructuredList allows lists that do not have Golang structs
// registered to be manipulated generically. This can be used to deal // registered to be manipulated generically. This can be used to deal
// with the API lists from a plug-in. // with the API lists from a plug-in.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen=true
type UnstructuredList struct { type UnstructuredList struct {
Object map[string]interface{} Object map[string]interface{}

View File

@ -26,6 +26,8 @@ import (
// Event represents a single event to a watched resource. // Event represents a single event to a watched resource.
// //
// +protobuf=true // +protobuf=true
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WatchEvent struct { type WatchEvent struct {
Type string `json:"type" protobuf:"bytes,1,opt,name=type"` Type string `json:"type" protobuf:"bytes,1,opt,name=type"`
@ -78,3 +80,10 @@ type InternalEvent watch.Event
func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (e *WatchEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (e *WatchEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (e *InternalEvent) DeepCopyObject() runtime.Object {
if c := e.DeepCopy(); c != nil {
return c
} else {
return nil
}
}

View File

@ -0,0 +1,61 @@
/*
Copyright 2017 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
func (in *TableRow) DeepCopy() *TableRow {
if in == nil {
return nil
}
out := new(TableRow)
if out.Cells != nil {
out.Cells = make([]interface{}, len(in.Cells))
for i := range in.Cells {
out.Cells[i] = deepCopyJSON(in.Cells[i])
}
}
if out.Conditions != nil {
out.Conditions = make([]TableRowCondition, len(in.Conditions))
for i := range in.Conditions {
in.Conditions[i].DeepCopyInto(&out.Conditions[i])
}
}
in.Object.DeepCopyInto(&out.Object)
return out
}
func deepCopyJSON(x interface{}) interface{} {
switch x := x.(type) {
case map[string]interface{}:
clone := make(map[string]interface{}, len(x))
for k, v := range x {
clone[k] = deepCopyJSON(v)
}
return clone
case []interface{}:
clone := make([]interface{}, len(x))
for i := range x {
clone[i] = deepCopyJSON(x[i])
}
return clone
default:
return x
}
}

View File

@ -28,6 +28,7 @@ import (
// Table is a tabular representation of a set of API resources. The server transforms the // Table is a tabular representation of a set of API resources. The server transforms the
// object into a set of preferred columns for quickly reviewing the objects. // object into a set of preferred columns for quickly reviewing the objects.
// +protobuf=false // +protobuf=false
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Table struct { type Table struct {
v1.TypeMeta `json:",inline"` v1.TypeMeta `json:",inline"`
// Standard list metadata. // Standard list metadata.
@ -129,6 +130,7 @@ const (
) )
// TableOptions are used when a Table is requested by the caller. // TableOptions are used when a Table is requested by the caller.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TableOptions struct { type TableOptions struct {
v1.TypeMeta `json:",inline"` v1.TypeMeta `json:",inline"`
// includeObject decides whether to include each object along with its columnar information. // includeObject decides whether to include each object along with its columnar information.
@ -140,6 +142,7 @@ type TableOptions struct {
// PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients // PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients
// to get access to a particular ObjectMeta schema without knowing the details of the version. // to get access to a particular ObjectMeta schema without knowing the details of the version.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type PartialObjectMetadata struct { type PartialObjectMetadata struct {
v1.TypeMeta `json:",inline"` v1.TypeMeta `json:",inline"`
// Standard object's metadata. // Standard object's metadata.
@ -149,6 +152,7 @@ type PartialObjectMetadata struct {
} }
// PartialObjectMetadataList contains a list of objects containing only their metadata // PartialObjectMetadataList contains a list of objects containing only their metadata
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type PartialObjectMetadataList struct { type PartialObjectMetadataList struct {
v1.TypeMeta `json:",inline"` v1.TypeMeta `json:",inline"`

View File

@ -27,6 +27,8 @@ type (
RestartPolicy string RestartPolicy string
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Carp is a collection of containers, used as either input (create, update) or as output (list, get). // Carp is a collection of containers, used as either input (create, update) or as output (list, get).
type Carp struct { type Carp struct {
metav1.TypeMeta metav1.TypeMeta
@ -124,6 +126,8 @@ type CarpSpec struct {
SchedulerName string SchedulerName string
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CarpList is a list of Carps. // CarpList is a list of Carps.
type CarpList struct { type CarpList struct {
metav1.TypeMeta metav1.TypeMeta

View File

@ -27,6 +27,8 @@ type (
RestartPolicy string RestartPolicy string
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Carp is a collection of containers, used as either input (create, update) or as output (list, get). // Carp is a collection of containers, used as either input (create, update) or as output (list, get).
type Carp struct { type Carp struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
@ -178,6 +180,8 @@ type CarpSpec struct {
SchedulerName string `json:"schedulername,omitempty" protobuf:"bytes,19,opt,name=schedulername"` SchedulerName string `json:"schedulername,omitempty" protobuf:"bytes,19,opt,name=schedulername"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CarpList is a list of Carps. // CarpList is a list of Carps.
type CarpList struct { type CarpList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`

View File

@ -50,6 +50,9 @@ type Selector interface {
// String returns a human readable string that represents this selector. // String returns a human readable string that represents this selector.
String() string String() string
// Make a deep copy of the selector.
DeepCopySelector() Selector
} }
// Everything returns a selector that matches all fields. // Everything returns a selector that matches all fields.
@ -99,6 +102,15 @@ func (t *hasTerm) String() string {
return fmt.Sprintf("%v=%v", t.field, EscapeValue(t.value)) return fmt.Sprintf("%v=%v", t.field, EscapeValue(t.value))
} }
func (t *hasTerm) DeepCopySelector() Selector {
if t == nil {
return nil
}
out := new(hasTerm)
*out = *t
return out
}
type notHasTerm struct { type notHasTerm struct {
field, value string field, value string
} }
@ -138,6 +150,15 @@ func (t *notHasTerm) String() string {
return fmt.Sprintf("%v!=%v", t.field, EscapeValue(t.value)) return fmt.Sprintf("%v!=%v", t.field, EscapeValue(t.value))
} }
func (t *notHasTerm) DeepCopySelector() Selector {
if t == nil {
return nil
}
out := new(notHasTerm)
*out = *t
return out
}
type andTerm []Selector type andTerm []Selector
func (t andTerm) Matches(ls Fields) bool { func (t andTerm) Matches(ls Fields) bool {
@ -207,6 +228,17 @@ func (t andTerm) String() string {
return strings.Join(terms, ",") return strings.Join(terms, ",")
} }
func (t andTerm) DeepCopySelector() Selector {
if t == nil {
return nil
}
out := make([]Selector, len(t))
for i := range t {
out[i] = t[i].DeepCopySelector()
}
return andTerm(out)
}
// SelectorFromSet returns a Selector which will match exactly the given Set. A // SelectorFromSet returns a Selector which will match exactly the given Set. A
// nil Set is considered equivalent to Everything(). // nil Set is considered equivalent to Everything().
func SelectorFromSet(ls Set) Selector { func SelectorFromSet(ls Set) Selector {

View File

@ -51,6 +51,9 @@ type Selector interface {
// If there are querying parameters, it will return converted requirements and selectable=true. // If there are querying parameters, it will return converted requirements and selectable=true.
// If this selector doesn't want to select anything, it will return selectable=false. // If this selector doesn't want to select anything, it will return selectable=false.
Requirements() (requirements Requirements, selectable bool) Requirements() (requirements Requirements, selectable bool)
// Make a deep copy of the selector.
DeepCopySelector() Selector
} }
// Everything returns a selector that matches all labels. // Everything returns a selector that matches all labels.
@ -65,6 +68,7 @@ func (n nothingSelector) Empty() bool { return false }
func (n nothingSelector) String() string { return "" } func (n nothingSelector) String() string { return "" }
func (n nothingSelector) Add(_ ...Requirement) Selector { return n } func (n nothingSelector) Add(_ ...Requirement) Selector { return n }
func (n nothingSelector) Requirements() (Requirements, bool) { return nil, false } func (n nothingSelector) Requirements() (Requirements, bool) { return nil, false }
func (n nothingSelector) DeepCopySelector() Selector { return n }
// Nothing returns a selector that matches no labels // Nothing returns a selector that matches no labels
func Nothing() Selector { func Nothing() Selector {
@ -78,6 +82,21 @@ func NewSelector() Selector {
type internalSelector []Requirement type internalSelector []Requirement
func (s internalSelector) DeepCopy() internalSelector {
if s == nil {
return nil
}
result := make([]Requirement, len(s))
for i := range s {
s[i].DeepCopyInto(&result[i])
}
return result
}
func (s internalSelector) DeepCopySelector() Selector {
return s.DeepCopy()
}
// ByKey sorts requirements by key to obtain deterministic parser // ByKey sorts requirements by key to obtain deterministic parser
type ByKey []Requirement type ByKey []Requirement
@ -91,6 +110,7 @@ func (a ByKey) Less(i, j int) bool { return a[i].key < a[j].key }
// The zero value of Requirement is invalid. // The zero value of Requirement is invalid.
// Requirement implements both set based match and exact match // Requirement implements both set based match and exact match
// Requirement should be initialized via NewRequirement constructor for creating a valid Requirement. // Requirement should be initialized via NewRequirement constructor for creating a valid Requirement.
// +k8s:deepcopy-gen=true
type Requirement struct { type Requirement struct {
key string key string
operator selection.Operator operator selection.Operator

View File

@ -30,6 +30,12 @@ type encodable struct {
} }
func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() } func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() }
func (e encodable) DeepCopyObject() Object {
var out encodable = e
out.obj = e.obj.DeepCopyObject()
copy(out.versions, e.versions)
return out
}
// NewEncodable creates an object that will be encoded with the provided codec on demand. // NewEncodable creates an object that will be encoded with the provided codec on demand.
// Provided as a convenience for test cases dealing with internal objects. // Provided as a convenience for test cases dealing with internal objects.

View File

@ -234,6 +234,7 @@ type SelfLinker interface {
// to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. // to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized.
type Object interface { type Object interface {
GetObjectKind() schema.ObjectKind GetObjectKind() schema.ObjectKind
DeepCopyObject() Object
} }
// Unstructured objects store values as map[string]interface{}, with only values that can be serialized // Unstructured objects store values as map[string]interface{}, with only values that can be serialized

View File

@ -37,6 +37,9 @@ type testDecodable struct {
func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d }
func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk }
func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk }
func (d *testDecodable) DeepCopyObject() runtime.Object {
panic("testDecodable does not support DeepCopy")
}
func TestDecode(t *testing.T) { func TestDecode(t *testing.T) {
testCases := []struct { testCases := []struct {

View File

@ -28,6 +28,9 @@ import (
type A struct{} type A struct{}
func (A) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (A) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
func (a A) DeepCopyObject() runtime.Object {
return a
}
func TestRecognizer(t *testing.T) { func TestRecognizer(t *testing.T) {
s := runtime.NewScheme() s := runtime.NewScheme()

View File

@ -30,6 +30,7 @@ type MyWeirdCustomEmbeddedVersionKindField struct {
Y uint64 `json:"Y,omitempty"` Y uint64 `json:"Y,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType1 struct { type TestType1 struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
@ -50,16 +51,19 @@ type TestType1 struct {
P []TestType2 `json:"Q,omitempty"` P []TestType2 `json:"Q,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType2 struct { type TestType2 struct {
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
B int `json:"B,omitempty"` B int `json:"B,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalTestType2 struct { type ExternalTestType2 struct {
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
B int `json:"B,omitempty"` B int `json:"B,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalTestType1 struct { type ExternalTestType1 struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
@ -80,6 +84,7 @@ type ExternalTestType1 struct {
P []ExternalTestType2 `json:"Q,omitempty"` P []ExternalTestType2 `json:"Q,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalInternalSame struct { type ExternalInternalSame struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A TestType2 `json:"A,omitempty"` A TestType2 `json:"A,omitempty"`

View File

@ -37,6 +37,13 @@ type testDecodable struct {
func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d }
func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk }
func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk }
func (d *testDecodable) DeepCopyObject() runtime.Object {
if d == nil {
return nil
}
clone := *d
return &clone
}
type testNestedDecodable struct { type testNestedDecodable struct {
Other string Other string
@ -50,6 +57,13 @@ type testNestedDecodable struct {
func (d *testNestedDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testNestedDecodable) GetObjectKind() schema.ObjectKind { return d }
func (d *testNestedDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testNestedDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk }
func (d *testNestedDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } func (d *testNestedDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk }
func (d *testNestedDecodable) DeepCopyObject() runtime.Object {
if d == nil {
return nil
}
clone := *d
return &clone
}
func (d *testNestedDecodable) EncodeNestedObjects(e runtime.Encoder) error { func (d *testNestedDecodable) EncodeNestedObjects(e runtime.Encoder) error {
d.nestedCalled = true d.nestedCalled = true

View File

@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
) )
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EmbeddedTest struct { type EmbeddedTest struct {
runtime.TypeMeta runtime.TypeMeta
ID string ID string
@ -28,6 +29,7 @@ type EmbeddedTest struct {
EmptyObject runtime.Object EmptyObject runtime.Object
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EmbeddedTestExternal struct { type EmbeddedTestExternal struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
ID string `json:"id,omitempty"` ID string `json:"id,omitempty"`
@ -35,6 +37,7 @@ type EmbeddedTestExternal struct {
EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"` EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ObjectTest struct { type ObjectTest struct {
runtime.TypeMeta runtime.TypeMeta
@ -42,6 +45,7 @@ type ObjectTest struct {
Items []runtime.Object Items []runtime.Object
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ObjectTestExternal struct { type ObjectTestExternal struct {
runtime.TypeMeta `yaml:",inline" json:",inline"` runtime.TypeMeta `yaml:",inline" json:",inline"`
@ -49,46 +53,55 @@ type ObjectTestExternal struct {
Items []runtime.RawExtension `json:"items,omitempty"` Items []runtime.RawExtension `json:"items,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalSimple struct { type InternalSimple struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
TestString string `json:"testString"` TestString string `json:"testString"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalSimple struct { type ExternalSimple struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
TestString string `json:"testString"` TestString string `json:"testString"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExtensionA struct { type ExtensionA struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
TestString string `json:"testString"` TestString string `json:"testString"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExtensionB struct { type ExtensionB struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
TestString string `json:"testString"` TestString string `json:"testString"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalExtensionType struct { type ExternalExtensionType struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
Extension runtime.RawExtension `json:"extension"` Extension runtime.RawExtension `json:"extension"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalExtensionType struct { type InternalExtensionType struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
Extension runtime.Object `json:"extension"` Extension runtime.Object `json:"extension"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalOptionalExtensionType struct { type ExternalOptionalExtensionType struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
Extension runtime.RawExtension `json:"extension,omitempty"` Extension runtime.RawExtension `json:"extension,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalOptionalExtensionType struct { type InternalOptionalExtensionType struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
Extension runtime.Object `json:"extension,omitempty"` Extension runtime.Object `json:"extension,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type InternalComplex struct { type InternalComplex struct {
runtime.TypeMeta runtime.TypeMeta
String string String string
@ -98,6 +111,7 @@ type InternalComplex struct {
Bool bool Bool bool
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalComplex struct { type ExternalComplex struct {
runtime.TypeMeta `json:",inline"` runtime.TypeMeta `json:",inline"`
String string `json:"string" description:"testing"` String string `json:"string" description:"testing"`
@ -117,6 +131,7 @@ type MyWeirdCustomEmbeddedVersionKindField struct {
Y uint64 `json:"Y,omitempty"` Y uint64 `json:"Y,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType1 struct { type TestType1 struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
@ -137,16 +152,19 @@ type TestType1 struct {
P []TestType2 `json:"Q,omitempty"` P []TestType2 `json:"Q,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TestType2 struct { type TestType2 struct {
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
B int `json:"B,omitempty"` B int `json:"B,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalTestType2 struct { type ExternalTestType2 struct {
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
B int `json:"B,omitempty"` B int `json:"B,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalTestType1 struct { type ExternalTestType1 struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
@ -167,16 +185,19 @@ type ExternalTestType1 struct {
P []ExternalTestType2 `json:"Q,omitempty"` P []ExternalTestType2 `json:"Q,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ExternalInternalSame struct { type ExternalInternalSame struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A TestType2 `json:"A,omitempty"` A TestType2 `json:"A,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type UnversionedType struct { type UnversionedType struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type UnknownType struct { type UnknownType struct {
MyWeirdCustomEmbeddedVersionKindField `json:",inline"` MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
A string `json:"A,omitempty"` A string `json:"A,omitempty"`

View File

@ -30,7 +30,7 @@ package runtime
// TypeMeta is provided here for convenience. You may use it directly from this package or define // TypeMeta is provided here for convenience. You may use it directly from this package or define
// your own with the same fields. // your own with the same fields.
// //
// +k8s:deepcopy-gen=true // +k8s:deepcopy-gen=false
// +protobuf=true // +protobuf=true
// +k8s:openapi-gen=true // +k8s:openapi-gen=true
type TypeMeta struct { type TypeMeta struct {
@ -106,6 +106,7 @@ type RawExtension struct {
// metadata and field mutatation. // metadata and field mutatation.
// //
// +k8s:deepcopy-gen=true // +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +protobuf=true // +protobuf=true
// +k8s:openapi-gen=true // +k8s:openapi-gen=true
type Unknown struct { type Unknown struct {
@ -124,6 +125,9 @@ type Unknown struct {
// VersionedObjects is used by Decoders to give callers a way to access all versions // VersionedObjects is used by Decoders to give callers a way to access all versions
// of an object during the decoding process. // of an object during the decoding process.
//
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen=true
type VersionedObjects struct { type VersionedObjects struct {
// Objects is the set of objects retrieved during decoding, in order of conversion. // Objects is the set of objects retrieved during decoding, in order of conversion.
// The 0 index is the object as serialized on the wire. If conversion has occurred, // The 0 index is the object as serialized on the wire. If conversion has occurred,

View File

@ -207,6 +207,9 @@ type fakePtrInterfaceList struct {
func (obj fakePtrInterfaceList) GetObjectKind() schema.ObjectKind { func (obj fakePtrInterfaceList) GetObjectKind() schema.ObjectKind {
return schema.EmptyObjectKind return schema.EmptyObjectKind
} }
func (obj fakePtrInterfaceList) DeepCopyObject() runtime.Object {
panic("fakePtrInterfaceList does not support DeepCopy")
}
func TestExtractListOfInterfacePtrs(t *testing.T) { func TestExtractListOfInterfacePtrs(t *testing.T) {
pl := &fakePtrInterfaceList{ pl := &fakePtrInterfaceList{
@ -228,6 +231,18 @@ type fakePtrValueList struct {
func (obj fakePtrValueList) GetObjectKind() schema.ObjectKind { func (obj fakePtrValueList) GetObjectKind() schema.ObjectKind {
return schema.EmptyObjectKind return schema.EmptyObjectKind
} }
func (obj *fakePtrValueList) DeepCopyObject() runtime.Object {
if obj == nil {
return nil
}
clone := fakePtrValueList{
Items: make([]*testapigroup.Carp, len(obj.Items)),
}
for i, carp := range obj.Items {
clone.Items[i] = carp.DeepCopy()
}
return &clone
}
func TestSetList(t *testing.T) { func TestSetList(t *testing.T) {
pl := &testapigroup.CarpList{} pl := &testapigroup.CarpList{}

Some files were not shown because too many files have changed in this diff Show More