Merge pull request #67686 from imroc/update-sample-controller-readme

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

update sample-controller README

Kubernetes-commit: 405eecad6dde9ab24b770fe583da51b9fd7c6941
This commit is contained in:
Kubernetes Publisher 2018-08-22 01:11:38 -07:00
commit be98dc6210
4 changed files with 142 additions and 79 deletions

144
Godeps/Godeps.json generated
View File

@ -172,291 +172,291 @@
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/apps/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/apps/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/apps/v1beta2",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/authentication/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/authentication/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/authorization/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/authorization/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/autoscaling/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/batch/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/batch/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/batch/v2alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/certificates/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/coordination/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/core/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/events/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/extensions/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/networking/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/policy/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/rbac/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/rbac/v1alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/rbac/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/scheduling/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/settings/v1alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/storage/v1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/storage/v1alpha1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/api/storage/v1beta1",
"Rev": "2315b41a07e851014d77070954fc391a9b2d9aa9"
"Rev": "167b5831ed2b510b117579b94ed5302f2b6736c4"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/naming",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "e62e96948d15f2f21efd94c3a548e471af6ede26"
"Rev": "d4e5f596ea6e79f9493060696ad6025c6c82599d"
},
{
"ImportPath": "k8s.io/client-go/discovery",

View File

@ -105,9 +105,8 @@ $ kubectl create -f artifacts/examples/crd-validation.yaml
## Subresources
Custom Resources support `/status` and `/scale` subresources as an
[alpha feature](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#subresources) in v1.10.
Enable this feature using the `CustomResourceSubresources` feature gate on the [kube-apiserver](https://kubernetes.io/docs/admin/kube-apiserver):
Custom Resources support `/status` and `/scale` subresources as a [beta feature](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#subresources) in v1.11 and is enabled by default.
This feature is [alpha](https://v1-10.docs.kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#subresources) in v1.10 and to enable it you need to set the `CustomResourceSubresources` feature gate on the [kube-apiserver](https://kubernetes.io/docs/admin/kube-apiserver):
```sh
--feature-gates=CustomResourceSubresources=true

View File

@ -179,6 +179,11 @@ func (u *Unstructured) GetOwnerReferences() []metav1.OwnerReference {
}
func (u *Unstructured) SetOwnerReferences(references []metav1.OwnerReference) {
if references == nil {
RemoveNestedField(u.Object, "metadata", "ownerReferences")
return
}
newReferences := make([]interface{}, 0, len(references))
for _, reference := range references {
out, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&reference)
@ -212,6 +217,10 @@ func (u *Unstructured) GetNamespace() string {
}
func (u *Unstructured) SetNamespace(namespace string) {
if len(namespace) == 0 {
RemoveNestedField(u.Object, "metadata", "namespace")
return
}
u.setNestedField(namespace, "metadata", "namespace")
}
@ -220,6 +229,10 @@ func (u *Unstructured) GetName() string {
}
func (u *Unstructured) SetName(name string) {
if len(name) == 0 {
RemoveNestedField(u.Object, "metadata", "name")
return
}
u.setNestedField(name, "metadata", "name")
}
@ -227,8 +240,12 @@ func (u *Unstructured) GetGenerateName() string {
return getNestedString(u.Object, "metadata", "generateName")
}
func (u *Unstructured) SetGenerateName(name string) {
u.setNestedField(name, "metadata", "generateName")
func (u *Unstructured) SetGenerateName(generateName string) {
if len(generateName) == 0 {
RemoveNestedField(u.Object, "metadata", "generateName")
return
}
u.setNestedField(generateName, "metadata", "generateName")
}
func (u *Unstructured) GetUID() types.UID {
@ -236,6 +253,10 @@ func (u *Unstructured) GetUID() types.UID {
}
func (u *Unstructured) SetUID(uid types.UID) {
if len(string(uid)) == 0 {
RemoveNestedField(u.Object, "metadata", "uid")
return
}
u.setNestedField(string(uid), "metadata", "uid")
}
@ -243,8 +264,12 @@ func (u *Unstructured) GetResourceVersion() string {
return getNestedString(u.Object, "metadata", "resourceVersion")
}
func (u *Unstructured) SetResourceVersion(version string) {
u.setNestedField(version, "metadata", "resourceVersion")
func (u *Unstructured) SetResourceVersion(resourceVersion string) {
if len(resourceVersion) == 0 {
RemoveNestedField(u.Object, "metadata", "resourceVersion")
return
}
u.setNestedField(resourceVersion, "metadata", "resourceVersion")
}
func (u *Unstructured) GetGeneration() int64 {
@ -256,6 +281,10 @@ func (u *Unstructured) GetGeneration() int64 {
}
func (u *Unstructured) SetGeneration(generation int64) {
if generation == 0 {
RemoveNestedField(u.Object, "metadata", "generation")
return
}
u.setNestedField(generation, "metadata", "generation")
}
@ -264,6 +293,10 @@ func (u *Unstructured) GetSelfLink() string {
}
func (u *Unstructured) SetSelfLink(selfLink string) {
if len(selfLink) == 0 {
RemoveNestedField(u.Object, "metadata", "selfLink")
return
}
u.setNestedField(selfLink, "metadata", "selfLink")
}
@ -272,6 +305,10 @@ func (u *Unstructured) GetContinue() string {
}
func (u *Unstructured) SetContinue(c string) {
if len(c) == 0 {
RemoveNestedField(u.Object, "metadata", "continue")
return
}
u.setNestedField(c, "metadata", "continue")
}
@ -330,6 +367,10 @@ func (u *Unstructured) GetLabels() map[string]string {
}
func (u *Unstructured) SetLabels(labels map[string]string) {
if labels == nil {
RemoveNestedField(u.Object, "metadata", "labels")
return
}
u.setNestedMap(labels, "metadata", "labels")
}
@ -339,6 +380,10 @@ func (u *Unstructured) GetAnnotations() map[string]string {
}
func (u *Unstructured) SetAnnotations(annotations map[string]string) {
if annotations == nil {
RemoveNestedField(u.Object, "metadata", "annotations")
return
}
u.setNestedMap(annotations, "metadata", "annotations")
}
@ -387,6 +432,10 @@ func (u *Unstructured) GetFinalizers() []string {
}
func (u *Unstructured) SetFinalizers(finalizers []string) {
if finalizers == nil {
RemoveNestedField(u.Object, "metadata", "finalizers")
return
}
u.setNestedSlice(finalizers, "metadata", "finalizers")
}
@ -395,5 +444,9 @@ func (u *Unstructured) GetClusterName() string {
}
func (u *Unstructured) SetClusterName(clusterName string) {
if len(clusterName) == 0 {
RemoveNestedField(u.Object, "metadata", "clusterName")
return
}
u.setNestedField(clusterName, "metadata", "clusterName")
}

View File

@ -18,6 +18,7 @@ package intstr
import (
"encoding/json"
"errors"
"fmt"
"math"
"runtime/debug"
@ -142,7 +143,17 @@ func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
}
}
func ValueOrDefault(intOrPercent *IntOrString, defaultValue IntOrString) *IntOrString {
if intOrPercent == nil {
return &defaultValue
}
return intOrPercent
}
func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) {
if intOrPercent == nil {
return 0, errors.New("nil value for IntOrString")
}
value, isPercent, err := getIntOrPercentValue(intOrPercent)
if err != nil {
return 0, fmt.Errorf("invalid value for IntOrString: %v", err)