Commit 8e63473d authored by Dr. Stefan Schimanski's avatar Dr. Stefan Schimanski

admission api: cut off api from k8s.io/apiserver

This caused an import cycle: api -> apiserver -> api Fixes https://github.com/kubernetes/kubernetes/issues/51212
parent 625eb9ab
......@@ -19,7 +19,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
)
......
......@@ -19,7 +19,6 @@ package admission
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/apis/authentication"
)
......@@ -51,7 +50,7 @@ type AdmissionReviewSpec struct {
// OldObject is the existing object. Only populated for UPDATE requests.
OldObject runtime.Object
// Operation is the operation being performed
Operation admission.Operation
Operation Operation
// Resource is the name of the resource being requested. This is not the kind. For example: pods
Resource metav1.GroupVersionResource
// SubResource is the name of the subresource being requested. This is a different resource, scoped to the parent
......@@ -73,3 +72,14 @@ type AdmissionReviewStatus struct {
// +optional
Result *metav1.Status
}
// Operation is the type of resource operation being checked for admission control
type Operation string
// Operation constants
const (
Create Operation = "CREATE"
Update Operation = "UPDATE"
Delete Operation = "DELETE"
Connect Operation = "CONNECT"
)
......@@ -51,7 +51,7 @@ func NewAdmissionReview(attr admission.Attributes) admissionv1alpha1.AdmissionRe
Version: gvr.Version,
},
SubResource: attr.GetSubresource(),
Operation: attr.GetOperation(),
Operation: admissionv1alpha1.Operation(attr.GetOperation()),
Object: runtime.RawExtension{
Object: attr.GetObject(),
},
......
......@@ -25,7 +25,6 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
pkg_admission "k8s.io/apiserver/pkg/admission"
admission "k8s.io/kubernetes/pkg/apis/admission"
unsafe "unsafe"
)
......@@ -85,7 +84,7 @@ func autoConvert_v1alpha1_AdmissionReviewSpec_To_admission_AdmissionReviewSpec(i
if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.OldObject, &out.OldObject, s); err != nil {
return err
}
out.Operation = pkg_admission.Operation(in.Operation)
out.Operation = admission.Operation(in.Operation)
out.Name = in.Name
out.Namespace = in.Namespace
out.Resource = in.Resource
......@@ -112,7 +111,7 @@ func autoConvert_admission_AdmissionReviewSpec_To_v1alpha1_AdmissionReviewSpec(i
if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.OldObject, &out.OldObject, s); err != nil {
return err
}
out.Operation = pkg_admission.Operation(in.Operation)
out.Operation = v1alpha1.Operation(in.Operation)
out.Resource = in.Resource
out.SubResource = in.SubResource
// TODO: Inefficient conversion - can we improve it?
......
......@@ -15,10 +15,6 @@
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{
"ImportPath": "github.com/davecgh/go-spew/spew",
"Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8"
},
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
......@@ -27,10 +23,6 @@
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/ghodss/yaml",
"Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee"
},
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
......@@ -145,10 +137,6 @@
{
"ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
},
{
"ImportPath": "gopkg.in/yaml.v2",
"Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77"
}
]
}
......@@ -25,7 +25,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
)
......
......@@ -37,8 +37,6 @@ import math "math"
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
import k8s_io_apiserver_pkg_admission "k8s.io/apiserver/pkg/admission"
import strings "strings"
import reflect "reflect"
......@@ -605,7 +603,7 @@ func (m *AdmissionReviewSpec) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Operation = k8s_io_apiserver_pkg_admission.Operation(dAtA[iNdEx:postIndex])
m.Operation = Operation(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 5:
if wireType != 2 {
......@@ -988,47 +986,46 @@ func init() {
}
var fileDescriptorGenerated = []byte{
// 663 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x4b, 0x1c, 0x49,
0x14, 0xc7, 0xa7, 0x77, 0xc7, 0x71, 0xa6, 0x5c, 0xd6, 0xdd, 0x92, 0x85, 0x46, 0xd8, 0x56, 0x3c,
0x2c, 0x2e, 0x68, 0x35, 0x1a, 0x23, 0x21, 0x90, 0x83, 0x03, 0x49, 0x08, 0x01, 0x0d, 0xa5, 0x86,
0x90, 0x84, 0x40, 0x4d, 0xcf, 0x73, 0xa6, 0x32, 0xd3, 0x55, 0x4d, 0x55, 0xf5, 0x98, 0xdc, 0xf2,
0x27, 0xe4, 0x90, 0x7f, 0x29, 0xe0, 0x25, 0xe0, 0xd1, 0x93, 0xc4, 0xc9, 0x7f, 0x91, 0x53, 0xe8,
0xea, 0xea, 0x6e, 0x1d, 0x35, 0x89, 0x39, 0xcd, 0xbc, 0x1f, 0xdf, 0x4f, 0xbd, 0x7a, 0xf5, 0x5e,
0xa3, 0x07, 0x83, 0x3b, 0x9a, 0x70, 0x19, 0x0e, 0xd2, 0x0e, 0x28, 0x01, 0x06, 0x74, 0x38, 0x02,
0xd1, 0x95, 0x2a, 0x74, 0x01, 0x96, 0xf0, 0x90, 0x75, 0x63, 0xae, 0x35, 0x97, 0x22, 0x1c, 0xad,
0xb1, 0x61, 0xd2, 0x67, 0x6b, 0x61, 0x0f, 0x04, 0x28, 0x66, 0xa0, 0x4b, 0x12, 0x25, 0x8d, 0xc4,
0xff, 0xe6, 0xe9, 0x84, 0x25, 0x9c, 0x94, 0xe9, 0xa4, 0x48, 0x9f, 0x5f, 0xed, 0x71, 0xd3, 0x4f,
0x3b, 0x24, 0x92, 0x71, 0xd8, 0x93, 0x3d, 0x19, 0x5a, 0x55, 0x27, 0x3d, 0xb0, 0x96, 0x35, 0xec,
0xbf, 0x9c, 0x36, 0xbf, 0x72, 0xfe, 0xf0, 0xd4, 0xf4, 0x41, 0x18, 0x1e, 0x31, 0x93, 0x57, 0x30,
0x79, 0xf6, 0xfc, 0x46, 0x95, 0x1d, 0xb3, 0xa8, 0xcf, 0x05, 0xa8, 0xb7, 0x61, 0x32, 0xe8, 0x65,
0x0e, 0x1d, 0xc6, 0x60, 0xd8, 0x55, 0xaa, 0xf0, 0x3a, 0x95, 0x4a, 0x85, 0xe1, 0x31, 0x5c, 0x12,
0x6c, 0xfe, 0x48, 0xa0, 0xa3, 0x3e, 0xc4, 0xec, 0x92, 0xee, 0xd6, 0x75, 0xba, 0xd4, 0xf0, 0x61,
0xc8, 0x85, 0xd1, 0x46, 0x4d, 0x8a, 0x96, 0x3e, 0x7a, 0x68, 0x76, 0xab, 0xe8, 0x23, 0x85, 0x11,
0x87, 0x43, 0xbc, 0x87, 0xea, 0x3a, 0x81, 0xc8, 0xf7, 0x16, 0xbd, 0xe5, 0x99, 0xf5, 0x75, 0xf2,
0xdd, 0x96, 0x93, 0x09, 0xf5, 0x6e, 0x02, 0x51, 0xfb, 0x8f, 0xa3, 0xd3, 0x85, 0xda, 0xf8, 0x74,
0xa1, 0x9e, 0x59, 0xd4, 0xd2, 0xf0, 0x4b, 0xd4, 0xd0, 0x86, 0x99, 0x54, 0xfb, 0xbf, 0x59, 0xee,
0xc6, 0x0d, 0xb9, 0x56, 0xdb, 0xfe, 0xd3, 0x91, 0x1b, 0xb9, 0x4d, 0x1d, 0x73, 0xe9, 0xd3, 0x14,
0x9a, 0xbb, 0xa2, 0x12, 0xfc, 0x0c, 0xd5, 0x07, 0x5c, 0x74, 0xdd, 0x5d, 0x36, 0xcf, 0x9d, 0x59,
0xf6, 0x88, 0x24, 0x83, 0x5e, 0xe6, 0xd0, 0x24, 0x7b, 0x42, 0x32, 0x5a, 0x23, 0x0f, 0x95, 0x4c,
0x93, 0xa7, 0xa0, 0x32, 0xd6, 0x63, 0x2e, 0xba, 0xd5, 0x7d, 0x32, 0x8b, 0x5a, 0x22, 0xde, 0x47,
0x0d, 0xd9, 0x79, 0x0d, 0x91, 0x71, 0xf7, 0x59, 0xbd, 0x96, 0xed, 0xde, 0x8d, 0x50, 0x76, 0x78,
0xff, 0x8d, 0x01, 0x91, 0x61, 0xab, 0x8b, 0xec, 0x58, 0x08, 0x75, 0x30, 0xfc, 0x0a, 0xb5, 0xe4,
0xb0, 0x9b, 0x3b, 0xfd, 0xdf, 0x7f, 0x85, 0xfc, 0xb7, 0x23, 0xb7, 0x76, 0x0a, 0x0e, 0xad, 0x90,
0xf8, 0x05, 0x6a, 0xc9, 0x24, 0x1b, 0x01, 0x2e, 0x85, 0x5f, 0x5f, 0xf4, 0x96, 0x5b, 0xed, 0x7b,
0xa5, 0xa0, 0x08, 0x7c, 0x3d, 0x5d, 0x58, 0xae, 0xa6, 0x49, 0x83, 0x1a, 0x81, 0xca, 0x27, 0xbd,
0x7c, 0xa7, 0x32, 0x97, 0x56, 0x3c, 0xbc, 0x88, 0xea, 0x82, 0xc5, 0xe0, 0x4f, 0x59, 0x6e, 0xd9,
0xb5, 0x6d, 0x16, 0x03, 0xb5, 0x11, 0x1c, 0xa2, 0x56, 0xf6, 0xab, 0x13, 0x16, 0x81, 0xdf, 0xb0,
0x69, 0x65, 0xbd, 0xdb, 0x45, 0x80, 0x56, 0x39, 0xb8, 0x8f, 0x9a, 0x0a, 0xb4, 0x4c, 0x55, 0x04,
0xfe, 0xb4, 0x6d, 0xc7, 0xdd, 0x9b, 0x3f, 0x22, 0x75, 0x84, 0xf6, 0x5f, 0xee, 0xac, 0x66, 0xe1,
0xa1, 0x25, 0x1d, 0xdf, 0x46, 0x33, 0x3a, 0xed, 0x14, 0x01, 0xbf, 0x69, 0x8b, 0x9b, 0x73, 0x82,
0x99, 0xdd, 0x2a, 0x44, 0xcf, 0xe7, 0xe1, 0x3d, 0xd4, 0x4c, 0x35, 0xa8, 0x47, 0xe2, 0x40, 0xfa,
0x2d, 0x5b, 0xe0, 0x7f, 0x17, 0x26, 0xfb, 0xc2, 0x67, 0x25, 0x2b, 0x6c, 0xdf, 0x65, 0x57, 0xc5,
0x14, 0x1e, 0x5a, 0x92, 0x96, 0x3e, 0x78, 0xe8, 0x9f, 0x2b, 0x37, 0x00, 0xff, 0x8f, 0xa6, 0xd9,
0x70, 0x28, 0x0f, 0x21, 0x1f, 0xea, 0x66, 0x7b, 0xd6, 0x61, 0xa6, 0xb7, 0x72, 0x37, 0x2d, 0xe2,
0xf8, 0xc9, 0xc4, 0xca, 0xad, 0xfc, 0x5c, 0xe7, 0xdc, 0xaa, 0xa1, 0x6c, 0x3a, 0x29, 0xe8, 0x74,
0x68, 0x8a, 0x35, 0x6b, 0x93, 0xa3, 0xb3, 0xa0, 0x76, 0x7c, 0x16, 0xd4, 0x4e, 0xce, 0x82, 0xda,
0xbb, 0x71, 0xe0, 0x1d, 0x8d, 0x03, 0xef, 0x78, 0x1c, 0x78, 0x27, 0xe3, 0xc0, 0xfb, 0x3c, 0x0e,
0xbc, 0xf7, 0x5f, 0x82, 0xda, 0xf3, 0x66, 0xb1, 0xc4, 0xdf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x42,
0x53, 0xac, 0x65, 0xf7, 0x05, 0x00, 0x00,
// 645 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x4f, 0x13, 0x41,
0x14, 0xc7, 0xbb, 0x5a, 0x4a, 0x3b, 0x18, 0xd1, 0x21, 0x26, 0x1b, 0x12, 0x17, 0xc2, 0xc1, 0x60,
0x02, 0xb3, 0x01, 0x91, 0x18, 0xe3, 0x85, 0x26, 0x6a, 0x8c, 0x09, 0x98, 0x01, 0x8c, 0x31, 0xc6,
0x64, 0xba, 0x7d, 0xb4, 0x63, 0xbb, 0x33, 0x9b, 0x9d, 0xd9, 0xa2, 0x37, 0xff, 0x04, 0x0f, 0xfe,
0x1d, 0xfe, 0x17, 0x26, 0x1c, 0x39, 0x72, 0x22, 0x52, 0xff, 0x0b, 0x4f, 0x66, 0x67, 0x67, 0x77,
0x4b, 0xa1, 0x2a, 0x9e, 0xda, 0xf7, 0xe3, 0xfb, 0x99, 0xf7, 0xde, 0xbc, 0x59, 0xf4, 0xac, 0xf7,
0x48, 0x11, 0x2e, 0xfd, 0x5e, 0xd2, 0x82, 0x58, 0x80, 0x06, 0xe5, 0x0f, 0x40, 0xb4, 0x65, 0xec,
0xdb, 0x00, 0x8b, 0xb8, 0xcf, 0xda, 0x21, 0x57, 0x8a, 0x4b, 0xe1, 0x0f, 0xd6, 0x58, 0x3f, 0xea,
0xb2, 0x35, 0xbf, 0x03, 0x02, 0x62, 0xa6, 0xa1, 0x4d, 0xa2, 0x58, 0x6a, 0x89, 0xef, 0x66, 0xe9,
0x84, 0x45, 0x9c, 0x14, 0xe9, 0x24, 0x4f, 0x9f, 0x5f, 0xed, 0x70, 0xdd, 0x4d, 0x5a, 0x24, 0x90,
0xa1, 0xdf, 0x91, 0x1d, 0xe9, 0x1b, 0x55, 0x2b, 0x39, 0x30, 0x96, 0x31, 0xcc, 0xbf, 0x8c, 0x36,
0xbf, 0x32, 0x7a, 0x78, 0xa2, 0xbb, 0x20, 0x34, 0x0f, 0x98, 0xce, 0x2a, 0x18, 0x3f, 0x7b, 0x7e,
0xa3, 0xcc, 0x0e, 0x59, 0xd0, 0xe5, 0x02, 0xe2, 0x4f, 0x7e, 0xd4, 0xeb, 0xa4, 0x0e, 0xe5, 0x87,
0xa0, 0xd9, 0x65, 0x2a, 0x7f, 0x92, 0x2a, 0x4e, 0x84, 0xe6, 0x21, 0x5c, 0x10, 0x6c, 0xfe, 0x4d,
0xa0, 0x82, 0x2e, 0x84, 0xec, 0x82, 0xee, 0xc1, 0x24, 0x5d, 0xa2, 0x79, 0xdf, 0xe7, 0x42, 0x2b,
0x1d, 0x8f, 0x8b, 0x96, 0xbe, 0x3b, 0x68, 0x76, 0x2b, 0x9f, 0x23, 0x85, 0x01, 0x87, 0x43, 0xbc,
0x87, 0xaa, 0x2a, 0x82, 0xc0, 0x75, 0x16, 0x9d, 0xe5, 0x99, 0xf5, 0x75, 0xf2, 0xc7, 0x91, 0x93,
0x31, 0xf5, 0x6e, 0x04, 0x41, 0xf3, 0xc6, 0xd1, 0xe9, 0x42, 0x65, 0x78, 0xba, 0x50, 0x4d, 0x2d,
0x6a, 0x68, 0xf8, 0x1d, 0xaa, 0x29, 0xcd, 0x74, 0xa2, 0xdc, 0x6b, 0x86, 0xbb, 0x71, 0x45, 0xae,
0xd1, 0x36, 0x6f, 0x5a, 0x72, 0x2d, 0xb3, 0xa9, 0x65, 0x2e, 0x7d, 0x9b, 0x42, 0x73, 0x97, 0x54,
0x82, 0xdf, 0xa0, 0x6a, 0x8f, 0x8b, 0xb6, 0xed, 0x65, 0x73, 0xe4, 0xcc, 0x62, 0x46, 0x24, 0xea,
0x75, 0x52, 0x87, 0x22, 0xe9, 0x15, 0x92, 0xc1, 0x1a, 0x79, 0x1e, 0xcb, 0x24, 0x7a, 0x0d, 0x71,
0xca, 0x7a, 0xc9, 0x45, 0xbb, 0xec, 0x27, 0xb5, 0xa8, 0x21, 0xe2, 0x7d, 0x54, 0x93, 0xad, 0x0f,
0x10, 0x68, 0xdb, 0xcf, 0xea, 0x44, 0xb6, 0xbd, 0x37, 0x42, 0xd9, 0xe1, 0xd3, 0x8f, 0x1a, 0x44,
0x8a, 0x2d, 0x1b, 0xd9, 0x31, 0x10, 0x6a, 0x61, 0xf8, 0x3d, 0x6a, 0xc8, 0x7e, 0x3b, 0x73, 0xba,
0xd7, 0xff, 0x87, 0x7c, 0xdb, 0x92, 0x1b, 0x3b, 0x39, 0x87, 0x96, 0x48, 0xfc, 0x04, 0x35, 0x64,
0x94, 0xae, 0x00, 0x97, 0xc2, 0xad, 0x2e, 0x3a, 0xcb, 0x8d, 0xa6, 0x57, 0x08, 0xf2, 0xc0, 0xaf,
0x51, 0x83, 0x96, 0x02, 0xbc, 0x88, 0xaa, 0x82, 0x85, 0xe0, 0x4e, 0x19, 0x61, 0x31, 0x96, 0x6d,
0x16, 0x02, 0x35, 0x11, 0xec, 0xa3, 0x46, 0xfa, 0xab, 0x22, 0x16, 0x80, 0x5b, 0x33, 0x69, 0x45,
0x41, 0xdb, 0x79, 0x80, 0x96, 0x39, 0xb8, 0x8b, 0xea, 0x31, 0x28, 0x99, 0xc4, 0x01, 0xb8, 0xd3,
0xa6, 0xdf, 0xc7, 0x57, 0xbf, 0x25, 0x6a, 0x09, 0xcd, 0x5b, 0xf6, 0xac, 0x7a, 0xee, 0xa1, 0x05,
0x1d, 0x3f, 0x44, 0x33, 0x2a, 0x69, 0xe5, 0x01, 0xb7, 0x6e, 0x8a, 0x9b, 0xb3, 0x82, 0x99, 0xdd,
0x32, 0x44, 0x47, 0xf3, 0xf0, 0x1e, 0xaa, 0x27, 0x0a, 0xe2, 0x17, 0xe2, 0x40, 0xba, 0x0d, 0x53,
0xe0, 0xbd, 0x73, 0xab, 0x7b, 0xee, 0xbb, 0x91, 0x16, 0xb6, 0x6f, 0xb3, 0xcb, 0x62, 0x72, 0x0f,
0x2d, 0x48, 0x4b, 0x5f, 0x1d, 0x74, 0xe7, 0xd2, 0x15, 0xc7, 0xf7, 0xd1, 0x34, 0xeb, 0xf7, 0xe5,
0x21, 0x64, 0x5b, 0x5b, 0x6f, 0xce, 0x5a, 0xcc, 0xf4, 0x56, 0xe6, 0xa6, 0x79, 0x1c, 0xbf, 0x1a,
0x7b, 0x53, 0x2b, 0xff, 0x36, 0x39, 0xfb, 0x96, 0x50, 0xba, 0x7e, 0x14, 0x54, 0xd2, 0xd7, 0xf9,
0x3b, 0x6a, 0x92, 0xa3, 0x33, 0xaf, 0x72, 0x7c, 0xe6, 0x55, 0x4e, 0xce, 0xbc, 0xca, 0xe7, 0xa1,
0xe7, 0x1c, 0x0d, 0x3d, 0xe7, 0x78, 0xe8, 0x39, 0x27, 0x43, 0xcf, 0xf9, 0x31, 0xf4, 0x9c, 0x2f,
0x3f, 0xbd, 0xca, 0xdb, 0x7a, 0xfe, 0x4a, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x57, 0xa7,
0x50, 0xd8, 0x05, 0x00, 0x00,
}
......@@ -20,7 +20,6 @@ import (
authenticationv1 "k8s.io/api/authentication/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
......@@ -48,7 +47,7 @@ type AdmissionReviewSpec struct {
// +optional
OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,3,opt,name=oldObject"`
// Operation is the operation being performed
Operation admission.Operation `json:"operation,omitempty" protobuf:"bytes,4,opt,name=operation"`
Operation Operation `json:"operation,omitempty" protobuf:"bytes,4,opt,name=operation"`
// Name is 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.
// +optional
......@@ -78,3 +77,14 @@ type AdmissionReviewStatus struct {
// +optional
Result *metav1.Status `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"`
}
// Operation is the type of resource operation being checked for admission control
type Operation string
// Operation constants
const (
Create Operation = "CREATE"
Update Operation = "UPDATE"
Delete Operation = "DELETE"
Connect Operation = "CONNECT"
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment