mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
Merge pull request #127006 from deads2k/clarify-local-ref
clarify that new usages of generic *ObjectReference structs are discouraged
This commit is contained in:
commit
c93f93c714
@ -2346,13 +2346,23 @@ message LoadBalancerStatus {
|
|||||||
|
|
||||||
// LocalObjectReference contains enough information to let you locate the
|
// LocalObjectReference contains enough information to let you locate the
|
||||||
// referenced object inside the same namespace.
|
// referenced object inside the same namespace.
|
||||||
|
// ---
|
||||||
|
// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
|
||||||
|
// 1. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular
|
||||||
|
// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
|
||||||
|
// Those cannot be well described when embedded.
|
||||||
|
// 2. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
|
||||||
|
// 3. We cannot easily change it. Because this type is embedded in many locations, updates to this type
|
||||||
|
// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.
|
||||||
|
//
|
||||||
|
// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
|
||||||
|
// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
|
||||||
// +structType=atomic
|
// +structType=atomic
|
||||||
message LocalObjectReference {
|
message LocalObjectReference {
|
||||||
// Name of the referent.
|
// Name of the referent.
|
||||||
// This field is effectively required, but due to backwards compatibility is
|
// This field is effectively required, but due to backwards compatibility is
|
||||||
// allowed to be empty. Instances of this type with an empty value here are
|
// allowed to be empty. Instances of this type with an empty value here are
|
||||||
// almost certainly wrong.
|
// almost certainly wrong.
|
||||||
// TODO: Add other useful fields. apiVersion, kind, uid?
|
|
||||||
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
// +optional
|
// +optional
|
||||||
// +default=""
|
// +default=""
|
||||||
@ -6323,6 +6333,20 @@ message TopologySpreadConstraint {
|
|||||||
|
|
||||||
// TypedLocalObjectReference contains enough information to let you locate the
|
// TypedLocalObjectReference contains enough information to let you locate the
|
||||||
// typed referenced object inside the same namespace.
|
// typed referenced object inside the same namespace.
|
||||||
|
// ---
|
||||||
|
// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
|
||||||
|
// 1. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular
|
||||||
|
// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
|
||||||
|
// Those cannot be well described when embedded.
|
||||||
|
// 2. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
|
||||||
|
// 3. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity
|
||||||
|
// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple
|
||||||
|
// and the version of the actual struct is irrelevant.
|
||||||
|
// 4. We cannot easily change it. Because this type is embedded in many locations, updates to this type
|
||||||
|
// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.
|
||||||
|
//
|
||||||
|
// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
|
||||||
|
// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
|
||||||
// +structType=atomic
|
// +structType=atomic
|
||||||
message TypedLocalObjectReference {
|
message TypedLocalObjectReference {
|
||||||
// APIGroup is the group for the resource being referenced.
|
// APIGroup is the group for the resource being referenced.
|
||||||
|
@ -6779,13 +6779,23 @@ type ObjectReference struct {
|
|||||||
|
|
||||||
// LocalObjectReference contains enough information to let you locate the
|
// LocalObjectReference contains enough information to let you locate the
|
||||||
// referenced object inside the same namespace.
|
// referenced object inside the same namespace.
|
||||||
|
// ---
|
||||||
|
// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
|
||||||
|
// 1. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular
|
||||||
|
// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
|
||||||
|
// Those cannot be well described when embedded.
|
||||||
|
// 2. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
|
||||||
|
// 3. We cannot easily change it. Because this type is embedded in many locations, updates to this type
|
||||||
|
// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.
|
||||||
|
//
|
||||||
|
// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
|
||||||
|
// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
|
||||||
// +structType=atomic
|
// +structType=atomic
|
||||||
type LocalObjectReference struct {
|
type LocalObjectReference struct {
|
||||||
// Name of the referent.
|
// Name of the referent.
|
||||||
// This field is effectively required, but due to backwards compatibility is
|
// This field is effectively required, but due to backwards compatibility is
|
||||||
// allowed to be empty. Instances of this type with an empty value here are
|
// allowed to be empty. Instances of this type with an empty value here are
|
||||||
// almost certainly wrong.
|
// almost certainly wrong.
|
||||||
// TODO: Add other useful fields. apiVersion, kind, uid?
|
|
||||||
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
// +optional
|
// +optional
|
||||||
// +default=""
|
// +default=""
|
||||||
@ -6796,6 +6806,20 @@ type LocalObjectReference struct {
|
|||||||
|
|
||||||
// TypedLocalObjectReference contains enough information to let you locate the
|
// TypedLocalObjectReference contains enough information to let you locate the
|
||||||
// typed referenced object inside the same namespace.
|
// typed referenced object inside the same namespace.
|
||||||
|
// ---
|
||||||
|
// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
|
||||||
|
// 1. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular
|
||||||
|
// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
|
||||||
|
// Those cannot be well described when embedded.
|
||||||
|
// 2. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
|
||||||
|
// 3. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity
|
||||||
|
// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple
|
||||||
|
// and the version of the actual struct is irrelevant.
|
||||||
|
// 4. We cannot easily change it. Because this type is embedded in many locations, updates to this type
|
||||||
|
// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.
|
||||||
|
//
|
||||||
|
// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
|
||||||
|
// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
|
||||||
// +structType=atomic
|
// +structType=atomic
|
||||||
type TypedLocalObjectReference struct {
|
type TypedLocalObjectReference struct {
|
||||||
// APIGroup is the group for the resource being referenced.
|
// APIGroup is the group for the resource being referenced.
|
||||||
|
Loading…
Reference in New Issue
Block a user