// Attributes is an interface used by AdmissionController to get information about a request
// that is used to make an admission decision.
typeAttributesinterface{
// GetName returns the name of the object as presented in the request. On a CREATE operation, the client
// may omit name and rely on the server to generate the name. If that is the case, this method will return
// the empty string
GetName()string
// GetNamespace is the namespace associated with the request (if any)
GetNamespace()string
// GetResource is the name of the resource being requested. This is not the kind. For example: pods
GetResource()schema.GroupVersionResource
// GetSubresource is the name of the subresource being requested. This is a different resource, scoped to the parent resource, but it may have a different kind.
// For instance, /pods has the resource "pods" and the kind "Pod", while /pods/foo/status has the resource "pods", the sub resource "status", and the kind "Pod"
// (because status operates on pods). The binding resource for a pod though may be /pods/foo/binding, which has resource "pods", subresource "binding", and kind "Binding".
GetSubresource()string
// GetOperation is the operation being performed
GetOperation()Operation
// IsDryRun indicates that modifications will definitely not be persisted for this request. This is to prevent
// admission controllers with side effects and a method of reconciliation from being overwhelmed.
// However, a value of false for this does not mean that the modification will be persisted, because it
// could still be rejected by a subsequent validation step.
IsDryRun()bool
// GetObject is the object from the incoming request prior to default values being applied
GetObject()runtime.Object
// GetOldObject is the existing object. Only populated for UPDATE requests.
GetOldObject()runtime.Object
// GetKind is the type of object being manipulated. For example: Pod
GetKind()schema.GroupVersionKind
// GetUserInfo is information about the requesting user
GetUserInfo()user.Info
// AddAnnotation sets annotation according to key-value pair. The key should be qualified, e.g., podsecuritypolicy.admission.k8s.io/admit-policy, where
// "podsecuritypolicy" is the name of the plugin, "admission.k8s.io" is the name of the organization, "admit-policy" is the key name.
// An error is returned if the format of key is invalid. When trying to overwrite annotation with a new value, an error is returned.
// Both ValidationInterface and MutationInterface are allowed to add Annotations.