mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 01:06:27 +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
|
||||
// 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
|
||||
message LocalObjectReference {
|
||||
// Name of the referent.
|
||||
// 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
|
||||
// almost certainly wrong.
|
||||
// TODO: Add other useful fields. apiVersion, kind, uid?
|
||||
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
// +optional
|
||||
// +default=""
|
||||
@ -6323,6 +6333,20 @@ message TopologySpreadConstraint {
|
||||
|
||||
// TypedLocalObjectReference contains enough information to let you locate the
|
||||
// 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
|
||||
message TypedLocalObjectReference {
|
||||
// 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
|
||||
// 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
|
||||
type LocalObjectReference struct {
|
||||
// Name of the referent.
|
||||
// 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
|
||||
// almost certainly wrong.
|
||||
// TODO: Add other useful fields. apiVersion, kind, uid?
|
||||
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
// +optional
|
||||
// +default=""
|
||||
@ -6796,6 +6806,20 @@ type LocalObjectReference struct {
|
||||
|
||||
// TypedLocalObjectReference contains enough information to let you locate the
|
||||
// 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
|
||||
type TypedLocalObjectReference struct {
|
||||
// APIGroup is the group for the resource being referenced.
|
||||
|
Loading…
Reference in New Issue
Block a user