code-generator/client-gen: add example with single package api/v1
Signed-off-by: Dr. Stefan Schimanski <stefan.schimanski@gmail.com>
This commit is contained in:
		| @@ -60,6 +60,15 @@ kube::codegen::gen_client \ | ||||
|     --boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \ | ||||
|     "${SCRIPT_ROOT}/crd/apis" | ||||
|  | ||||
| kube::codegen::gen_client \ | ||||
|     --with-watch \ | ||||
|     --with-applyconfig \ | ||||
|     --output-dir "${SCRIPT_ROOT}/single" \ | ||||
|     --output-pkg "${THIS_PKG}/single" \ | ||||
|     --boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \ | ||||
|     --one-input-api "api" \ | ||||
|     "${SCRIPT_ROOT}/single" | ||||
|  | ||||
| kube::codegen::gen_client \ | ||||
|     --with-watch \ | ||||
|     --with-applyconfig \ | ||||
|   | ||||
| @@ -47,6 +47,7 @@ fi | ||||
| echo "Smoke testing examples by compiling..." | ||||
| pushd "${SCRIPT_ROOT}" | ||||
|   go build "k8s.io/code-generator/examples/crd/..." | ||||
|   go build "k8s.io/code-generator/examples/single/..." | ||||
|   go build "k8s.io/code-generator/examples/apiserver/..." | ||||
|   go build "k8s.io/code-generator/examples/MixedCase/..." | ||||
|   go build "k8s.io/code-generator/examples/HyphenGroup/..." | ||||
|   | ||||
| @@ -0,0 +1,21 @@ | ||||
| /* | ||||
| 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 | ||||
| // +k8s:defaulter-gen=TypeMeta | ||||
| // +groupName=example.crd.code-generator.k8s.io | ||||
|  | ||||
| package v1 // import "k8s.io/code-generator/examples/crd/apis/example/v1" | ||||
| @@ -0,0 +1,59 @@ | ||||
| /* | ||||
| Copyright 2015 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 v1 | ||||
|  | ||||
| import ( | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	"k8s.io/apimachinery/pkg/runtime" | ||||
| 	"k8s.io/apimachinery/pkg/runtime/schema" | ||||
| ) | ||||
|  | ||||
| var SchemeGroupVersion = schema.GroupVersion{Group: "example.crd.code-generator.k8s.io", Version: "v1"} | ||||
|  | ||||
| var ( | ||||
| 	// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. | ||||
| 	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. | ||||
| 	SchemeBuilder      runtime.SchemeBuilder | ||||
| 	localSchemeBuilder = &SchemeBuilder | ||||
| 	AddToScheme        = localSchemeBuilder.AddToScheme | ||||
| ) | ||||
|  | ||||
| func init() { | ||||
| 	// We only register manually written functions here. The registration of the | ||||
| 	// generated functions takes place in the generated files. The separation | ||||
| 	// makes the code compile even when the generated files are missing. | ||||
| 	localSchemeBuilder.Register(addKnownTypes) | ||||
| } | ||||
|  | ||||
| // Resource takes an unqualified resource and returns a Group qualified GroupResource | ||||
| func Resource(resource string) schema.GroupResource { | ||||
| 	return SchemeGroupVersion.WithResource(resource).GroupResource() | ||||
| } | ||||
|  | ||||
| // Adds the list of known types to the given scheme. | ||||
| func addKnownTypes(scheme *runtime.Scheme) error { | ||||
| 	scheme.AddKnownTypes(SchemeGroupVersion, | ||||
| 		&TestType{}, | ||||
| 		&TestTypeList{}, | ||||
| 	) | ||||
|  | ||||
| 	scheme.AddKnownTypes(SchemeGroupVersion, | ||||
| 		&metav1.Status{}, | ||||
| 	) | ||||
| 	metav1.AddToGroupVersion(scheme, SchemeGroupVersion) | ||||
| 	return nil | ||||
| } | ||||
| @@ -0,0 +1,74 @@ | ||||
| /* | ||||
| Copyright 2015 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 v1 | ||||
|  | ||||
| import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
|  | ||||
| // +genclient | ||||
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||||
|  | ||||
| // TestType is a top-level type. A client is created for it. | ||||
| type TestType struct { | ||||
| 	metav1.TypeMeta `json:",inline"` | ||||
| 	// +optional | ||||
| 	metav1.ObjectMeta `json:"metadata,omitempty"` | ||||
| 	// +optional | ||||
| 	Status TestTypeStatus `json:"status,omitempty"` | ||||
| } | ||||
|  | ||||
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||||
|  | ||||
| // TestTypeList is a top-level list type. The client methods for lists are automatically created. | ||||
| // You are not supposed to create a separated client for this one. | ||||
| type TestTypeList struct { | ||||
| 	metav1.TypeMeta `json:",inline"` | ||||
| 	// +optional | ||||
| 	metav1.ListMeta `json:"metadata,omitempty"` | ||||
|  | ||||
| 	Items []TestType `json:"items"` | ||||
| } | ||||
|  | ||||
| type TestTypeStatus struct { | ||||
| 	Blah string | ||||
| } | ||||
|  | ||||
| // +genclient:nonNamespaced | ||||
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||||
|  | ||||
| type ClusterTestTypeList struct { | ||||
| 	metav1.TypeMeta | ||||
| 	metav1.ListMeta | ||||
| 	Items []ClusterTestType | ||||
| } | ||||
|  | ||||
| // +genclient | ||||
| // +genclient:nonNamespaced | ||||
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||||
| // +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale | ||||
| // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale | ||||
|  | ||||
| type ClusterTestType struct { | ||||
| 	metav1.TypeMeta `json:",inline"` | ||||
| 	// +optional | ||||
| 	metav1.ObjectMeta `json:"metadata,omitempty"` | ||||
| 	// +optional | ||||
| 	Status ClusterTestTypeStatus `json:"status,omitempty"` | ||||
| } | ||||
|  | ||||
| type ClusterTestTypeStatus struct { | ||||
| 	Blah string | ||||
| } | ||||
							
								
								
									
										178
									
								
								staging/src/k8s.io/code-generator/examples/single/api/v1/zz_generated.deepcopy.go
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								staging/src/k8s.io/code-generator/examples/single/api/v1/zz_generated.deepcopy.go
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,178 @@ | ||||
| //go:build !ignore_autogenerated | ||||
| // +build !ignore_autogenerated | ||||
|  | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by deepcopy-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| ) | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *ClusterTestType) DeepCopyInto(out *ClusterTestType) { | ||||
| 	*out = *in | ||||
| 	out.TypeMeta = in.TypeMeta | ||||
| 	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) | ||||
| 	out.Status = in.Status | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTestType. | ||||
| func (in *ClusterTestType) DeepCopy() *ClusterTestType { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(ClusterTestType) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | ||||
| func (in *ClusterTestType) DeepCopyObject() runtime.Object { | ||||
| 	if c := in.DeepCopy(); c != nil { | ||||
| 		return c | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *ClusterTestTypeList) DeepCopyInto(out *ClusterTestTypeList) { | ||||
| 	*out = *in | ||||
| 	out.TypeMeta = in.TypeMeta | ||||
| 	in.ListMeta.DeepCopyInto(&out.ListMeta) | ||||
| 	if in.Items != nil { | ||||
| 		in, out := &in.Items, &out.Items | ||||
| 		*out = make([]ClusterTestType, len(*in)) | ||||
| 		for i := range *in { | ||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTestTypeList. | ||||
| func (in *ClusterTestTypeList) DeepCopy() *ClusterTestTypeList { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(ClusterTestTypeList) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | ||||
| func (in *ClusterTestTypeList) DeepCopyObject() runtime.Object { | ||||
| 	if c := in.DeepCopy(); c != nil { | ||||
| 		return c | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *ClusterTestTypeStatus) DeepCopyInto(out *ClusterTestTypeStatus) { | ||||
| 	*out = *in | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTestTypeStatus. | ||||
| func (in *ClusterTestTypeStatus) DeepCopy() *ClusterTestTypeStatus { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(ClusterTestTypeStatus) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *TestType) DeepCopyInto(out *TestType) { | ||||
| 	*out = *in | ||||
| 	out.TypeMeta = in.TypeMeta | ||||
| 	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) | ||||
| 	out.Status = in.Status | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestType. | ||||
| func (in *TestType) DeepCopy() *TestType { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(TestType) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | ||||
| func (in *TestType) DeepCopyObject() runtime.Object { | ||||
| 	if c := in.DeepCopy(); c != nil { | ||||
| 		return c | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *TestTypeList) DeepCopyInto(out *TestTypeList) { | ||||
| 	*out = *in | ||||
| 	out.TypeMeta = in.TypeMeta | ||||
| 	in.ListMeta.DeepCopyInto(&out.ListMeta) | ||||
| 	if in.Items != nil { | ||||
| 		in, out := &in.Items, &out.Items | ||||
| 		*out = make([]TestType, len(*in)) | ||||
| 		for i := range *in { | ||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestTypeList. | ||||
| func (in *TestTypeList) DeepCopy() *TestTypeList { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(TestTypeList) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | ||||
| func (in *TestTypeList) DeepCopyObject() runtime.Object { | ||||
| 	if c := in.DeepCopy(); c != nil { | ||||
| 		return c | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||
| func (in *TestTypeStatus) DeepCopyInto(out *TestTypeStatus) { | ||||
| 	*out = *in | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestTypeStatus. | ||||
| func (in *TestTypeStatus) DeepCopy() *TestTypeStatus { | ||||
| 	if in == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	out := new(TestTypeStatus) | ||||
| 	in.DeepCopyInto(out) | ||||
| 	return out | ||||
| } | ||||
							
								
								
									
										33
									
								
								staging/src/k8s.io/code-generator/examples/single/api/v1/zz_generated.defaults.go
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								staging/src/k8s.io/code-generator/examples/single/api/v1/zz_generated.defaults.go
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| //go:build !ignore_autogenerated | ||||
| // +build !ignore_autogenerated | ||||
|  | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by defaulter-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| ) | ||||
|  | ||||
| // RegisterDefaults adds defaulters functions to the given scheme. | ||||
| // Public to allow building arbitrary schemes. | ||||
| // All generated defaulters are covering - they call all nested defaulters. | ||||
| func RegisterDefaults(scheme *runtime.Scheme) error { | ||||
| 	return nil | ||||
| } | ||||
| @@ -0,0 +1,210 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by applyconfiguration-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	v1 "k8s.io/client-go/applyconfigurations/meta/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| // ClusterTestTypeApplyConfiguration represents an declarative configuration of the ClusterTestType type for use | ||||
| // with apply. | ||||
| type ClusterTestTypeApplyConfiguration struct { | ||||
| 	v1.TypeMetaApplyConfiguration    `json:",inline"` | ||||
| 	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"` | ||||
| 	Status                           *apiv1.ClusterTestTypeStatus `json:"status,omitempty"` | ||||
| } | ||||
|  | ||||
| // ClusterTestType constructs an declarative configuration of the ClusterTestType type for use with | ||||
| // apply. | ||||
| func ClusterTestType(name string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b := &ClusterTestTypeApplyConfiguration{} | ||||
| 	b.WithName(name) | ||||
| 	b.WithKind("ClusterTestType") | ||||
| 	b.WithAPIVersion("example.crd.code-generator.k8s.io/v1") | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithKind sets the Kind field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Kind field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithKind(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.Kind = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithAPIVersion sets the APIVersion field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the APIVersion field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithAPIVersion(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.APIVersion = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithName sets the Name field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Name field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithName(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Name = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithGenerateName sets the GenerateName field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the GenerateName field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithGenerateName(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.GenerateName = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithNamespace sets the Namespace field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Namespace field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithNamespace(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Namespace = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithUID sets the UID field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the UID field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithUID(value types.UID) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.UID = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the ResourceVersion field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithResourceVersion(value string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.ResourceVersion = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithGeneration sets the Generation field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Generation field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithGeneration(value int64) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Generation = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the CreationTimestamp field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.CreationTimestamp = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the DeletionTimestamp field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.DeletionTimestamp = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.DeletionGracePeriodSeconds = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithLabels puts the entries into the Labels field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, the entries provided by each call will be put on the Labels field, | ||||
| // overwriting an existing map entries in Labels field with the same key. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithLabels(entries map[string]string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	if b.Labels == nil && len(entries) > 0 { | ||||
| 		b.Labels = make(map[string]string, len(entries)) | ||||
| 	} | ||||
| 	for k, v := range entries { | ||||
| 		b.Labels[k] = v | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithAnnotations puts the entries into the Annotations field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, the entries provided by each call will be put on the Annotations field, | ||||
| // overwriting an existing map entries in Annotations field with the same key. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	if b.Annotations == nil && len(entries) > 0 { | ||||
| 		b.Annotations = make(map[string]string, len(entries)) | ||||
| 	} | ||||
| 	for k, v := range entries { | ||||
| 		b.Annotations[k] = v | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, values provided by each call will be appended to the OwnerReferences field. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	for i := range values { | ||||
| 		if values[i] == nil { | ||||
| 			panic("nil value passed to WithOwnerReferences") | ||||
| 		} | ||||
| 		b.OwnerReferences = append(b.OwnerReferences, *values[i]) | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithFinalizers adds the given value to the Finalizers field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, values provided by each call will be appended to the Finalizers field. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithFinalizers(values ...string) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	for i := range values { | ||||
| 		b.Finalizers = append(b.Finalizers, values[i]) | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| func (b *ClusterTestTypeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() { | ||||
| 	if b.ObjectMetaApplyConfiguration == nil { | ||||
| 		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithStatus sets the Status field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Status field is set to the value of the last call. | ||||
| func (b *ClusterTestTypeApplyConfiguration) WithStatus(value apiv1.ClusterTestTypeStatus) *ClusterTestTypeApplyConfiguration { | ||||
| 	b.Status = &value | ||||
| 	return b | ||||
| } | ||||
| @@ -0,0 +1,211 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by applyconfiguration-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	v1 "k8s.io/client-go/applyconfigurations/meta/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| // TestTypeApplyConfiguration represents an declarative configuration of the TestType type for use | ||||
| // with apply. | ||||
| type TestTypeApplyConfiguration struct { | ||||
| 	v1.TypeMetaApplyConfiguration    `json:",inline"` | ||||
| 	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"` | ||||
| 	Status                           *apiv1.TestTypeStatus `json:"status,omitempty"` | ||||
| } | ||||
|  | ||||
| // TestType constructs an declarative configuration of the TestType type for use with | ||||
| // apply. | ||||
| func TestType(name, namespace string) *TestTypeApplyConfiguration { | ||||
| 	b := &TestTypeApplyConfiguration{} | ||||
| 	b.WithName(name) | ||||
| 	b.WithNamespace(namespace) | ||||
| 	b.WithKind("TestType") | ||||
| 	b.WithAPIVersion("example.crd.code-generator.k8s.io/v1") | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithKind sets the Kind field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Kind field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithKind(value string) *TestTypeApplyConfiguration { | ||||
| 	b.Kind = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithAPIVersion sets the APIVersion field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the APIVersion field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithAPIVersion(value string) *TestTypeApplyConfiguration { | ||||
| 	b.APIVersion = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithName sets the Name field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Name field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithName(value string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Name = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithGenerateName sets the GenerateName field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the GenerateName field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithGenerateName(value string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.GenerateName = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithNamespace sets the Namespace field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Namespace field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithNamespace(value string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Namespace = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithUID sets the UID field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the UID field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithUID(value types.UID) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.UID = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the ResourceVersion field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithResourceVersion(value string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.ResourceVersion = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithGeneration sets the Generation field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Generation field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithGeneration(value int64) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.Generation = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the CreationTimestamp field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.CreationTimestamp = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the DeletionTimestamp field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.DeletionTimestamp = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	b.DeletionGracePeriodSeconds = &value | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithLabels puts the entries into the Labels field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, the entries provided by each call will be put on the Labels field, | ||||
| // overwriting an existing map entries in Labels field with the same key. | ||||
| func (b *TestTypeApplyConfiguration) WithLabels(entries map[string]string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	if b.Labels == nil && len(entries) > 0 { | ||||
| 		b.Labels = make(map[string]string, len(entries)) | ||||
| 	} | ||||
| 	for k, v := range entries { | ||||
| 		b.Labels[k] = v | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithAnnotations puts the entries into the Annotations field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, the entries provided by each call will be put on the Annotations field, | ||||
| // overwriting an existing map entries in Annotations field with the same key. | ||||
| func (b *TestTypeApplyConfiguration) WithAnnotations(entries map[string]string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	if b.Annotations == nil && len(entries) > 0 { | ||||
| 		b.Annotations = make(map[string]string, len(entries)) | ||||
| 	} | ||||
| 	for k, v := range entries { | ||||
| 		b.Annotations[k] = v | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, values provided by each call will be appended to the OwnerReferences field. | ||||
| func (b *TestTypeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	for i := range values { | ||||
| 		if values[i] == nil { | ||||
| 			panic("nil value passed to WithOwnerReferences") | ||||
| 		} | ||||
| 		b.OwnerReferences = append(b.OwnerReferences, *values[i]) | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // WithFinalizers adds the given value to the Finalizers field in the declarative configuration | ||||
| // and returns the receiver, so that objects can be build by chaining "With" function invocations. | ||||
| // If called multiple times, values provided by each call will be appended to the Finalizers field. | ||||
| func (b *TestTypeApplyConfiguration) WithFinalizers(values ...string) *TestTypeApplyConfiguration { | ||||
| 	b.ensureObjectMetaApplyConfigurationExists() | ||||
| 	for i := range values { | ||||
| 		b.Finalizers = append(b.Finalizers, values[i]) | ||||
| 	} | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| func (b *TestTypeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() { | ||||
| 	if b.ObjectMetaApplyConfiguration == nil { | ||||
| 		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithStatus sets the Status field in the declarative configuration to the given value | ||||
| // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||
| // If called multiple times, the Status field is set to the value of the last call. | ||||
| func (b *TestTypeApplyConfiguration) WithStatus(value apiv1.TestTypeStatus) *TestTypeApplyConfiguration { | ||||
| 	b.Status = &value | ||||
| 	return b | ||||
| } | ||||
| @@ -0,0 +1,62 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by applyconfiguration-gen. DO NOT EDIT. | ||||
|  | ||||
| package internal | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"sync" | ||||
|  | ||||
| 	typed "sigs.k8s.io/structured-merge-diff/v4/typed" | ||||
| ) | ||||
|  | ||||
| func Parser() *typed.Parser { | ||||
| 	parserOnce.Do(func() { | ||||
| 		var err error | ||||
| 		parser, err = typed.NewParser(schemaYAML) | ||||
| 		if err != nil { | ||||
| 			panic(fmt.Sprintf("Failed to parse schema: %v", err)) | ||||
| 		} | ||||
| 	}) | ||||
| 	return parser | ||||
| } | ||||
|  | ||||
| var parserOnce sync.Once | ||||
| var parser *typed.Parser | ||||
| var schemaYAML = typed.YAMLObject(`types: | ||||
| - name: __untyped_atomic_ | ||||
|   scalar: untyped | ||||
|   list: | ||||
|     elementType: | ||||
|       namedType: __untyped_atomic_ | ||||
|     elementRelationship: atomic | ||||
|   map: | ||||
|     elementType: | ||||
|       namedType: __untyped_atomic_ | ||||
|     elementRelationship: atomic | ||||
| - name: __untyped_deduced_ | ||||
|   scalar: untyped | ||||
|   list: | ||||
|     elementType: | ||||
|       namedType: __untyped_atomic_ | ||||
|     elementRelationship: atomic | ||||
|   map: | ||||
|     elementType: | ||||
|       namedType: __untyped_deduced_ | ||||
|     elementRelationship: separable | ||||
| `) | ||||
| @@ -0,0 +1,39 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by applyconfiguration-gen. DO NOT EDIT. | ||||
|  | ||||
| package applyconfiguration | ||||
|  | ||||
| import ( | ||||
| 	schema "k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/applyconfiguration/api/v1" | ||||
| ) | ||||
|  | ||||
| // ForKind returns an apply configuration type for the given GroupVersionKind, or nil if no | ||||
| // apply configuration type exists for the given GroupVersionKind. | ||||
| func ForKind(kind schema.GroupVersionKind) interface{} { | ||||
| 	switch kind { | ||||
| 	// Group=example.crd.code-generator.k8s.io, Version=v1 | ||||
| 	case v1.SchemeGroupVersion.WithKind("ClusterTestType"): | ||||
| 		return &apiv1.ClusterTestTypeApplyConfiguration{} | ||||
| 	case v1.SchemeGroupVersion.WithKind("TestType"): | ||||
| 		return &apiv1.TestTypeApplyConfiguration{} | ||||
|  | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| @@ -0,0 +1,120 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package versioned | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
|  | ||||
| 	discovery "k8s.io/client-go/discovery" | ||||
| 	rest "k8s.io/client-go/rest" | ||||
| 	flowcontrol "k8s.io/client-go/util/flowcontrol" | ||||
| 	examplev1 "k8s.io/code-generator/examples/single/clientset/versioned/typed/api/v1" | ||||
| ) | ||||
|  | ||||
| type Interface interface { | ||||
| 	Discovery() discovery.DiscoveryInterface | ||||
| 	ExampleV1() examplev1.ExampleV1Interface | ||||
| } | ||||
|  | ||||
| // Clientset contains the clients for groups. | ||||
| type Clientset struct { | ||||
| 	*discovery.DiscoveryClient | ||||
| 	exampleV1 *examplev1.ExampleV1Client | ||||
| } | ||||
|  | ||||
| // ExampleV1 retrieves the ExampleV1Client | ||||
| func (c *Clientset) ExampleV1() examplev1.ExampleV1Interface { | ||||
| 	return c.exampleV1 | ||||
| } | ||||
|  | ||||
| // Discovery retrieves the DiscoveryClient | ||||
| func (c *Clientset) Discovery() discovery.DiscoveryInterface { | ||||
| 	if c == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	return c.DiscoveryClient | ||||
| } | ||||
|  | ||||
| // NewForConfig creates a new Clientset for the given config. | ||||
| // If config's RateLimiter is not set and QPS and Burst are acceptable, | ||||
| // NewForConfig will generate a rate-limiter in configShallowCopy. | ||||
| // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), | ||||
| // where httpClient was generated with rest.HTTPClientFor(c). | ||||
| func NewForConfig(c *rest.Config) (*Clientset, error) { | ||||
| 	configShallowCopy := *c | ||||
|  | ||||
| 	if configShallowCopy.UserAgent == "" { | ||||
| 		configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent() | ||||
| 	} | ||||
|  | ||||
| 	// share the transport between all clients | ||||
| 	httpClient, err := rest.HTTPClientFor(&configShallowCopy) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return NewForConfigAndClient(&configShallowCopy, httpClient) | ||||
| } | ||||
|  | ||||
| // NewForConfigAndClient creates a new Clientset for the given config and http client. | ||||
| // Note the http client provided takes precedence over the configured transport values. | ||||
| // If config's RateLimiter is not set and QPS and Burst are acceptable, | ||||
| // NewForConfigAndClient will generate a rate-limiter in configShallowCopy. | ||||
| func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset, error) { | ||||
| 	configShallowCopy := *c | ||||
| 	if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { | ||||
| 		if configShallowCopy.Burst <= 0 { | ||||
| 			return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") | ||||
| 		} | ||||
| 		configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) | ||||
| 	} | ||||
|  | ||||
| 	var cs Clientset | ||||
| 	var err error | ||||
| 	cs.exampleV1, err = examplev1.NewForConfigAndClient(&configShallowCopy, httpClient) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfigAndClient(&configShallowCopy, httpClient) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &cs, nil | ||||
| } | ||||
|  | ||||
| // NewForConfigOrDie creates a new Clientset for the given config and | ||||
| // panics if there is an error in the config. | ||||
| func NewForConfigOrDie(c *rest.Config) *Clientset { | ||||
| 	cs, err := NewForConfig(c) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	return cs | ||||
| } | ||||
|  | ||||
| // New creates a new Clientset for the given RESTClient. | ||||
| func New(c rest.Interface) *Clientset { | ||||
| 	var cs Clientset | ||||
| 	cs.exampleV1 = examplev1.New(c) | ||||
|  | ||||
| 	cs.DiscoveryClient = discovery.NewDiscoveryClient(c) | ||||
| 	return &cs | ||||
| } | ||||
| @@ -0,0 +1,85 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package fake | ||||
|  | ||||
| import ( | ||||
| 	"k8s.io/apimachinery/pkg/runtime" | ||||
| 	"k8s.io/apimachinery/pkg/watch" | ||||
| 	"k8s.io/client-go/discovery" | ||||
| 	fakediscovery "k8s.io/client-go/discovery/fake" | ||||
| 	"k8s.io/client-go/testing" | ||||
| 	clientset "k8s.io/code-generator/examples/single/clientset/versioned" | ||||
| 	examplev1 "k8s.io/code-generator/examples/single/clientset/versioned/typed/api/v1" | ||||
| 	fakeexamplev1 "k8s.io/code-generator/examples/single/clientset/versioned/typed/api/v1/fake" | ||||
| ) | ||||
|  | ||||
| // NewSimpleClientset returns a clientset that will respond with the provided objects. | ||||
| // It's backed by a very simple object tracker that processes creates, updates and deletions as-is, | ||||
| // without applying any validations and/or defaults. It shouldn't be considered a replacement | ||||
| // for a real clientset and is mostly useful in simple unit tests. | ||||
| func NewSimpleClientset(objects ...runtime.Object) *Clientset { | ||||
| 	o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) | ||||
| 	for _, obj := range objects { | ||||
| 		if err := o.Add(obj); err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	cs := &Clientset{tracker: o} | ||||
| 	cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} | ||||
| 	cs.AddReactor("*", "*", testing.ObjectReaction(o)) | ||||
| 	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { | ||||
| 		gvr := action.GetResource() | ||||
| 		ns := action.GetNamespace() | ||||
| 		watch, err := o.Watch(gvr, ns) | ||||
| 		if err != nil { | ||||
| 			return false, nil, err | ||||
| 		} | ||||
| 		return true, watch, nil | ||||
| 	}) | ||||
|  | ||||
| 	return cs | ||||
| } | ||||
|  | ||||
| // Clientset implements clientset.Interface. Meant to be embedded into a | ||||
| // struct to get a default implementation. This makes faking out just the method | ||||
| // you want to test easier. | ||||
| type Clientset struct { | ||||
| 	testing.Fake | ||||
| 	discovery *fakediscovery.FakeDiscovery | ||||
| 	tracker   testing.ObjectTracker | ||||
| } | ||||
|  | ||||
| func (c *Clientset) Discovery() discovery.DiscoveryInterface { | ||||
| 	return c.discovery | ||||
| } | ||||
|  | ||||
| func (c *Clientset) Tracker() testing.ObjectTracker { | ||||
| 	return c.tracker | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	_ clientset.Interface = &Clientset{} | ||||
| 	_ testing.FakeClient  = &Clientset{} | ||||
| ) | ||||
|  | ||||
| // ExampleV1 retrieves the ExampleV1Client | ||||
| func (c *Clientset) ExampleV1() examplev1.ExampleV1Interface { | ||||
| 	return &fakeexamplev1.FakeExampleV1{Fake: &c.Fake} | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| // This package has the automatically generated fake clientset. | ||||
| package fake | ||||
| @@ -0,0 +1,56 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package fake | ||||
|  | ||||
| import ( | ||||
| 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	schema "k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	serializer "k8s.io/apimachinery/pkg/runtime/serializer" | ||||
| 	utilruntime "k8s.io/apimachinery/pkg/util/runtime" | ||||
| 	examplev1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| var scheme = runtime.NewScheme() | ||||
| var codecs = serializer.NewCodecFactory(scheme) | ||||
|  | ||||
| var localSchemeBuilder = runtime.SchemeBuilder{ | ||||
| 	examplev1.AddToScheme, | ||||
| } | ||||
|  | ||||
| // AddToScheme adds all types of this clientset into the given scheme. This allows composition | ||||
| // of clientsets, like in: | ||||
| // | ||||
| //	import ( | ||||
| //	  "k8s.io/client-go/kubernetes" | ||||
| //	  clientsetscheme "k8s.io/client-go/kubernetes/scheme" | ||||
| //	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" | ||||
| //	) | ||||
| // | ||||
| //	kclientset, _ := kubernetes.NewForConfig(c) | ||||
| //	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) | ||||
| // | ||||
| // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types | ||||
| // correctly. | ||||
| var AddToScheme = localSchemeBuilder.AddToScheme | ||||
|  | ||||
| func init() { | ||||
| 	v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) | ||||
| 	utilruntime.Must(AddToScheme(scheme)) | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| // This package contains the scheme of the automatically generated clientset. | ||||
| package scheme | ||||
| @@ -0,0 +1,56 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package scheme | ||||
|  | ||||
| import ( | ||||
| 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	schema "k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	serializer "k8s.io/apimachinery/pkg/runtime/serializer" | ||||
| 	utilruntime "k8s.io/apimachinery/pkg/util/runtime" | ||||
| 	examplev1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| var Scheme = runtime.NewScheme() | ||||
| var Codecs = serializer.NewCodecFactory(Scheme) | ||||
| var ParameterCodec = runtime.NewParameterCodec(Scheme) | ||||
| var localSchemeBuilder = runtime.SchemeBuilder{ | ||||
| 	examplev1.AddToScheme, | ||||
| } | ||||
|  | ||||
| // AddToScheme adds all types of this clientset into the given scheme. This allows composition | ||||
| // of clientsets, like in: | ||||
| // | ||||
| //	import ( | ||||
| //	  "k8s.io/client-go/kubernetes" | ||||
| //	  clientsetscheme "k8s.io/client-go/kubernetes/scheme" | ||||
| //	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" | ||||
| //	) | ||||
| // | ||||
| //	kclientset, _ := kubernetes.NewForConfig(c) | ||||
| //	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) | ||||
| // | ||||
| // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types | ||||
| // correctly. | ||||
| var AddToScheme = localSchemeBuilder.AddToScheme | ||||
|  | ||||
| func init() { | ||||
| 	v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) | ||||
| 	utilruntime.Must(AddToScheme(Scheme)) | ||||
| } | ||||
| @@ -0,0 +1,112 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"net/http" | ||||
|  | ||||
| 	rest "k8s.io/client-go/rest" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	"k8s.io/code-generator/examples/single/clientset/versioned/scheme" | ||||
| ) | ||||
|  | ||||
| type ExampleV1Interface interface { | ||||
| 	RESTClient() rest.Interface | ||||
| 	ClusterTestTypesGetter | ||||
| 	TestTypesGetter | ||||
| } | ||||
|  | ||||
| // ExampleV1Client is used to interact with features provided by the example.crd.code-generator.k8s.io group. | ||||
| type ExampleV1Client struct { | ||||
| 	restClient rest.Interface | ||||
| } | ||||
|  | ||||
| func (c *ExampleV1Client) ClusterTestTypes() ClusterTestTypeInterface { | ||||
| 	return newClusterTestTypes(c) | ||||
| } | ||||
|  | ||||
| func (c *ExampleV1Client) TestTypes(namespace string) TestTypeInterface { | ||||
| 	return newTestTypes(c, namespace) | ||||
| } | ||||
|  | ||||
| // NewForConfig creates a new ExampleV1Client for the given config. | ||||
| // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), | ||||
| // where httpClient was generated with rest.HTTPClientFor(c). | ||||
| func NewForConfig(c *rest.Config) (*ExampleV1Client, error) { | ||||
| 	config := *c | ||||
| 	if err := setConfigDefaults(&config); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	httpClient, err := rest.HTTPClientFor(&config) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return NewForConfigAndClient(&config, httpClient) | ||||
| } | ||||
|  | ||||
| // NewForConfigAndClient creates a new ExampleV1Client for the given config and http client. | ||||
| // Note the http client provided takes precedence over the configured transport values. | ||||
| func NewForConfigAndClient(c *rest.Config, h *http.Client) (*ExampleV1Client, error) { | ||||
| 	config := *c | ||||
| 	if err := setConfigDefaults(&config); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	client, err := rest.RESTClientForConfigAndClient(&config, h) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &ExampleV1Client{client}, nil | ||||
| } | ||||
|  | ||||
| // NewForConfigOrDie creates a new ExampleV1Client for the given config and | ||||
| // panics if there is an error in the config. | ||||
| func NewForConfigOrDie(c *rest.Config) *ExampleV1Client { | ||||
| 	client, err := NewForConfig(c) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	return client | ||||
| } | ||||
|  | ||||
| // New creates a new ExampleV1Client for the given RESTClient. | ||||
| func New(c rest.Interface) *ExampleV1Client { | ||||
| 	return &ExampleV1Client{c} | ||||
| } | ||||
|  | ||||
| func setConfigDefaults(config *rest.Config) error { | ||||
| 	gv := v1.SchemeGroupVersion | ||||
| 	config.GroupVersion = &gv | ||||
| 	config.APIPath = "/apis" | ||||
| 	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() | ||||
|  | ||||
| 	if config.UserAgent == "" { | ||||
| 		config.UserAgent = rest.DefaultKubernetesUserAgent() | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // RESTClient returns a RESTClient that is used to communicate | ||||
| // with API server by this client implementation. | ||||
| func (c *ExampleV1Client) RESTClient() rest.Interface { | ||||
| 	if c == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	return c.restClient | ||||
| } | ||||
| @@ -0,0 +1,274 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	json "encoding/json" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	autoscalingv1 "k8s.io/api/autoscaling/v1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	rest "k8s.io/client-go/rest" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/applyconfiguration/api/v1" | ||||
| 	scheme "k8s.io/code-generator/examples/single/clientset/versioned/scheme" | ||||
| ) | ||||
|  | ||||
| // ClusterTestTypesGetter has a method to return a ClusterTestTypeInterface. | ||||
| // A group's client should implement this interface. | ||||
| type ClusterTestTypesGetter interface { | ||||
| 	ClusterTestTypes() ClusterTestTypeInterface | ||||
| } | ||||
|  | ||||
| // ClusterTestTypeInterface has methods to work with ClusterTestType resources. | ||||
| type ClusterTestTypeInterface interface { | ||||
| 	Create(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.CreateOptions) (*v1.ClusterTestType, error) | ||||
| 	Update(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (*v1.ClusterTestType, error) | ||||
| 	UpdateStatus(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (*v1.ClusterTestType, error) | ||||
| 	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error | ||||
| 	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error | ||||
| 	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ClusterTestType, error) | ||||
| 	List(ctx context.Context, opts metav1.ListOptions) (*v1.ClusterTestTypeList, error) | ||||
| 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) | ||||
| 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterTestType, err error) | ||||
| 	Apply(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) | ||||
| 	ApplyStatus(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) | ||||
| 	GetScale(ctx context.Context, clusterTestTypeName string, options metav1.GetOptions) (*autoscalingv1.Scale, error) | ||||
| 	UpdateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error) | ||||
|  | ||||
| 	ClusterTestTypeExpansion | ||||
| } | ||||
|  | ||||
| // clusterTestTypes implements ClusterTestTypeInterface | ||||
| type clusterTestTypes struct { | ||||
| 	client rest.Interface | ||||
| } | ||||
|  | ||||
| // newClusterTestTypes returns a ClusterTestTypes | ||||
| func newClusterTestTypes(c *ExampleV1Client) *clusterTestTypes { | ||||
| 	return &clusterTestTypes{ | ||||
| 		client: c.RESTClient(), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Get takes name of the clusterTestType, and returns the corresponding clusterTestType object, and an error if there is any. | ||||
| func (c *clusterTestTypes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Get(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(name). | ||||
| 		VersionedParams(&options, scheme.ParameterCodec). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // List takes label and field selectors, and returns the list of ClusterTestTypes that match those selectors. | ||||
| func (c *clusterTestTypes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterTestTypeList, err error) { | ||||
| 	var timeout time.Duration | ||||
| 	if opts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	result = &v1.ClusterTestTypeList{} | ||||
| 	err = c.client.Get(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Watch returns a watch.Interface that watches the requested clusterTestTypes. | ||||
| func (c *clusterTestTypes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { | ||||
| 	var timeout time.Duration | ||||
| 	if opts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	opts.Watch = true | ||||
| 	return c.client.Get(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Watch(ctx) | ||||
| } | ||||
|  | ||||
| // Create takes the representation of a clusterTestType and creates it.  Returns the server's representation of the clusterTestType, and an error, if there is any. | ||||
| func (c *clusterTestTypes) Create(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.CreateOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Post(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(clusterTestType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Update takes the representation of a clusterTestType and updates it. Returns the server's representation of the clusterTestType, and an error, if there is any. | ||||
| func (c *clusterTestTypes) Update(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Put(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(clusterTestType.Name). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(clusterTestType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // UpdateStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). | ||||
| func (c *clusterTestTypes) UpdateStatus(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Put(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(clusterTestType.Name). | ||||
| 		SubResource("status"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(clusterTestType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Delete takes name of the clusterTestType and deletes it. Returns an error if one occurs. | ||||
| func (c *clusterTestTypes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { | ||||
| 	return c.client.Delete(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(name). | ||||
| 		Body(&opts). | ||||
| 		Do(ctx). | ||||
| 		Error() | ||||
| } | ||||
|  | ||||
| // DeleteCollection deletes a collection of objects. | ||||
| func (c *clusterTestTypes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { | ||||
| 	var timeout time.Duration | ||||
| 	if listOpts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	return c.client.Delete(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		VersionedParams(&listOpts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Body(&opts). | ||||
| 		Do(ctx). | ||||
| 		Error() | ||||
| } | ||||
|  | ||||
| // Patch applies the patch and returns the patched clusterTestType. | ||||
| func (c *clusterTestTypes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterTestType, err error) { | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Patch(pt). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(name). | ||||
| 		SubResource(subresources...). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Apply takes the given apply declarative configuration, applies it and returns the applied clusterTestType. | ||||
| func (c *clusterTestTypes) Apply(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	if clusterTestType == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	patchOpts := opts.ToPatchOptions() | ||||
| 	data, err := json.Marshal(clusterTestType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := clusterTestType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Patch(types.ApplyPatchType). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(*name). | ||||
| 		VersionedParams(&patchOpts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // ApplyStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus(). | ||||
| func (c *clusterTestTypes) ApplyStatus(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	if clusterTestType == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	patchOpts := opts.ToPatchOptions() | ||||
| 	data, err := json.Marshal(clusterTestType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	name := clusterTestType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType.Name must be provided to Apply") | ||||
| 	} | ||||
|  | ||||
| 	result = &v1.ClusterTestType{} | ||||
| 	err = c.client.Patch(types.ApplyPatchType). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(*name). | ||||
| 		SubResource("status"). | ||||
| 		VersionedParams(&patchOpts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // GetScale takes name of the clusterTestType, and returns the corresponding autoscalingv1.Scale object, and an error if there is any. | ||||
| func (c *clusterTestTypes) GetScale(ctx context.Context, clusterTestTypeName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) { | ||||
| 	result = &autoscalingv1.Scale{} | ||||
| 	err = c.client.Get(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(clusterTestTypeName). | ||||
| 		SubResource("scale"). | ||||
| 		VersionedParams(&options, scheme.ParameterCodec). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. | ||||
| func (c *clusterTestTypes) UpdateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) { | ||||
| 	result = &autoscalingv1.Scale{} | ||||
| 	err = c.client.Put(). | ||||
| 		Resource("clustertesttypes"). | ||||
| 		Name(clusterTestTypeName). | ||||
| 		SubResource("scale"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(scale). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| // This package has the automatically generated typed clients. | ||||
| package v1 | ||||
| @@ -0,0 +1,20 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| // Package fake has the automatically generated clients. | ||||
| package fake | ||||
| @@ -0,0 +1,44 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package fake | ||||
|  | ||||
| import ( | ||||
| 	rest "k8s.io/client-go/rest" | ||||
| 	testing "k8s.io/client-go/testing" | ||||
| 	v1 "k8s.io/code-generator/examples/single/clientset/versioned/typed/api/v1" | ||||
| ) | ||||
|  | ||||
| type FakeExampleV1 struct { | ||||
| 	*testing.Fake | ||||
| } | ||||
|  | ||||
| func (c *FakeExampleV1) ClusterTestTypes() v1.ClusterTestTypeInterface { | ||||
| 	return &FakeClusterTestTypes{c} | ||||
| } | ||||
|  | ||||
| func (c *FakeExampleV1) TestTypes(namespace string) v1.TestTypeInterface { | ||||
| 	return &FakeTestTypes{c, namespace} | ||||
| } | ||||
|  | ||||
| // RESTClient returns a RESTClient that is used to communicate | ||||
| // with API server by this client implementation. | ||||
| func (c *FakeExampleV1) RESTClient() rest.Interface { | ||||
| 	var ret *rest.RESTClient | ||||
| 	return ret | ||||
| } | ||||
| @@ -0,0 +1,199 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package fake | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	json "encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	autoscalingv1 "k8s.io/api/autoscaling/v1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	labels "k8s.io/apimachinery/pkg/labels" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	testing "k8s.io/client-go/testing" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/applyconfiguration/api/v1" | ||||
| ) | ||||
|  | ||||
| // FakeClusterTestTypes implements ClusterTestTypeInterface | ||||
| type FakeClusterTestTypes struct { | ||||
| 	Fake *FakeExampleV1 | ||||
| } | ||||
|  | ||||
| var clustertesttypesResource = v1.SchemeGroupVersion.WithResource("clustertesttypes") | ||||
|  | ||||
| var clustertesttypesKind = v1.SchemeGroupVersion.WithKind("ClusterTestType") | ||||
|  | ||||
| // Get takes name of the clusterTestType, and returns the corresponding clusterTestType object, and an error if there is any. | ||||
| func (c *FakeClusterTestTypes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootGetAction(clustertesttypesResource, name), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // List takes label and field selectors, and returns the list of ClusterTestTypes that match those selectors. | ||||
| func (c *FakeClusterTestTypes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterTestTypeList, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootListAction(clustertesttypesResource, clustertesttypesKind, opts), &v1.ClusterTestTypeList{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	label, _, _ := testing.ExtractFromListOptions(opts) | ||||
| 	if label == nil { | ||||
| 		label = labels.Everything() | ||||
| 	} | ||||
| 	list := &v1.ClusterTestTypeList{ListMeta: obj.(*v1.ClusterTestTypeList).ListMeta} | ||||
| 	for _, item := range obj.(*v1.ClusterTestTypeList).Items { | ||||
| 		if label.Matches(labels.Set(item.Labels)) { | ||||
| 			list.Items = append(list.Items, item) | ||||
| 		} | ||||
| 	} | ||||
| 	return list, err | ||||
| } | ||||
|  | ||||
| // Watch returns a watch.Interface that watches the requested clusterTestTypes. | ||||
| func (c *FakeClusterTestTypes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { | ||||
| 	return c.Fake. | ||||
| 		InvokesWatch(testing.NewRootWatchAction(clustertesttypesResource, opts)) | ||||
| } | ||||
|  | ||||
| // Create takes the representation of a clusterTestType and creates it.  Returns the server's representation of the clusterTestType, and an error, if there is any. | ||||
| func (c *FakeClusterTestTypes) Create(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.CreateOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootCreateAction(clustertesttypesResource, clusterTestType), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // Update takes the representation of a clusterTestType and updates it. Returns the server's representation of the clusterTestType, and an error, if there is any. | ||||
| func (c *FakeClusterTestTypes) Update(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootUpdateAction(clustertesttypesResource, clusterTestType), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // UpdateStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). | ||||
| func (c *FakeClusterTestTypes) UpdateStatus(ctx context.Context, clusterTestType *v1.ClusterTestType, opts metav1.UpdateOptions) (*v1.ClusterTestType, error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootUpdateSubresourceAction(clustertesttypesResource, "status", clusterTestType), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // Delete takes name of the clusterTestType and deletes it. Returns an error if one occurs. | ||||
| func (c *FakeClusterTestTypes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { | ||||
| 	_, err := c.Fake. | ||||
| 		Invokes(testing.NewRootDeleteActionWithOptions(clustertesttypesResource, name, opts), &v1.ClusterTestType{}) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // DeleteCollection deletes a collection of objects. | ||||
| func (c *FakeClusterTestTypes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { | ||||
| 	action := testing.NewRootDeleteCollectionAction(clustertesttypesResource, listOpts) | ||||
|  | ||||
| 	_, err := c.Fake.Invokes(action, &v1.ClusterTestTypeList{}) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // Patch applies the patch and returns the patched clusterTestType. | ||||
| func (c *FakeClusterTestTypes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterTestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootPatchSubresourceAction(clustertesttypesResource, name, pt, data, subresources...), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // Apply takes the given apply declarative configuration, applies it and returns the applied clusterTestType. | ||||
| func (c *FakeClusterTestTypes) Apply(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	if clusterTestType == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	data, err := json.Marshal(clusterTestType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := clusterTestType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootPatchSubresourceAction(clustertesttypesResource, *name, types.ApplyPatchType, data), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // ApplyStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus(). | ||||
| func (c *FakeClusterTestTypes) ApplyStatus(ctx context.Context, clusterTestType *apiv1.ClusterTestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterTestType, err error) { | ||||
| 	if clusterTestType == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	data, err := json.Marshal(clusterTestType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := clusterTestType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("clusterTestType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootPatchSubresourceAction(clustertesttypesResource, *name, types.ApplyPatchType, data, "status"), &v1.ClusterTestType{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), err | ||||
| } | ||||
|  | ||||
| // GetScale takes name of the clusterTestType, and returns the corresponding scale object, and an error if there is any. | ||||
| func (c *FakeClusterTestTypes) GetScale(ctx context.Context, clusterTestTypeName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootGetSubresourceAction(clustertesttypesResource, "scale", clusterTestTypeName), &autoscalingv1.Scale{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*autoscalingv1.Scale), err | ||||
| } | ||||
|  | ||||
| // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. | ||||
| func (c *FakeClusterTestTypes) UpdateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewRootUpdateSubresourceAction(clustertesttypesResource, "scale", scale), &autoscalingv1.Scale{}) | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*autoscalingv1.Scale), err | ||||
| } | ||||
| @@ -0,0 +1,189 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package fake | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	json "encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	labels "k8s.io/apimachinery/pkg/labels" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	testing "k8s.io/client-go/testing" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/applyconfiguration/api/v1" | ||||
| ) | ||||
|  | ||||
| // FakeTestTypes implements TestTypeInterface | ||||
| type FakeTestTypes struct { | ||||
| 	Fake *FakeExampleV1 | ||||
| 	ns   string | ||||
| } | ||||
|  | ||||
| var testtypesResource = v1.SchemeGroupVersion.WithResource("testtypes") | ||||
|  | ||||
| var testtypesKind = v1.SchemeGroupVersion.WithKind("TestType") | ||||
|  | ||||
| // Get takes name of the testType, and returns the corresponding testType object, and an error if there is any. | ||||
| func (c *FakeTestTypes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.TestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewGetAction(testtypesResource, c.ns, name), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // List takes label and field selectors, and returns the list of TestTypes that match those selectors. | ||||
| func (c *FakeTestTypes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.TestTypeList, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewListAction(testtypesResource, testtypesKind, c.ns, opts), &v1.TestTypeList{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	label, _, _ := testing.ExtractFromListOptions(opts) | ||||
| 	if label == nil { | ||||
| 		label = labels.Everything() | ||||
| 	} | ||||
| 	list := &v1.TestTypeList{ListMeta: obj.(*v1.TestTypeList).ListMeta} | ||||
| 	for _, item := range obj.(*v1.TestTypeList).Items { | ||||
| 		if label.Matches(labels.Set(item.Labels)) { | ||||
| 			list.Items = append(list.Items, item) | ||||
| 		} | ||||
| 	} | ||||
| 	return list, err | ||||
| } | ||||
|  | ||||
| // Watch returns a watch.Interface that watches the requested testTypes. | ||||
| func (c *FakeTestTypes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { | ||||
| 	return c.Fake. | ||||
| 		InvokesWatch(testing.NewWatchAction(testtypesResource, c.ns, opts)) | ||||
|  | ||||
| } | ||||
|  | ||||
| // Create takes the representation of a testType and creates it.  Returns the server's representation of the testType, and an error, if there is any. | ||||
| func (c *FakeTestTypes) Create(ctx context.Context, testType *v1.TestType, opts metav1.CreateOptions) (result *v1.TestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewCreateAction(testtypesResource, c.ns, testType), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // Update takes the representation of a testType and updates it. Returns the server's representation of the testType, and an error, if there is any. | ||||
| func (c *FakeTestTypes) Update(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (result *v1.TestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewUpdateAction(testtypesResource, c.ns, testType), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // UpdateStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). | ||||
| func (c *FakeTestTypes) UpdateStatus(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (*v1.TestType, error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewUpdateSubresourceAction(testtypesResource, "status", c.ns, testType), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // Delete takes name of the testType and deletes it. Returns an error if one occurs. | ||||
| func (c *FakeTestTypes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { | ||||
| 	_, err := c.Fake. | ||||
| 		Invokes(testing.NewDeleteActionWithOptions(testtypesResource, c.ns, name, opts), &v1.TestType{}) | ||||
|  | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // DeleteCollection deletes a collection of objects. | ||||
| func (c *FakeTestTypes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { | ||||
| 	action := testing.NewDeleteCollectionAction(testtypesResource, c.ns, listOpts) | ||||
|  | ||||
| 	_, err := c.Fake.Invokes(action, &v1.TestTypeList{}) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // Patch applies the patch and returns the patched testType. | ||||
| func (c *FakeTestTypes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.TestType, err error) { | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewPatchSubresourceAction(testtypesResource, c.ns, name, pt, data, subresources...), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // Apply takes the given apply declarative configuration, applies it and returns the applied testType. | ||||
| func (c *FakeTestTypes) Apply(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) { | ||||
| 	if testType == nil { | ||||
| 		return nil, fmt.Errorf("testType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	data, err := json.Marshal(testType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := testType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("testType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewPatchSubresourceAction(testtypesResource, c.ns, *name, types.ApplyPatchType, data), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
|  | ||||
| // ApplyStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus(). | ||||
| func (c *FakeTestTypes) ApplyStatus(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) { | ||||
| 	if testType == nil { | ||||
| 		return nil, fmt.Errorf("testType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	data, err := json.Marshal(testType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := testType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("testType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	obj, err := c.Fake. | ||||
| 		Invokes(testing.NewPatchSubresourceAction(testtypesResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.TestType{}) | ||||
|  | ||||
| 	if obj == nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), err | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| type ClusterTestTypeExpansion interface{} | ||||
|  | ||||
| type TestTypeExpansion interface{} | ||||
| @@ -0,0 +1,256 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by client-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	json "encoding/json" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	types "k8s.io/apimachinery/pkg/types" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	rest "k8s.io/client-go/rest" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/applyconfiguration/api/v1" | ||||
| 	scheme "k8s.io/code-generator/examples/single/clientset/versioned/scheme" | ||||
| ) | ||||
|  | ||||
| // TestTypesGetter has a method to return a TestTypeInterface. | ||||
| // A group's client should implement this interface. | ||||
| type TestTypesGetter interface { | ||||
| 	TestTypes(namespace string) TestTypeInterface | ||||
| } | ||||
|  | ||||
| // TestTypeInterface has methods to work with TestType resources. | ||||
| type TestTypeInterface interface { | ||||
| 	Create(ctx context.Context, testType *v1.TestType, opts metav1.CreateOptions) (*v1.TestType, error) | ||||
| 	Update(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (*v1.TestType, error) | ||||
| 	UpdateStatus(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (*v1.TestType, error) | ||||
| 	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error | ||||
| 	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error | ||||
| 	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.TestType, error) | ||||
| 	List(ctx context.Context, opts metav1.ListOptions) (*v1.TestTypeList, error) | ||||
| 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) | ||||
| 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.TestType, err error) | ||||
| 	Apply(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) | ||||
| 	ApplyStatus(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) | ||||
| 	TestTypeExpansion | ||||
| } | ||||
|  | ||||
| // testTypes implements TestTypeInterface | ||||
| type testTypes struct { | ||||
| 	client rest.Interface | ||||
| 	ns     string | ||||
| } | ||||
|  | ||||
| // newTestTypes returns a TestTypes | ||||
| func newTestTypes(c *ExampleV1Client, namespace string) *testTypes { | ||||
| 	return &testTypes{ | ||||
| 		client: c.RESTClient(), | ||||
| 		ns:     namespace, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Get takes name of the testType, and returns the corresponding testType object, and an error if there is any. | ||||
| func (c *testTypes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.TestType, err error) { | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Get(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(name). | ||||
| 		VersionedParams(&options, scheme.ParameterCodec). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // List takes label and field selectors, and returns the list of TestTypes that match those selectors. | ||||
| func (c *testTypes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.TestTypeList, err error) { | ||||
| 	var timeout time.Duration | ||||
| 	if opts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	result = &v1.TestTypeList{} | ||||
| 	err = c.client.Get(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Watch returns a watch.Interface that watches the requested testTypes. | ||||
| func (c *testTypes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { | ||||
| 	var timeout time.Duration | ||||
| 	if opts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	opts.Watch = true | ||||
| 	return c.client.Get(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Watch(ctx) | ||||
| } | ||||
|  | ||||
| // Create takes the representation of a testType and creates it.  Returns the server's representation of the testType, and an error, if there is any. | ||||
| func (c *testTypes) Create(ctx context.Context, testType *v1.TestType, opts metav1.CreateOptions) (result *v1.TestType, err error) { | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Post(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(testType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Update takes the representation of a testType and updates it. Returns the server's representation of the testType, and an error, if there is any. | ||||
| func (c *testTypes) Update(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (result *v1.TestType, err error) { | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Put(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(testType.Name). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(testType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // UpdateStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). | ||||
| func (c *testTypes) UpdateStatus(ctx context.Context, testType *v1.TestType, opts metav1.UpdateOptions) (result *v1.TestType, err error) { | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Put(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(testType.Name). | ||||
| 		SubResource("status"). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(testType). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Delete takes name of the testType and deletes it. Returns an error if one occurs. | ||||
| func (c *testTypes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { | ||||
| 	return c.client.Delete(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(name). | ||||
| 		Body(&opts). | ||||
| 		Do(ctx). | ||||
| 		Error() | ||||
| } | ||||
|  | ||||
| // DeleteCollection deletes a collection of objects. | ||||
| func (c *testTypes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { | ||||
| 	var timeout time.Duration | ||||
| 	if listOpts.TimeoutSeconds != nil { | ||||
| 		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second | ||||
| 	} | ||||
| 	return c.client.Delete(). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		VersionedParams(&listOpts, scheme.ParameterCodec). | ||||
| 		Timeout(timeout). | ||||
| 		Body(&opts). | ||||
| 		Do(ctx). | ||||
| 		Error() | ||||
| } | ||||
|  | ||||
| // Patch applies the patch and returns the patched testType. | ||||
| func (c *testTypes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.TestType, err error) { | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Patch(pt). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(name). | ||||
| 		SubResource(subresources...). | ||||
| 		VersionedParams(&opts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Apply takes the given apply declarative configuration, applies it and returns the applied testType. | ||||
| func (c *testTypes) Apply(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) { | ||||
| 	if testType == nil { | ||||
| 		return nil, fmt.Errorf("testType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	patchOpts := opts.ToPatchOptions() | ||||
| 	data, err := json.Marshal(testType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	name := testType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("testType.Name must be provided to Apply") | ||||
| 	} | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Patch(types.ApplyPatchType). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(*name). | ||||
| 		VersionedParams(&patchOpts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // ApplyStatus was generated because the type contains a Status member. | ||||
| // Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus(). | ||||
| func (c *testTypes) ApplyStatus(ctx context.Context, testType *apiv1.TestTypeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.TestType, err error) { | ||||
| 	if testType == nil { | ||||
| 		return nil, fmt.Errorf("testType provided to Apply must not be nil") | ||||
| 	} | ||||
| 	patchOpts := opts.ToPatchOptions() | ||||
| 	data, err := json.Marshal(testType) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	name := testType.Name | ||||
| 	if name == nil { | ||||
| 		return nil, fmt.Errorf("testType.Name must be provided to Apply") | ||||
| 	} | ||||
|  | ||||
| 	result = &v1.TestType{} | ||||
| 	err = c.client.Patch(types.ApplyPatchType). | ||||
| 		Namespace(c.ns). | ||||
| 		Resource("testtypes"). | ||||
| 		Name(*name). | ||||
| 		SubResource("status"). | ||||
| 		VersionedParams(&patchOpts, scheme.ParameterCodec). | ||||
| 		Body(data). | ||||
| 		Do(ctx). | ||||
| 		Into(result) | ||||
| 	return | ||||
| } | ||||
| @@ -0,0 +1,46 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package api | ||||
|  | ||||
| import ( | ||||
| 	v1 "k8s.io/code-generator/examples/single/informers/externalversions/api/v1" | ||||
| 	internalinterfaces "k8s.io/code-generator/examples/single/informers/externalversions/internalinterfaces" | ||||
| ) | ||||
|  | ||||
| // Interface provides access to each of this group's versions. | ||||
| type Interface interface { | ||||
| 	// V1 provides access to shared informers for resources in V1. | ||||
| 	V1() v1.Interface | ||||
| } | ||||
|  | ||||
| type group struct { | ||||
| 	factory          internalinterfaces.SharedInformerFactory | ||||
| 	namespace        string | ||||
| 	tweakListOptions internalinterfaces.TweakListOptionsFunc | ||||
| } | ||||
|  | ||||
| // New returns a new Interface. | ||||
| func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { | ||||
| 	return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} | ||||
| } | ||||
|  | ||||
| // V1 returns a new v1.Interface. | ||||
| func (g *group) V1() v1.Interface { | ||||
| 	return v1.New(g.factory, g.namespace, g.tweakListOptions) | ||||
| } | ||||
| @@ -0,0 +1,89 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	time "time" | ||||
|  | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	cache "k8s.io/client-go/tools/cache" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	versioned "k8s.io/code-generator/examples/single/clientset/versioned" | ||||
| 	internalinterfaces "k8s.io/code-generator/examples/single/informers/externalversions/internalinterfaces" | ||||
| 	v1 "k8s.io/code-generator/examples/single/listers/api/v1" | ||||
| ) | ||||
|  | ||||
| // ClusterTestTypeInformer provides access to a shared informer and lister for | ||||
| // ClusterTestTypes. | ||||
| type ClusterTestTypeInformer interface { | ||||
| 	Informer() cache.SharedIndexInformer | ||||
| 	Lister() v1.ClusterTestTypeLister | ||||
| } | ||||
|  | ||||
| type clusterTestTypeInformer struct { | ||||
| 	factory          internalinterfaces.SharedInformerFactory | ||||
| 	tweakListOptions internalinterfaces.TweakListOptionsFunc | ||||
| } | ||||
|  | ||||
| // NewClusterTestTypeInformer constructs a new informer for ClusterTestType type. | ||||
| // Always prefer using an informer factory to get a shared informer instead of getting an independent | ||||
| // one. This reduces memory footprint and number of connections to the server. | ||||
| func NewClusterTestTypeInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { | ||||
| 	return NewFilteredClusterTestTypeInformer(client, resyncPeriod, indexers, nil) | ||||
| } | ||||
|  | ||||
| // NewFilteredClusterTestTypeInformer constructs a new informer for ClusterTestType type. | ||||
| // Always prefer using an informer factory to get a shared informer instead of getting an independent | ||||
| // one. This reduces memory footprint and number of connections to the server. | ||||
| func NewFilteredClusterTestTypeInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { | ||||
| 	return cache.NewSharedIndexInformer( | ||||
| 		&cache.ListWatch{ | ||||
| 			ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { | ||||
| 				if tweakListOptions != nil { | ||||
| 					tweakListOptions(&options) | ||||
| 				} | ||||
| 				return client.ExampleV1().ClusterTestTypes().List(context.TODO(), options) | ||||
| 			}, | ||||
| 			WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { | ||||
| 				if tweakListOptions != nil { | ||||
| 					tweakListOptions(&options) | ||||
| 				} | ||||
| 				return client.ExampleV1().ClusterTestTypes().Watch(context.TODO(), options) | ||||
| 			}, | ||||
| 		}, | ||||
| 		&apiv1.ClusterTestType{}, | ||||
| 		resyncPeriod, | ||||
| 		indexers, | ||||
| 	) | ||||
| } | ||||
|  | ||||
| func (f *clusterTestTypeInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { | ||||
| 	return NewFilteredClusterTestTypeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) | ||||
| } | ||||
|  | ||||
| func (f *clusterTestTypeInformer) Informer() cache.SharedIndexInformer { | ||||
| 	return f.factory.InformerFor(&apiv1.ClusterTestType{}, f.defaultInformer) | ||||
| } | ||||
|  | ||||
| func (f *clusterTestTypeInformer) Lister() v1.ClusterTestTypeLister { | ||||
| 	return v1.NewClusterTestTypeLister(f.Informer().GetIndexer()) | ||||
| } | ||||
| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	internalinterfaces "k8s.io/code-generator/examples/single/informers/externalversions/internalinterfaces" | ||||
| ) | ||||
|  | ||||
| // Interface provides access to all the informers in this group version. | ||||
| type Interface interface { | ||||
| 	// ClusterTestTypes returns a ClusterTestTypeInformer. | ||||
| 	ClusterTestTypes() ClusterTestTypeInformer | ||||
| 	// TestTypes returns a TestTypeInformer. | ||||
| 	TestTypes() TestTypeInformer | ||||
| } | ||||
|  | ||||
| type version struct { | ||||
| 	factory          internalinterfaces.SharedInformerFactory | ||||
| 	namespace        string | ||||
| 	tweakListOptions internalinterfaces.TweakListOptionsFunc | ||||
| } | ||||
|  | ||||
| // New returns a new Interface. | ||||
| func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { | ||||
| 	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} | ||||
| } | ||||
|  | ||||
| // ClusterTestTypes returns a ClusterTestTypeInformer. | ||||
| func (v *version) ClusterTestTypes() ClusterTestTypeInformer { | ||||
| 	return &clusterTestTypeInformer{factory: v.factory, tweakListOptions: v.tweakListOptions} | ||||
| } | ||||
|  | ||||
| // TestTypes returns a TestTypeInformer. | ||||
| func (v *version) TestTypes() TestTypeInformer { | ||||
| 	return &testTypeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} | ||||
| } | ||||
| @@ -0,0 +1,90 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	time "time" | ||||
|  | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	watch "k8s.io/apimachinery/pkg/watch" | ||||
| 	cache "k8s.io/client-go/tools/cache" | ||||
| 	apiv1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| 	versioned "k8s.io/code-generator/examples/single/clientset/versioned" | ||||
| 	internalinterfaces "k8s.io/code-generator/examples/single/informers/externalversions/internalinterfaces" | ||||
| 	v1 "k8s.io/code-generator/examples/single/listers/api/v1" | ||||
| ) | ||||
|  | ||||
| // TestTypeInformer provides access to a shared informer and lister for | ||||
| // TestTypes. | ||||
| type TestTypeInformer interface { | ||||
| 	Informer() cache.SharedIndexInformer | ||||
| 	Lister() v1.TestTypeLister | ||||
| } | ||||
|  | ||||
| type testTypeInformer struct { | ||||
| 	factory          internalinterfaces.SharedInformerFactory | ||||
| 	tweakListOptions internalinterfaces.TweakListOptionsFunc | ||||
| 	namespace        string | ||||
| } | ||||
|  | ||||
| // NewTestTypeInformer constructs a new informer for TestType type. | ||||
| // Always prefer using an informer factory to get a shared informer instead of getting an independent | ||||
| // one. This reduces memory footprint and number of connections to the server. | ||||
| func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { | ||||
| 	return NewFilteredTestTypeInformer(client, namespace, resyncPeriod, indexers, nil) | ||||
| } | ||||
|  | ||||
| // NewFilteredTestTypeInformer constructs a new informer for TestType type. | ||||
| // Always prefer using an informer factory to get a shared informer instead of getting an independent | ||||
| // one. This reduces memory footprint and number of connections to the server. | ||||
| func NewFilteredTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { | ||||
| 	return cache.NewSharedIndexInformer( | ||||
| 		&cache.ListWatch{ | ||||
| 			ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { | ||||
| 				if tweakListOptions != nil { | ||||
| 					tweakListOptions(&options) | ||||
| 				} | ||||
| 				return client.ExampleV1().TestTypes(namespace).List(context.TODO(), options) | ||||
| 			}, | ||||
| 			WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { | ||||
| 				if tweakListOptions != nil { | ||||
| 					tweakListOptions(&options) | ||||
| 				} | ||||
| 				return client.ExampleV1().TestTypes(namespace).Watch(context.TODO(), options) | ||||
| 			}, | ||||
| 		}, | ||||
| 		&apiv1.TestType{}, | ||||
| 		resyncPeriod, | ||||
| 		indexers, | ||||
| 	) | ||||
| } | ||||
|  | ||||
| func (f *testTypeInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { | ||||
| 	return NewFilteredTestTypeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) | ||||
| } | ||||
|  | ||||
| func (f *testTypeInformer) Informer() cache.SharedIndexInformer { | ||||
| 	return f.factory.InformerFor(&apiv1.TestType{}, f.defaultInformer) | ||||
| } | ||||
|  | ||||
| func (f *testTypeInformer) Lister() v1.TestTypeLister { | ||||
| 	return v1.NewTestTypeLister(f.Informer().GetIndexer()) | ||||
| } | ||||
| @@ -0,0 +1,261 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package externalversions | ||||
|  | ||||
| import ( | ||||
| 	reflect "reflect" | ||||
| 	sync "sync" | ||||
| 	time "time" | ||||
|  | ||||
| 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	schema "k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	cache "k8s.io/client-go/tools/cache" | ||||
| 	versioned "k8s.io/code-generator/examples/single/clientset/versioned" | ||||
| 	api "k8s.io/code-generator/examples/single/informers/externalversions/api" | ||||
| 	internalinterfaces "k8s.io/code-generator/examples/single/informers/externalversions/internalinterfaces" | ||||
| ) | ||||
|  | ||||
| // SharedInformerOption defines the functional option type for SharedInformerFactory. | ||||
| type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory | ||||
|  | ||||
| type sharedInformerFactory struct { | ||||
| 	client           versioned.Interface | ||||
| 	namespace        string | ||||
| 	tweakListOptions internalinterfaces.TweakListOptionsFunc | ||||
| 	lock             sync.Mutex | ||||
| 	defaultResync    time.Duration | ||||
| 	customResync     map[reflect.Type]time.Duration | ||||
| 	transform        cache.TransformFunc | ||||
|  | ||||
| 	informers map[reflect.Type]cache.SharedIndexInformer | ||||
| 	// startedInformers is used for tracking which informers have been started. | ||||
| 	// This allows Start() to be called multiple times safely. | ||||
| 	startedInformers map[reflect.Type]bool | ||||
| 	// wg tracks how many goroutines were started. | ||||
| 	wg sync.WaitGroup | ||||
| 	// shuttingDown is true when Shutdown has been called. It may still be running | ||||
| 	// because it needs to wait for goroutines. | ||||
| 	shuttingDown bool | ||||
| } | ||||
|  | ||||
| // WithCustomResyncConfig sets a custom resync period for the specified informer types. | ||||
| func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption { | ||||
| 	return func(factory *sharedInformerFactory) *sharedInformerFactory { | ||||
| 		for k, v := range resyncConfig { | ||||
| 			factory.customResync[reflect.TypeOf(k)] = v | ||||
| 		} | ||||
| 		return factory | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory. | ||||
| func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption { | ||||
| 	return func(factory *sharedInformerFactory) *sharedInformerFactory { | ||||
| 		factory.tweakListOptions = tweakListOptions | ||||
| 		return factory | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithNamespace limits the SharedInformerFactory to the specified namespace. | ||||
| func WithNamespace(namespace string) SharedInformerOption { | ||||
| 	return func(factory *sharedInformerFactory) *sharedInformerFactory { | ||||
| 		factory.namespace = namespace | ||||
| 		return factory | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithTransform sets a transform on all informers. | ||||
| func WithTransform(transform cache.TransformFunc) SharedInformerOption { | ||||
| 	return func(factory *sharedInformerFactory) *sharedInformerFactory { | ||||
| 		factory.transform = transform | ||||
| 		return factory | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces. | ||||
| func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { | ||||
| 	return NewSharedInformerFactoryWithOptions(client, defaultResync) | ||||
| } | ||||
|  | ||||
| // NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory. | ||||
| // Listers obtained via this SharedInformerFactory will be subject to the same filters | ||||
| // as specified here. | ||||
| // Deprecated: Please use NewSharedInformerFactoryWithOptions instead | ||||
| func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory { | ||||
| 	return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions)) | ||||
| } | ||||
|  | ||||
| // NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options. | ||||
| func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory { | ||||
| 	factory := &sharedInformerFactory{ | ||||
| 		client:           client, | ||||
| 		namespace:        v1.NamespaceAll, | ||||
| 		defaultResync:    defaultResync, | ||||
| 		informers:        make(map[reflect.Type]cache.SharedIndexInformer), | ||||
| 		startedInformers: make(map[reflect.Type]bool), | ||||
| 		customResync:     make(map[reflect.Type]time.Duration), | ||||
| 	} | ||||
|  | ||||
| 	// Apply all options | ||||
| 	for _, opt := range options { | ||||
| 		factory = opt(factory) | ||||
| 	} | ||||
|  | ||||
| 	return factory | ||||
| } | ||||
|  | ||||
| func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { | ||||
| 	f.lock.Lock() | ||||
| 	defer f.lock.Unlock() | ||||
|  | ||||
| 	if f.shuttingDown { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	for informerType, informer := range f.informers { | ||||
| 		if !f.startedInformers[informerType] { | ||||
| 			f.wg.Add(1) | ||||
| 			// We need a new variable in each loop iteration, | ||||
| 			// otherwise the goroutine would use the loop variable | ||||
| 			// and that keeps changing. | ||||
| 			informer := informer | ||||
| 			go func() { | ||||
| 				defer f.wg.Done() | ||||
| 				informer.Run(stopCh) | ||||
| 			}() | ||||
| 			f.startedInformers[informerType] = true | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (f *sharedInformerFactory) Shutdown() { | ||||
| 	f.lock.Lock() | ||||
| 	f.shuttingDown = true | ||||
| 	f.lock.Unlock() | ||||
|  | ||||
| 	// Will return immediately if there is nothing to wait for. | ||||
| 	f.wg.Wait() | ||||
| } | ||||
|  | ||||
| func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { | ||||
| 	informers := func() map[reflect.Type]cache.SharedIndexInformer { | ||||
| 		f.lock.Lock() | ||||
| 		defer f.lock.Unlock() | ||||
|  | ||||
| 		informers := map[reflect.Type]cache.SharedIndexInformer{} | ||||
| 		for informerType, informer := range f.informers { | ||||
| 			if f.startedInformers[informerType] { | ||||
| 				informers[informerType] = informer | ||||
| 			} | ||||
| 		} | ||||
| 		return informers | ||||
| 	}() | ||||
|  | ||||
| 	res := map[reflect.Type]bool{} | ||||
| 	for informType, informer := range informers { | ||||
| 		res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) | ||||
| 	} | ||||
| 	return res | ||||
| } | ||||
|  | ||||
| // InformerFor returns the SharedIndexInformer for obj using an internal | ||||
| // client. | ||||
| func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { | ||||
| 	f.lock.Lock() | ||||
| 	defer f.lock.Unlock() | ||||
|  | ||||
| 	informerType := reflect.TypeOf(obj) | ||||
| 	informer, exists := f.informers[informerType] | ||||
| 	if exists { | ||||
| 		return informer | ||||
| 	} | ||||
|  | ||||
| 	resyncPeriod, exists := f.customResync[informerType] | ||||
| 	if !exists { | ||||
| 		resyncPeriod = f.defaultResync | ||||
| 	} | ||||
|  | ||||
| 	informer = newFunc(f.client, resyncPeriod) | ||||
| 	informer.SetTransform(f.transform) | ||||
| 	f.informers[informerType] = informer | ||||
|  | ||||
| 	return informer | ||||
| } | ||||
|  | ||||
| // SharedInformerFactory provides shared informers for resources in all known | ||||
| // API group versions. | ||||
| // | ||||
| // It is typically used like this: | ||||
| // | ||||
| //	ctx, cancel := context.Background() | ||||
| //	defer cancel() | ||||
| //	factory := NewSharedInformerFactory(client, resyncPeriod) | ||||
| //	defer factory.WaitForStop()    // Returns immediately if nothing was started. | ||||
| //	genericInformer := factory.ForResource(resource) | ||||
| //	typedInformer := factory.SomeAPIGroup().V1().SomeType() | ||||
| //	factory.Start(ctx.Done())          // Start processing these informers. | ||||
| //	synced := factory.WaitForCacheSync(ctx.Done()) | ||||
| //	for v, ok := range synced { | ||||
| //	    if !ok { | ||||
| //	        fmt.Fprintf(os.Stderr, "caches failed to sync: %v", v) | ||||
| //	        return | ||||
| //	    } | ||||
| //	} | ||||
| // | ||||
| //	// Creating informers can also be created after Start, but then | ||||
| //	// Start must be called again: | ||||
| //	anotherGenericInformer := factory.ForResource(resource) | ||||
| //	factory.Start(ctx.Done()) | ||||
| type SharedInformerFactory interface { | ||||
| 	internalinterfaces.SharedInformerFactory | ||||
|  | ||||
| 	// Start initializes all requested informers. They are handled in goroutines | ||||
| 	// which run until the stop channel gets closed. | ||||
| 	Start(stopCh <-chan struct{}) | ||||
|  | ||||
| 	// Shutdown marks a factory as shutting down. At that point no new | ||||
| 	// informers can be started anymore and Start will return without | ||||
| 	// doing anything. | ||||
| 	// | ||||
| 	// In addition, Shutdown blocks until all goroutines have terminated. For that | ||||
| 	// to happen, the close channel(s) that they were started with must be closed, | ||||
| 	// either before Shutdown gets called or while it is waiting. | ||||
| 	// | ||||
| 	// Shutdown may be called multiple times, even concurrently. All such calls will | ||||
| 	// block until all goroutines have terminated. | ||||
| 	Shutdown() | ||||
|  | ||||
| 	// WaitForCacheSync blocks until all started informers' caches were synced | ||||
| 	// or the stop channel gets closed. | ||||
| 	WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool | ||||
|  | ||||
| 	// ForResource gives generic access to a shared informer of the matching type. | ||||
| 	ForResource(resource schema.GroupVersionResource) (GenericInformer, error) | ||||
|  | ||||
| 	// InformerFor returns the SharedIndexInformer for obj using an internal | ||||
| 	// client. | ||||
| 	InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer | ||||
|  | ||||
| 	Example() api.Interface | ||||
| } | ||||
|  | ||||
| func (f *sharedInformerFactory) Example() api.Interface { | ||||
| 	return api.New(f, f.namespace, f.tweakListOptions) | ||||
| } | ||||
| @@ -0,0 +1,64 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package externalversions | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	schema "k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	cache "k8s.io/client-go/tools/cache" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| // GenericInformer is type of SharedIndexInformer which will locate and delegate to other | ||||
| // sharedInformers based on type | ||||
| type GenericInformer interface { | ||||
| 	Informer() cache.SharedIndexInformer | ||||
| 	Lister() cache.GenericLister | ||||
| } | ||||
|  | ||||
| type genericInformer struct { | ||||
| 	informer cache.SharedIndexInformer | ||||
| 	resource schema.GroupResource | ||||
| } | ||||
|  | ||||
| // Informer returns the SharedIndexInformer. | ||||
| func (f *genericInformer) Informer() cache.SharedIndexInformer { | ||||
| 	return f.informer | ||||
| } | ||||
|  | ||||
| // Lister returns the GenericLister. | ||||
| func (f *genericInformer) Lister() cache.GenericLister { | ||||
| 	return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) | ||||
| } | ||||
|  | ||||
| // ForResource gives generic access to a shared informer of the matching type | ||||
| // TODO extend this to unknown resources with a client pool | ||||
| func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { | ||||
| 	switch resource { | ||||
| 	// Group=example.crd.code-generator.k8s.io, Version=v1 | ||||
| 	case v1.SchemeGroupVersion.WithResource("clustertesttypes"): | ||||
| 		return &genericInformer{resource: resource.GroupResource(), informer: f.Example().V1().ClusterTestTypes().Informer()}, nil | ||||
| 	case v1.SchemeGroupVersion.WithResource("testtypes"): | ||||
| 		return &genericInformer{resource: resource.GroupResource(), informer: f.Example().V1().TestTypes().Informer()}, nil | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	return nil, fmt.Errorf("no informer found for %v", resource) | ||||
| } | ||||
| @@ -0,0 +1,40 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by informer-gen. DO NOT EDIT. | ||||
|  | ||||
| package internalinterfaces | ||||
|  | ||||
| import ( | ||||
| 	time "time" | ||||
|  | ||||
| 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| 	cache "k8s.io/client-go/tools/cache" | ||||
| 	versioned "k8s.io/code-generator/examples/single/clientset/versioned" | ||||
| ) | ||||
|  | ||||
| // NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer. | ||||
| type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer | ||||
|  | ||||
| // SharedInformerFactory a small interface to allow for adding an informer without an import cycle | ||||
| type SharedInformerFactory interface { | ||||
| 	Start(stopCh <-chan struct{}) | ||||
| 	InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer | ||||
| } | ||||
|  | ||||
| // TweakListOptionsFunc is a function that transforms a v1.ListOptions. | ||||
| type TweakListOptionsFunc func(*v1.ListOptions) | ||||
| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by lister-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"k8s.io/apimachinery/pkg/api/errors" | ||||
| 	"k8s.io/apimachinery/pkg/labels" | ||||
| 	"k8s.io/client-go/tools/cache" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| // ClusterTestTypeLister helps list ClusterTestTypes. | ||||
| // All objects returned here must be treated as read-only. | ||||
| type ClusterTestTypeLister interface { | ||||
| 	// List lists all ClusterTestTypes in the indexer. | ||||
| 	// Objects returned here must be treated as read-only. | ||||
| 	List(selector labels.Selector) (ret []*v1.ClusterTestType, err error) | ||||
| 	// Get retrieves the ClusterTestType from the index for a given name. | ||||
| 	// Objects returned here must be treated as read-only. | ||||
| 	Get(name string) (*v1.ClusterTestType, error) | ||||
| 	ClusterTestTypeListerExpansion | ||||
| } | ||||
|  | ||||
| // clusterTestTypeLister implements the ClusterTestTypeLister interface. | ||||
| type clusterTestTypeLister struct { | ||||
| 	indexer cache.Indexer | ||||
| } | ||||
|  | ||||
| // NewClusterTestTypeLister returns a new ClusterTestTypeLister. | ||||
| func NewClusterTestTypeLister(indexer cache.Indexer) ClusterTestTypeLister { | ||||
| 	return &clusterTestTypeLister{indexer: indexer} | ||||
| } | ||||
|  | ||||
| // List lists all ClusterTestTypes in the indexer. | ||||
| func (s *clusterTestTypeLister) List(selector labels.Selector) (ret []*v1.ClusterTestType, err error) { | ||||
| 	err = cache.ListAll(s.indexer, selector, func(m interface{}) { | ||||
| 		ret = append(ret, m.(*v1.ClusterTestType)) | ||||
| 	}) | ||||
| 	return ret, err | ||||
| } | ||||
|  | ||||
| // Get retrieves the ClusterTestType from the index for a given name. | ||||
| func (s *clusterTestTypeLister) Get(name string) (*v1.ClusterTestType, error) { | ||||
| 	obj, exists, err := s.indexer.GetByKey(name) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if !exists { | ||||
| 		return nil, errors.NewNotFound(v1.Resource("clustertesttype"), name) | ||||
| 	} | ||||
| 	return obj.(*v1.ClusterTestType), nil | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by lister-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| // ClusterTestTypeListerExpansion allows custom methods to be added to | ||||
| // ClusterTestTypeLister. | ||||
| type ClusterTestTypeListerExpansion interface{} | ||||
|  | ||||
| // TestTypeListerExpansion allows custom methods to be added to | ||||
| // TestTypeLister. | ||||
| type TestTypeListerExpansion interface{} | ||||
|  | ||||
| // TestTypeNamespaceListerExpansion allows custom methods to be added to | ||||
| // TestTypeNamespaceLister. | ||||
| type TestTypeNamespaceListerExpansion interface{} | ||||
| @@ -0,0 +1,99 @@ | ||||
| /* | ||||
| Copyright 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. | ||||
| */ | ||||
|  | ||||
| // Code generated by lister-gen. DO NOT EDIT. | ||||
|  | ||||
| package v1 | ||||
|  | ||||
| import ( | ||||
| 	"k8s.io/apimachinery/pkg/api/errors" | ||||
| 	"k8s.io/apimachinery/pkg/labels" | ||||
| 	"k8s.io/client-go/tools/cache" | ||||
| 	v1 "k8s.io/code-generator/examples/single/api/v1" | ||||
| ) | ||||
|  | ||||
| // TestTypeLister helps list TestTypes. | ||||
| // All objects returned here must be treated as read-only. | ||||
| type TestTypeLister interface { | ||||
| 	// List lists all TestTypes in the indexer. | ||||
| 	// Objects returned here must be treated as read-only. | ||||
| 	List(selector labels.Selector) (ret []*v1.TestType, err error) | ||||
| 	// TestTypes returns an object that can list and get TestTypes. | ||||
| 	TestTypes(namespace string) TestTypeNamespaceLister | ||||
| 	TestTypeListerExpansion | ||||
| } | ||||
|  | ||||
| // testTypeLister implements the TestTypeLister interface. | ||||
| type testTypeLister struct { | ||||
| 	indexer cache.Indexer | ||||
| } | ||||
|  | ||||
| // NewTestTypeLister returns a new TestTypeLister. | ||||
| func NewTestTypeLister(indexer cache.Indexer) TestTypeLister { | ||||
| 	return &testTypeLister{indexer: indexer} | ||||
| } | ||||
|  | ||||
| // List lists all TestTypes in the indexer. | ||||
| func (s *testTypeLister) List(selector labels.Selector) (ret []*v1.TestType, err error) { | ||||
| 	err = cache.ListAll(s.indexer, selector, func(m interface{}) { | ||||
| 		ret = append(ret, m.(*v1.TestType)) | ||||
| 	}) | ||||
| 	return ret, err | ||||
| } | ||||
|  | ||||
| // TestTypes returns an object that can list and get TestTypes. | ||||
| func (s *testTypeLister) TestTypes(namespace string) TestTypeNamespaceLister { | ||||
| 	return testTypeNamespaceLister{indexer: s.indexer, namespace: namespace} | ||||
| } | ||||
|  | ||||
| // TestTypeNamespaceLister helps list and get TestTypes. | ||||
| // All objects returned here must be treated as read-only. | ||||
| type TestTypeNamespaceLister interface { | ||||
| 	// List lists all TestTypes in the indexer for a given namespace. | ||||
| 	// Objects returned here must be treated as read-only. | ||||
| 	List(selector labels.Selector) (ret []*v1.TestType, err error) | ||||
| 	// Get retrieves the TestType from the indexer for a given namespace and name. | ||||
| 	// Objects returned here must be treated as read-only. | ||||
| 	Get(name string) (*v1.TestType, error) | ||||
| 	TestTypeNamespaceListerExpansion | ||||
| } | ||||
|  | ||||
| // testTypeNamespaceLister implements the TestTypeNamespaceLister | ||||
| // interface. | ||||
| type testTypeNamespaceLister struct { | ||||
| 	indexer   cache.Indexer | ||||
| 	namespace string | ||||
| } | ||||
|  | ||||
| // List lists all TestTypes in the indexer for a given namespace. | ||||
| func (s testTypeNamespaceLister) List(selector labels.Selector) (ret []*v1.TestType, err error) { | ||||
| 	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { | ||||
| 		ret = append(ret, m.(*v1.TestType)) | ||||
| 	}) | ||||
| 	return ret, err | ||||
| } | ||||
|  | ||||
| // Get retrieves the TestType from the indexer for a given namespace and name. | ||||
| func (s testTypeNamespaceLister) Get(name string) (*v1.TestType, error) { | ||||
| 	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if !exists { | ||||
| 		return nil, errors.NewNotFound(v1.Resource("testtype"), name) | ||||
| 	} | ||||
| 	return obj.(*v1.TestType), nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Dr. Stefan Schimanski
					Dr. Stefan Schimanski