diff --git a/adapter/internal/oasparser/envoyconf/internal_dtos.go b/adapter/internal/oasparser/envoyconf/internal_dtos.go index 27fe51132..9e05b9810 100644 --- a/adapter/internal/oasparser/envoyconf/internal_dtos.go +++ b/adapter/internal/oasparser/envoyconf/internal_dtos.go @@ -19,7 +19,7 @@ package envoyconf import ( "github.com/wso2/apk/adapter/internal/oasparser/model" - dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" ) // routeCreateParams is the DTO used to provide information to the envoy route create function @@ -41,7 +41,7 @@ type routeCreateParams struct { isDefaultVersion bool createDefaultPath bool apiLevelRateLimitPolicy *model.RateLimitPolicy - apiProperties []dpv1alpha2.Property + apiProperties []dpv1beta1.Property environment string envType string } diff --git a/adapter/internal/oasparser/envoyconf/routes_with_clusters.go b/adapter/internal/oasparser/envoyconf/routes_with_clusters.go index dc2b983c3..34cbfa17b 100644 --- a/adapter/internal/oasparser/envoyconf/routes_with_clusters.go +++ b/adapter/internal/oasparser/envoyconf/routes_with_clusters.go @@ -52,7 +52,7 @@ import ( logging "github.com/wso2/apk/adapter/internal/logging" "github.com/wso2/apk/adapter/internal/oasparser/constants" "github.com/wso2/apk/adapter/internal/oasparser/model" - dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "google.golang.org/protobuf/proto" gwapiv1 "sigs.k8s.io/gateway-api/apis/v1" ) @@ -1555,7 +1555,7 @@ func getUpgradeConfig(apiType string) []*routev3.RouteAction_UpgradeConfig { return upgradeConfig } -func getAPIProperties(apiPropertiesConfig []dpv1alpha2.Property) string { +func getAPIProperties(apiPropertiesConfig []dpv1beta1.Property) string { var apiProperties = make(map[string]string) for _, val := range apiPropertiesConfig { apiProperties[val.Name] = val.Value diff --git a/adapter/internal/oasparser/envoyconf/routes_with_clusters_test.go b/adapter/internal/oasparser/envoyconf/routes_with_clusters_test.go index a9697dacd..3f64b33f9 100644 --- a/adapter/internal/oasparser/envoyconf/routes_with_clusters_test.go +++ b/adapter/internal/oasparser/envoyconf/routes_with_clusters_test.go @@ -30,7 +30,7 @@ import ( "github.com/wso2/apk/adapter/internal/operator/synchronizer" operatorutils "github.com/wso2/apk/adapter/internal/operator/utils" "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" - "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" k8types "k8s.io/apimachinery/pkg/types" gwapiv1 "sigs.k8s.io/gateway-api/apis/v1" @@ -39,16 +39,16 @@ import ( func TestCreateRoutesWithClustersWithExactAndRegularExpressionRules(t *testing.T) { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "test-api-2", }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: "test-api-2", APIVersion: "2.0.0", BasePath: "/test-api/2.0.0", - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ "test-api-2-prod-http-route", @@ -211,16 +211,16 @@ func TestExtractAPIDetailsFromHTTPRouteForSpecificEnvironment(t *testing.T) { func generateSampleAPI(apiName string, apiVersion string, basePath string) synchronizer.APIState { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: apiName, }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: apiName, APIVersion: apiVersion, BasePath: basePath, - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ apiName + "-prod-http-route", @@ -274,16 +274,16 @@ func generateSampleAPI(apiName string, apiVersion string, basePath string) synch // TODO: Fix this test case func TestCreateRoutesWithClustersWithMultiplePathPrefixRules(t *testing.T) { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "test-api-1", }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: "test-api", APIVersion: "1.0.0", BasePath: "/test-api/1.0.0", - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ "test-api-1-prod-http-route", @@ -423,16 +423,16 @@ func TestCreateRoutesWithClustersWithMultiplePathPrefixRules(t *testing.T) { func TestCreateRoutesWithClustersWithBackendTLSConfigs(t *testing.T) { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "test-api-3", }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: "test-api-3", APIVersion: "1.0.0", BasePath: "/test-api-3/1.0.0", - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ "test-api-3-prod-http-route", @@ -546,16 +546,16 @@ func TestCreateHealthEndpoint(t *testing.T) { func TestCreateRoutesWithClustersDifferentBackendRefs(t *testing.T) { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "test-api-different-backendrefs", }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: "test-api-different-backendrefs", APIVersion: "1.0.0", BasePath: "/test-api-different-backendrefs/1.0.0", - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ "test-api-different-backendrefs-prod-http-route", @@ -638,16 +638,16 @@ func TestCreateRoutesWithClustersDifferentBackendRefs(t *testing.T) { func TestCreateRoutesWithClustersSameBackendRefs(t *testing.T) { apiState := synchronizer.APIState{} - apiDefinition := v1alpha2.API{ + apiDefinition := v1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "test-api-same-backendrefs", }, - Spec: v1alpha2.APISpec{ + Spec: v1beta1.APISpec{ APIName: "test-api-same-backendrefs", APIVersion: "1.0.0", BasePath: "/test-api-same-backendrefs/1.0.0", - Production: []v1alpha2.EnvConfig{ + Production: []v1beta1.EnvConfig{ { RouteRefs: []string{ "test-api-same-backendrefs-prod-http-route", diff --git a/adapter/internal/oasparser/model/adapter_internal_api.go b/adapter/internal/oasparser/model/adapter_internal_api.go index 0e698a741..50352a987 100644 --- a/adapter/internal/oasparser/model/adapter_internal_api.go +++ b/adapter/internal/oasparser/model/adapter_internal_api.go @@ -34,6 +34,7 @@ import ( "github.com/wso2/apk/adapter/internal/operator/utils" dpv1alpha1 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "golang.org/x/exp/maps" "k8s.io/apimachinery/pkg/types" gwapiv1 "sigs.k8s.io/gateway-api/apis/v1" @@ -73,7 +74,7 @@ type AdapterInternalAPI struct { apiDefinitionFile []byte apiDefinitionEndpoint string subscriptionValidation bool - APIProperties []dpv1alpha2.Property + APIProperties []dpv1beta1.Property // GraphQLSchema string // GraphQLComplexities GraphQLComplexityYaml IsSystemAPI bool diff --git a/adapter/internal/oasparser/model/http_route.go b/adapter/internal/oasparser/model/http_route.go index 58bdeebde..1bffff0f5 100644 --- a/adapter/internal/oasparser/model/http_route.go +++ b/adapter/internal/oasparser/model/http_route.go @@ -24,6 +24,7 @@ import ( "github.com/wso2/apk/adapter/internal/operator/utils" dpv1alpha1 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "k8s.io/apimachinery/pkg/types" gwapiv1 "sigs.k8s.io/gateway-api/apis/v1" ) @@ -309,7 +310,7 @@ func getAllowedOperations(httpMethod *gwapiv1.HTTPMethod, policies OperationPoli } // SetInfoAPICR populates ID, ApiType, Version and XWso2BasePath of adapterInternalAPI. -func (swagger *AdapterInternalAPI) SetInfoAPICR(api dpv1alpha2.API) { +func (swagger *AdapterInternalAPI) SetInfoAPICR(api dpv1beta1.API) { swagger.UUID = string(api.ObjectMeta.UID) swagger.title = api.Spec.APIName swagger.apiType = api.Spec.APIType diff --git a/adapter/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml b/adapter/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml index c2a145323..212b5237e 100644 --- a/adapter/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml +++ b/adapter/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml @@ -362,6 +362,184 @@ spec: type: object type: object served: true - storage: true + storage: false subresources: status: {} + - additionalPrinterColumns: + - jsonPath: .spec.apiName + name: API Name + type: string + - jsonPath: .spec.apiVersion + name: Version + type: string + - jsonPath: .spec.basePath + name: BasePath + type: string + - jsonPath: .spec.organization + name: Organization + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: API is the Schema for the apis API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: APISpec defines the desired state of API + properties: + apiName: + description: APIName is the unique name of the API can be used to + uniquely identify an API. + maxLength: 60 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&$\[\]\/]*$ + type: string + apiProperties: + description: APIProperties denotes the custom properties of the API. + items: + description: Property holds key value pair of APIProperties + properties: + name: + type: string + value: + type: string + type: object + nullable: true + type: array + apiType: + description: APIType denotes the type of the API. Possible values + could be REST, GraphQL, GRPC Async + enum: + - REST + - GraphQL + - GRPC + type: string + apiVersion: + description: APIVersion is the version number of the API. + maxLength: 30 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&/$\[\]\s+\/]+$ + type: string + basePath: + description: 'BasePath denotes the basepath of the API. e.g: /pet-store-api/1.0.6' + pattern: ^[/][a-zA-Z0-9~/_.-]*$ + type: string + definitionFileRef: + description: DefinitionFileRef contains the OpenAPI 3 or SDL file + in gzipped format. definition of the API in a ConfigMap. + type: string + definitionPath: + default: /api-definition + description: DefinitionPath contains the path to expose the API definition. + minLength: 1 + type: string + environment: + description: Environment denotes the environment of the API. + nullable: true + type: string + isDefaultVersion: + description: IsDefaultVersion indicates whether this API version should + be used as a default API + type: boolean + organization: + description: Organization denotes the organization. related to the + API + type: string + production: + description: 'Production contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + httpRouteRefs: + description: HTTPRouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - httpRouteRefs + type: object + maxItems: 1 + nullable: true + type: array + sandbox: + description: 'Sandbox contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + httpRouteRefs: + description: HTTPRouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - httpRouteRefs + type: object + maxItems: 1 + nullable: true + type: array + systemAPI: + description: SystemAPI denotes if it is an internal system API. + type: boolean + required: + - apiName + - apiType + - apiVersion + - basePath + - definitionPath + type: object + status: + description: APIStatus defines the observed state of API + properties: + deploymentStatus: + description: DeploymentStatus denotes the deployment status of the + API + properties: + accepted: + description: Accepted represents whether the API is accepted or + not. + type: boolean + events: + description: Events contains a list of events related to the API. + items: + type: string + type: array + message: + description: Message represents a user friendly message that explains + the current state of the API. + type: string + status: + description: Status denotes the state of the API in its lifecycle. + Possible values could be Accepted, Invalid, Deploy etc. + type: string + transitionTime: + description: TransitionTime represents the last known transition + timestamp. + format: date-time + type: string + required: + - accepted + - status + - transitionTime + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} \ No newline at end of file diff --git a/adapter/internal/operator/controllers/dp/api_controller.go b/adapter/internal/operator/controllers/dp/api_controller.go index 4a18a7b58..3b530d933 100644 --- a/adapter/internal/operator/controllers/dp/api_controller.go +++ b/adapter/internal/operator/controllers/dp/api_controller.go @@ -26,6 +26,7 @@ import ( "encoding/json" "errors" "fmt" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "io/ioutil" "reflect" "sort" @@ -119,7 +120,7 @@ type APIReconciler struct { apiPropagationEnabled bool } -// NewAPIController creates a new API controller instance. API Controllers watches for dpv1alpha2.API and gwapiv1b1.HTTPRoute. +// NewAPIController creates a new API controller instance. API Controllers watches for dpv1beta1.API and gwapiv1b1.HTTPRoute. func NewAPIController(mgr manager.Manager, operatorDataStore *synchronizer.OperatorDataStore, statusUpdater *status.UpdateHandler, ch *chan *synchronizer.APIEvent, successChannel *chan synchronizer.SuccessEvent) error { apiReconciler := &APIReconciler{ @@ -141,7 +142,7 @@ func NewAPIController(mgr manager.Manager, operatorDataStore *synchronizer.Opera apiReconciler.apiPropagationEnabled = conf.Adapter.ControlPlane.EnableAPIPropagation predicates := []predicate.Predicate{predicate.NewPredicateFuncs(utils.FilterByNamespaces(conf.Adapter.Operator.Namespaces))} - if err := c.Watch(source.Kind(mgr.GetCache(), &dpv1alpha2.API{}), &handler.EnqueueRequestForObject{}, + if err := c.Watch(source.Kind(mgr.GetCache(), &dpv1beta1.API{}), &handler.EnqueueRequestForObject{}, predicates...); err != nil { loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2611, logging.BLOCKER, "Error watching API resources: %v", err)) return err @@ -270,7 +271,7 @@ func (apiReconciler *APIReconciler) Reconcile(ctx context.Context, req ctrl.Requ applyAllAPIsOnce.Do(apiReconciler.applyStartupAPIs) loggers.LoggerAPKOperator.Infof("Reconciling for API %s", req.NamespacedName.String()) // Check whether the API CR exist, if not consider as a DELETE event. - var apiCR dpv1alpha2.API + var apiCR dpv1beta1.API if err := apiReconciler.client.Get(ctx, req.NamespacedName, &apiCR); err != nil { apiState, found := apiReconciler.ods.GetCachedAPI(req.NamespacedName) if found && k8error.IsNotFound(err) { @@ -337,7 +338,7 @@ func (apiReconciler *APIReconciler) applyStartupAPIs() { // resolveAPIRefs validates following references related to the API // - HTTPRoutes -func (apiReconciler *APIReconciler) resolveAPIRefs(ctx context.Context, api dpv1alpha2.API) (*synchronizer.APIEvent, error) { +func (apiReconciler *APIReconciler) resolveAPIRefs(ctx context.Context, api dpv1beta1.API) (*synchronizer.APIEvent, error) { var prodRouteRefs, sandRouteRefs []string if len(api.Spec.Production) > 0 { prodRouteRefs = api.Spec.Production[0].RouteRefs @@ -544,7 +545,7 @@ func isAPIPropagatable(apiState *synchronizer.APIState) bool { } func (apiReconciler *APIReconciler) resolveGQLRouteRefs(ctx context.Context, gqlRouteRefs []string, - namespace string, api dpv1alpha2.API) (*synchronizer.GQLRouteState, error) { + namespace string, api dpv1beta1.API) (*synchronizer.GQLRouteState, error) { gqlRouteState, err := apiReconciler.concatGQLRoutes(ctx, gqlRouteRefs, namespace, api) if err != nil { return nil, err @@ -554,7 +555,7 @@ func (apiReconciler *APIReconciler) resolveGQLRouteRefs(ctx context.Context, gql } func (apiReconciler *APIReconciler) resolveGRPCRouteRefs(ctx context.Context, grpcRouteRefs []string, - namespace string, api dpv1alpha2.API) (*synchronizer.GRPCRouteState, error) { + namespace string, api dpv1beta1.API) (*synchronizer.GRPCRouteState, error) { grpcRouteState, err := apiReconciler.concatGRPCRoutes(ctx, grpcRouteRefs, namespace, api) if err != nil { return nil, err @@ -567,7 +568,7 @@ func (apiReconciler *APIReconciler) resolveGRPCRouteRefs(ctx context.Context, gr // - Authentications func (apiReconciler *APIReconciler) resolveHTTPRouteRefs(ctx context.Context, httpRouteState *synchronizer.HTTPRouteState, httpRouteRefs []string, namespace string, interceptorServiceMapping map[string]dpv1alpha1.InterceptorService, - api dpv1alpha2.API) (*synchronizer.HTTPRouteState, error) { + api dpv1beta1.API) (*synchronizer.HTTPRouteState, error) { var err error httpRouteState.HTTPRouteCombined, httpRouteState.HTTPRoutePartitions, err = apiReconciler.concatHTTPRoutes(ctx, httpRouteRefs, namespace, api) if err != nil { @@ -582,7 +583,7 @@ func (apiReconciler *APIReconciler) resolveHTTPRouteRefs(ctx context.Context, ht return httpRouteState, err } func (apiReconciler *APIReconciler) concatGRPCRoutes(ctx context.Context, grpcRouteRefs []string, - namespace string, api dpv1alpha2.API) (synchronizer.GRPCRouteState, error) { + namespace string, api dpv1beta1.API) (synchronizer.GRPCRouteState, error) { grpcRouteState := synchronizer.GRPCRouteState{} grpcRoutePartitions := make(map[string]*gwapiv1a2.GRPCRoute) for _, grpcRouteRef := range grpcRouteRefs { @@ -617,7 +618,7 @@ func (apiReconciler *APIReconciler) concatGRPCRoutes(ctx context.Context, grpcRo return grpcRouteState, errors.New("error while resolving backend for grpcroute") } func (apiReconciler *APIReconciler) concatGQLRoutes(ctx context.Context, gqlRouteRefs []string, - namespace string, api dpv1alpha2.API) (synchronizer.GQLRouteState, error) { + namespace string, api dpv1beta1.API) (synchronizer.GQLRouteState, error) { gqlRouteState := synchronizer.GQLRouteState{} gqlRoutePartitions := make(map[string]*dpv1alpha2.GQLRoute) for _, gqlRouteRef := range gqlRouteRefs { @@ -651,7 +652,7 @@ func (apiReconciler *APIReconciler) concatGQLRoutes(ctx context.Context, gqlRout } func (apiReconciler *APIReconciler) concatHTTPRoutes(ctx context.Context, httpRouteRefs []string, - namespace string, api dpv1alpha2.API) (*gwapiv1b1.HTTPRoute, map[string]*gwapiv1b1.HTTPRoute, error) { + namespace string, api dpv1beta1.API) (*gwapiv1b1.HTTPRoute, map[string]*gwapiv1b1.HTTPRoute, error) { var combinedHTTPRoute *gwapiv1b1.HTTPRoute httpRoutePartitions := make(map[string]*gwapiv1b1.HTTPRoute) for _, httpRouteRef := range httpRouteRefs { @@ -672,7 +673,7 @@ func (apiReconciler *APIReconciler) concatHTTPRoutes(ctx context.Context, httpRo } func (apiReconciler *APIReconciler) getAuthenticationsForAPI(ctx context.Context, - api dpv1alpha2.API) (map[string]dpv1alpha2.Authentication, error) { + api dpv1beta1.API) (map[string]dpv1alpha2.Authentication, error) { nameSpacedName := utils.NamespacedName(&api).String() authentications := make(map[string]dpv1alpha2.Authentication) authenticationList := &dpv1alpha2.AuthenticationList{} @@ -689,7 +690,7 @@ func (apiReconciler *APIReconciler) getAuthenticationsForAPI(ctx context.Context } func (apiReconciler *APIReconciler) getRatelimitPoliciesForAPI(ctx context.Context, - api dpv1alpha2.API) (map[string]dpv1alpha1.RateLimitPolicy, error) { + api dpv1beta1.API) (map[string]dpv1alpha1.RateLimitPolicy, error) { nameSpacedName := utils.NamespacedName(&api).String() ratelimitPolicies := make(map[string]dpv1alpha1.RateLimitPolicy) ratelimitPolicyList := &dpv1alpha1.RateLimitPolicyList{} @@ -705,7 +706,7 @@ func (apiReconciler *APIReconciler) getRatelimitPoliciesForAPI(ctx context.Conte return ratelimitPolicies, nil } func (apiReconciler *APIReconciler) getScopesForGRPCRoute(ctx context.Context, - grpcRoute *gwapiv1a2.GRPCRoute, api dpv1alpha2.API) (map[string]dpv1alpha1.Scope, error) { + grpcRoute *gwapiv1a2.GRPCRoute, api dpv1beta1.API) (map[string]dpv1alpha1.Scope, error) { scopes := make(map[string]dpv1alpha1.Scope) for _, rule := range grpcRoute.Spec.Rules { for _, filter := range rule.Filters { @@ -724,7 +725,7 @@ func (apiReconciler *APIReconciler) getScopesForGRPCRoute(ctx context.Context, return scopes, nil } func (apiReconciler *APIReconciler) getScopesForGQLRoute(ctx context.Context, - gqlRoute *dpv1alpha2.GQLRoute, api dpv1alpha2.API) (map[string]dpv1alpha1.Scope, error) { + gqlRoute *dpv1alpha2.GQLRoute, api dpv1beta1.API) (map[string]dpv1alpha1.Scope, error) { scopes := make(map[string]dpv1alpha1.Scope) for _, rule := range gqlRoute.Spec.Rules { for _, filter := range rule.Filters { @@ -744,7 +745,7 @@ func (apiReconciler *APIReconciler) getScopesForGQLRoute(ctx context.Context, } func (apiReconciler *APIReconciler) getScopesForHTTPRoute(ctx context.Context, - httpRoute *gwapiv1b1.HTTPRoute, api dpv1alpha2.API) (map[string]dpv1alpha1.Scope, error) { + httpRoute *gwapiv1b1.HTTPRoute, api dpv1beta1.API) (map[string]dpv1alpha1.Scope, error) { scopes := make(map[string]dpv1alpha1.Scope) for _, rule := range httpRoute.Spec.Rules { for _, filter := range rule.Filters { @@ -766,7 +767,7 @@ func (apiReconciler *APIReconciler) getScopesForHTTPRoute(ctx context.Context, } func (apiReconciler *APIReconciler) getAuthenticationsForResources(ctx context.Context, - api dpv1alpha2.API) (map[string]dpv1alpha2.Authentication, error) { + api dpv1beta1.API) (map[string]dpv1alpha2.Authentication, error) { nameSpacedName := utils.NamespacedName(&api).String() authentications := make(map[string]dpv1alpha2.Authentication) authenticationList := &dpv1alpha2.AuthenticationList{} @@ -783,7 +784,7 @@ func (apiReconciler *APIReconciler) getAuthenticationsForResources(ctx context.C } func (apiReconciler *APIReconciler) getRatelimitPoliciesForResources(ctx context.Context, - api dpv1alpha2.API) (map[string]dpv1alpha1.RateLimitPolicy, error) { + api dpv1beta1.API) (map[string]dpv1alpha1.RateLimitPolicy, error) { nameSpacedName := utils.NamespacedName(&api).String() ratelimitpolicies := make(map[string]dpv1alpha1.RateLimitPolicy) ratelimitPolicyList := &dpv1alpha1.RateLimitPolicyList{} @@ -799,7 +800,7 @@ func (apiReconciler *APIReconciler) getRatelimitPoliciesForResources(ctx context return ratelimitpolicies, nil } -func (apiReconciler *APIReconciler) getAPIPoliciesForAPI(ctx context.Context, api dpv1alpha2.API) (map[string]dpv1alpha2.APIPolicy, error) { +func (apiReconciler *APIReconciler) getAPIPoliciesForAPI(ctx context.Context, api dpv1beta1.API) (map[string]dpv1alpha2.APIPolicy, error) { nameSpacedName := utils.NamespacedName(&api).String() apiPolicies := make(map[string]dpv1alpha2.APIPolicy) apiPolicyList := &dpv1alpha2.APIPolicyList{} @@ -816,7 +817,7 @@ func (apiReconciler *APIReconciler) getAPIPoliciesForAPI(ctx context.Context, ap } func (apiReconciler *APIReconciler) getAPIDefinitionForAPI(ctx context.Context, - apiDefinitionFile, namespace string, api dpv1alpha2.API) ([]byte, error) { + apiDefinitionFile, namespace string, api dpv1beta1.API) ([]byte, error) { configMap := &corev1.ConfigMap{} if err := utils.ResolveRef(ctx, apiReconciler.client, &api, types.NamespacedName{Namespace: namespace, Name: apiDefinitionFile}, true, configMap); err != nil { @@ -833,7 +834,7 @@ func (apiReconciler *APIReconciler) getAPIDefinitionForAPI(ctx context.Context, } func (apiReconciler *APIReconciler) getAPIPoliciesForResources(ctx context.Context, - api dpv1alpha2.API) (map[string]dpv1alpha2.APIPolicy, error) { + api dpv1beta1.API) (map[string]dpv1alpha2.APIPolicy, error) { nameSpacedName := utils.NamespacedName(&api).String() apiPolicies := make(map[string]dpv1alpha2.APIPolicy) apiPolicyList := &dpv1alpha2.APIPolicyList{} @@ -855,7 +856,7 @@ func (apiReconciler *APIReconciler) getAPIPoliciesForResources(ctx context.Conte // - subscription validation func (apiReconciler *APIReconciler) getAPIPolicyChildrenRefs(ctx context.Context, apiPolicies, resourceAPIPolicies map[string]dpv1alpha2.APIPolicy, - api dpv1alpha2.API) (map[string]dpv1alpha1.InterceptorService, map[string]dpv1alpha1.BackendJWT, bool, error) { + api dpv1beta1.API) (map[string]dpv1alpha1.InterceptorService, map[string]dpv1alpha1.BackendJWT, bool, error) { allAPIPolicies := append(maps.Values(apiPolicies), maps.Values(resourceAPIPolicies)...) interceptorServices := make(map[string]dpv1alpha1.InterceptorService) backendJWTs := make(map[string]dpv1alpha1.BackendJWT) @@ -927,7 +928,7 @@ func (apiReconciler *APIReconciler) resolveAuthentications(ctx context.Context, func (apiReconciler *APIReconciler) getResolvedBackendsMapping(ctx context.Context, httpRouteState *synchronizer.HTTPRouteState, interceptorServiceMapping map[string]dpv1alpha1.InterceptorService, - api dpv1alpha2.API) (map[string]*dpv1alpha1.ResolvedBackend, error) { + api dpv1beta1.API) (map[string]*dpv1alpha1.ResolvedBackend, error) { backendMapping := make(map[string]*dpv1alpha1.ResolvedBackend) // Resolve backends in HTTPRoute @@ -1296,7 +1297,7 @@ func (apiReconciler *APIReconciler) getAPIForGQLRoute(ctx context.Context, obj k loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2665, logging.TRIVIAL, "Unexpected object type, bypassing reconciliation: %v", gqlRoute)) return []reconcile.Request{} } - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} if err := apiReconciler.client.List(ctx, apiList, &k8client.ListOptions{ FieldSelector: fields.OneTermEqualSelector(gqlRouteAPIIndex, utils.NamespacedName(gqlRoute).String()), }); err != nil { @@ -1331,7 +1332,7 @@ func (apiReconciler *APIReconciler) getAPIForHTTPRoute(ctx context.Context, obj return []reconcile.Request{} } - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} if err := apiReconciler.client.List(ctx, apiList, &k8client.ListOptions{ FieldSelector: fields.OneTermEqualSelector(httpRouteAPIIndex, utils.NamespacedName(httpRoute).String()), }); err != nil { @@ -1368,7 +1369,7 @@ func (apiReconciler *APIReconciler) getAPIForGRPCRoute(ctx context.Context, obj return []reconcile.Request{} } - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} if err := apiReconciler.client.List(ctx, apiList, &k8client.ListOptions{ FieldSelector: fields.OneTermEqualSelector(grpcRouteAPIIndex, utils.NamespacedName(grpcRoute).String()), @@ -1419,7 +1420,7 @@ func (apiReconciler *APIReconciler) getAPIsForConfigMap(ctx context.Context, obj return requests } - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} err = apiReconciler.client.List(ctx, apiList, &k8client.ListOptions{ FieldSelector: fields.OneTermEqualSelector(configMapAPIDefinition, utils.NamespacedName(configMap).String()), }) @@ -1819,9 +1820,9 @@ func (apiReconciler *APIReconciler) getAPIsForGateway(ctx context.Context, obj k // apiPolicy schemes related to httproutes // This helps to find apiPolicy schemes binded to HTTPRoute. func addIndexes(ctx context.Context, mgr manager.Manager) error { - if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1alpha2.API{}, httpRouteAPIIndex, + if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1beta1.API{}, httpRouteAPIIndex, func(rawObj k8client.Object) []string { - api := rawObj.(*dpv1alpha2.API) + api := rawObj.(*dpv1beta1.API) var httpRoutes []string if len(api.Spec.Production) > 0 { for _, ref := range api.Spec.Production[0].RouteRefs { @@ -1850,9 +1851,9 @@ func addIndexes(ctx context.Context, mgr manager.Manager) error { return err } - if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1alpha2.API{}, gqlRouteAPIIndex, + if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1beta1.API{}, gqlRouteAPIIndex, func(rawObj k8client.Object) []string { - api := rawObj.(*dpv1alpha2.API) + api := rawObj.(*dpv1beta1.API) var gqlRoutes []string if len(api.Spec.Production) > 0 { for _, ref := range api.Spec.Production[0].RouteRefs { @@ -1880,10 +1881,10 @@ func addIndexes(ctx context.Context, mgr manager.Manager) error { }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1alpha2.API{}, grpcRouteAPIIndex, + if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1beta1.API{}, grpcRouteAPIIndex, func(rawObj k8client.Object) []string { //check Spec.Kind - api := rawObj.(*dpv1alpha2.API) + api := rawObj.(*dpv1beta1.API) if api.Spec.APIType != "GRPC" { return nil } @@ -1915,9 +1916,9 @@ func addIndexes(ctx context.Context, mgr manager.Manager) error { return err } - if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1alpha2.API{}, configMapAPIDefinition, + if err := mgr.GetFieldIndexer().IndexField(ctx, &dpv1beta1.API{}, configMapAPIDefinition, func(rawObj k8client.Object) []string { - api := rawObj.(*dpv1alpha2.API) + api := rawObj.(*dpv1beta1.API) var configMaps []string if api.Spec.DefinitionFileRef != "" { configMaps = append(configMaps, @@ -2442,9 +2443,9 @@ func (apiReconciler *APIReconciler) handleStatus() { for _, apiName := range successEvent.APINamespacedName { // handle startup multiple apis apiReconciler.statusUpdater.Send(status.Update{ NamespacedName: apiName, - Resource: new(dpv1alpha2.API), + Resource: new(dpv1beta1.API), UpdateStatus: func(obj k8client.Object) k8client.Object { - h, ok := obj.(*dpv1alpha2.API) + h, ok := obj.(*dpv1beta1.API) if !ok { loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2626, logging.BLOCKER, "Unsupported object type %T", obj)) } @@ -2481,7 +2482,7 @@ func (apiReconciler *APIReconciler) handleLabels(ctx context.Context) { }) } payloadBytes, _ := json.Marshal(patchOps) - apiCR := dpv1alpha2.API{ + apiCR := dpv1beta1.API{ ObjectMeta: metav1.ObjectMeta{ Namespace: labelUpdate.Namespace, Name: labelUpdate.Name, @@ -2492,7 +2493,7 @@ func (apiReconciler *APIReconciler) handleLabels(ctx context.Context) { if err != nil { loggers.LoggerAPKOperator.Errorf("Failed to patch api %s/%s with patch: %+v, error: %+v", labelUpdate.Name, labelUpdate.Namespace, patchOps, err) // Patch did not work it could be due to labels field does not exists. Lets try to update the CR with labels field. - var apiCR dpv1alpha2.API + var apiCR dpv1beta1.API if err := apiReconciler.client.Get(ctx, types.NamespacedName{Namespace: labelUpdate.Namespace, Name: labelUpdate.Name}, &apiCR); err == nil { if apiCR.ObjectMeta.Labels == nil { apiCR.ObjectMeta.Labels = map[string]string{} @@ -2512,9 +2513,9 @@ func (apiReconciler *APIReconciler) handleLabels(ctx context.Context) { } func (apiReconciler *APIReconciler) handleOwnerReference(ctx context.Context, obj k8client.Object, apiRequests *[]reconcile.Request) { - apis := []dpv1alpha2.API{} + apis := []dpv1beta1.API{} for _, req := range *apiRequests { - var apiCR dpv1alpha2.API + var apiCR dpv1beta1.API if err := apiReconciler.client.Get(ctx, req.NamespacedName, &apiCR); err == nil { apis = append(apis, apiCR) } else { @@ -2544,7 +2545,7 @@ func (apiReconciler *APIReconciler) handleOwnerReference(ctx context.Context, ob } } -func prepareOwnerReference(apiItems []dpv1alpha2.API) []metav1.OwnerReference { +func prepareOwnerReference(apiItems []dpv1beta1.API) []metav1.OwnerReference { ownerReferences := []metav1.OwnerReference{} uidMap := make(map[string]bool) for _, ref := range apiItems { diff --git a/adapter/internal/operator/operator.go b/adapter/internal/operator/operator.go index 151314fc5..20db27c27 100644 --- a/adapter/internal/operator/operator.go +++ b/adapter/internal/operator/operator.go @@ -20,6 +20,7 @@ package operator import ( "flag" "fmt" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "strings" "github.com/wso2/apk/adapter/config" @@ -66,6 +67,8 @@ func init() { utilruntime.Must(gwapiv1a2.AddToScheme(scheme)) utilruntime.Must(dpv1alpha2.AddToScheme(scheme)) + utilruntime.Must(dpv1beta1.AddToScheme(scheme)) + //+kubebuilder:scaffold:scheme } diff --git a/adapter/internal/operator/synchronizer/api_state.go b/adapter/internal/operator/synchronizer/api_state.go index cbf42bc2a..6f79af8ea 100644 --- a/adapter/internal/operator/synchronizer/api_state.go +++ b/adapter/internal/operator/synchronizer/api_state.go @@ -20,6 +20,7 @@ package synchronizer import ( "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" gwapiv1a2 "sigs.k8s.io/gateway-api/apis/v1alpha2" gwapiv1b1 "sigs.k8s.io/gateway-api/apis/v1beta1" ) @@ -28,7 +29,7 @@ import ( // the state of the Kubernetes controller cache to detect updates. // +k8s:deepcopy-gen=true type APIState struct { - APIDefinition *v1alpha2.API + APIDefinition *v1beta1.API ProdHTTPRoute *HTTPRouteState SandHTTPRoute *HTTPRouteState ProdGQLRoute *GQLRouteState diff --git a/adapter/internal/operator/synchronizer/zz_generated.deepcopy.go b/adapter/internal/operator/synchronizer/zz_generated.deepcopy.go index f2dc5002c..95a916ca9 100644 --- a/adapter/internal/operator/synchronizer/zz_generated.deepcopy.go +++ b/adapter/internal/operator/synchronizer/zz_generated.deepcopy.go @@ -25,6 +25,7 @@ package synchronizer import ( "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "sigs.k8s.io/gateway-api/apis/v1beta1" ) @@ -33,7 +34,7 @@ func (in *APIState) DeepCopyInto(out *APIState) { *out = *in if in.APIDefinition != nil { in, out := &in.APIDefinition, &out.APIDefinition - *out = new(v1alpha2.API) + *out = new(dpv1beta1.API) (*in).DeepCopyInto(*out) } if in.ProdHTTPRoute != nil { diff --git a/adapter/internal/operator/utils/utils.go b/adapter/internal/operator/utils/utils.go index 11c1867b0..cb8b5f626 100644 --- a/adapter/internal/operator/utils/utils.go +++ b/adapter/internal/operator/utils/utils.go @@ -35,6 +35,7 @@ import ( "github.com/wso2/apk/adapter/pkg/utils/stringutils" dpv1alpha1 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -297,7 +298,7 @@ func getSecretValue(ctx context.Context, client k8client.Client, // ResolveAndAddBackendToMapping resolves backend from reference and adds it to the backendMapping. func ResolveAndAddBackendToMapping(ctx context.Context, client k8client.Client, backendMapping map[string]*dpv1alpha1.ResolvedBackend, - backendRef dpv1alpha1.BackendReference, interceptorServiceNamespace string, api *dpv1alpha2.API) { + backendRef dpv1alpha1.BackendReference, interceptorServiceNamespace string, api *dpv1beta1.API) { backendName := types.NamespacedName{ Name: backendRef.Name, Namespace: interceptorServiceNamespace, @@ -309,7 +310,7 @@ func ResolveAndAddBackendToMapping(ctx context.Context, client k8client.Client, } // ResolveRef this function will return k8client object and update owner -func ResolveRef(ctx context.Context, client k8client.Client, api *dpv1alpha2.API, +func ResolveRef(ctx context.Context, client k8client.Client, api *dpv1beta1.API, namespacedName types.NamespacedName, isReplace bool, obj k8client.Object, opts ...k8client.GetOption) error { err := client.Get(ctx, namespacedName, obj, opts...) return err @@ -317,7 +318,7 @@ func ResolveRef(ctx context.Context, client k8client.Client, api *dpv1alpha2.API // GetResolvedBackend resolves backend TLS configurations. func GetResolvedBackend(ctx context.Context, client k8client.Client, - backendNamespacedName types.NamespacedName, api *dpv1alpha2.API) *dpv1alpha1.ResolvedBackend { + backendNamespacedName types.NamespacedName, api *dpv1beta1.API) *dpv1alpha1.ResolvedBackend { resolvedBackend := dpv1alpha1.ResolvedBackend{} resolvedTLSConfig := dpv1alpha1.ResolvedTLSConfig{} var backend dpv1alpha1.Backend @@ -518,7 +519,7 @@ func RetrieveNamespaceListOptions(namespaces []string) k8client.ListOptions { // GetInterceptorService reads InterceptorService when interceptorReference is given func GetInterceptorService(ctx context.Context, client k8client.Client, namespace string, - interceptorReference *dpv1alpha2.InterceptorReference, api *dpv1alpha2.API) *dpv1alpha1.InterceptorService { + interceptorReference *dpv1alpha2.InterceptorReference, api *dpv1beta1.API) *dpv1alpha1.InterceptorService { interceptorService := &dpv1alpha1.InterceptorService{} interceptorRef := types.NamespacedName{ Namespace: namespace, @@ -534,7 +535,7 @@ func GetInterceptorService(ctx context.Context, client k8client.Client, namespac // GetBackendJWT reads BackendJWT when backendJWTReference is given func GetBackendJWT(ctx context.Context, client k8client.Client, namespace, - backendJWTReference string, api *dpv1alpha2.API) *dpv1alpha1.BackendJWT { + backendJWTReference string, api *dpv1beta1.API) *dpv1alpha1.BackendJWT { backendJWT := &dpv1alpha1.BackendJWT{} backendJWTRef := types.NamespacedName{ Namespace: namespace, @@ -549,21 +550,21 @@ func GetBackendJWT(ctx context.Context, client k8client.Client, namespace, } // RetrieveAPIList retrieves API list from the given kubernetes client -func RetrieveAPIList(k8sclient k8client.Client) ([]dpv1alpha2.API, error) { +func RetrieveAPIList(k8sclient k8client.Client) ([]dpv1beta1.API, error) { ctx := context.Background() conf := config.ReadConfigs() namespaces := conf.Adapter.Operator.Namespaces - var apis []dpv1alpha2.API + var apis []dpv1beta1.API if namespaces == nil { - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} if err := k8sclient.List(ctx, apiList, &k8client.ListOptions{}); err != nil { return nil, err } - apis = make([]dpv1alpha2.API, len(apiList.Items)) + apis = make([]dpv1beta1.API, len(apiList.Items)) copy(apis[:], apiList.Items[:]) } else { for _, namespace := range namespaces { - apiList := &dpv1alpha2.APIList{} + apiList := &dpv1beta1.APIList{} if err := k8sclient.List(ctx, apiList, &k8client.ListOptions{Namespace: namespace}); err != nil { return nil, err } @@ -587,10 +588,10 @@ func ConvertRefConfigsV1ToV2(refConfig *dpv1alpha1.RefConfig) *dpv1alpha2.RefCon // ContainsString checks whether a list contains a specific string. // It returns true if the string is found in the list, otherwise false. func ContainsString(list []string, target string) bool { - for _, item := range list { - if item == target { - return true - } - } - return false + for _, item := range list { + if item == target { + return true + } + } + return false } diff --git a/common-controller/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml b/common-controller/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml index a674ff1d2..705182f96 100644 --- a/common-controller/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml +++ b/common-controller/internal/operator/config/crd/bases/dp.wso2.com_apis.yaml @@ -364,3 +364,180 @@ spec: storage: true subresources: status: {} + - additionalPrinterColumns: + - jsonPath: .spec.apiName + name: API Name + type: string + - jsonPath: .spec.apiVersion + name: Version + type: string + - jsonPath: .spec.basePath + name: BasePath + type: string + - jsonPath: .spec.organization + name: Organization + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: API is the Schema for the apis API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: APISpec defines the desired state of API + properties: + apiName: + description: APIName is the unique name of the API can be used to + uniquely identify an API. + maxLength: 60 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&$\[\]\/]*$ + type: string + apiProperties: + description: APIProperties denotes the custom properties of the API. + items: + description: Property holds key value pair of APIProperties + properties: + name: + type: string + value: + type: string + type: object + nullable: true + type: array + apiType: + description: APIType denotes the type of the API. Possible values + could be REST, GraphQL, Async + enum: + - REST + - GraphQL + - GRPC + type: string + apiVersion: + description: APIVersion is the version number of the API. + maxLength: 30 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&/$\[\]\s+\/]+$ + type: string + basePath: + description: 'BasePath denotes the basepath of the API. e.g: /pet-store-api/1.0.6' + type: string + definitionFileRef: + description: DefinitionFileRef contains the OpenAPI 3 or Swagger definition + of the API in a ConfigMap. + type: string + definitionPath: + default: /api-definition + description: DefinitionPath contains the path to expose the API definition. + minLength: 1 + type: string + environment: + description: Environment denotes the environment of the API. + nullable: true + type: string + isDefaultVersion: + description: IsDefaultVersion indicates whether this API version should + be used as a default API + type: boolean + organization: + description: Organization denotes the organization. related to the + API + type: string + production: + description: 'Production contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + httpRouteRefs: + description: HTTPRouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - httpRouteRefs + type: object + maxItems: 1 + nullable: true + type: array + sandbox: + description: 'Sandbox contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + httpRouteRefs: + description: HTTPRouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - httpRouteRefs + type: object + maxItems: 1 + nullable: true + type: array + systemAPI: + description: SystemAPI denotes if it is an internal system API. + type: boolean + required: + - apiName + - apiType + - apiVersion + - basePath + - definitionPath + type: object + status: + description: APIStatus defines the observed state of API + properties: + deploymentStatus: + description: DeploymentStatus denotes the deployment status of the + API + properties: + accepted: + description: Accepted represents whether the API is accepted or + not. + type: boolean + events: + description: Events contains a list of events related to the API. + items: + type: string + type: array + message: + description: Message represents a user friendly message that explains + the current state of the API. + type: string + status: + description: Status denotes the state of the API in its lifecycle. + Possible values could be Accepted, Invalid, Deploy etc. + type: string + transitionTime: + description: TransitionTime represents the last known transition + timestamp. + format: date-time + type: string + required: + - accepted + - status + - transitionTime + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} \ No newline at end of file diff --git a/common-controller/internal/operator/controllers/dp/ratelimitpolicy_controller.go b/common-controller/internal/operator/controllers/dp/ratelimitpolicy_controller.go index c4de5e578..012c9280f 100644 --- a/common-controller/internal/operator/controllers/dp/ratelimitpolicy_controller.go +++ b/common-controller/internal/operator/controllers/dp/ratelimitpolicy_controller.go @@ -19,6 +19,7 @@ package dp import ( "context" "fmt" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "time" logger "github.com/sirupsen/logrus" @@ -46,7 +47,6 @@ import ( "github.com/wso2/apk/common-controller/internal/utils" xds "github.com/wso2/apk/common-controller/internal/xds" dpv1alpha1 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" - dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" "github.com/wso2/apk/common-go-libs/constants" ) @@ -87,7 +87,7 @@ func NewratelimitController(mgr manager.Manager, ratelimitStore *cache.Ratelimit conf := config.ReadConfigs() predicates := []predicate.Predicate{predicate.NewPredicateFuncs(utils.FilterByNamespaces(conf.CommonController.Operator.Namespaces))} - if err := c.Watch(source.Kind(mgr.GetCache(), &dpv1alpha2.API{}), + if err := c.Watch(source.Kind(mgr.GetCache(), &dpv1beta1.API{}), handler.EnqueueRequestsFromMapFunc(ratelimitReconsiler.getRatelimitForAPI), predicates...); err != nil { loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2611, logging.BLOCKER, "Error watching API resources: %v", err)) @@ -149,7 +149,7 @@ func (ratelimitReconsiler *RateLimitPolicyReconciler) Reconcile(ctx context.Cont xds.DeleteCustomRateLimitPolicies(resolveCustomRateLimitPolicy) xds.UpdateRateLimiterPolicies(conf.CommonController.Server.Label) } - if (k8error.IsNotFound(err)) { + if k8error.IsNotFound(err) { return ctrl.Result{}, nil } return ctrl.Result{ @@ -177,7 +177,7 @@ func (ratelimitReconsiler *RateLimitPolicyReconciler) Reconcile(ctx context.Cont } func (ratelimitReconsiler *RateLimitPolicyReconciler) getRatelimitForAPI(ctx context.Context, obj k8client.Object) []reconcile.Request { - api, ok := obj.(*dpv1alpha2.API) + api, ok := obj.(*dpv1beta1.API) if !ok { loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2622, logging.TRIVIAL, "Unexpected object type, bypassing reconciliation: %v", api)) @@ -246,7 +246,7 @@ func (ratelimitReconsiler *RateLimitPolicyReconciler) marshelRateLimit(ctx conte ratelimitPolicy dpv1alpha1.RateLimitPolicy) ([]dpv1alpha1.ResolveRateLimitAPIPolicy, error) { policyList := []dpv1alpha1.ResolveRateLimitAPIPolicy{} - var api dpv1alpha2.API + var api dpv1beta1.API if err := ratelimitReconsiler.client.Get(ctx, types.NamespacedName{ Namespace: ratelimitKey.Namespace, diff --git a/common-controller/internal/operator/operator.go b/common-controller/internal/operator/operator.go index 25c87115e..ccb30129f 100644 --- a/common-controller/internal/operator/operator.go +++ b/common-controller/internal/operator/operator.go @@ -39,6 +39,7 @@ import ( cpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/cp/v1alpha2" dpv1alpha1 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1" dpv1alpha2 "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" @@ -63,6 +64,8 @@ func init() { utilruntime.Must(dpv1alpha2.AddToScheme(scheme)) utilruntime.Must(cpv1alpha2.AddToScheme(scheme)) utilruntime.Must(cpv1alpha2.AddToScheme(scheme)) + utilruntime.Must(dpv1beta1.AddToScheme(scheme)) + //+kubebuilder:scaffold:scheme } @@ -127,7 +130,7 @@ func InitOperator(metricsConfig config.Metrics) { "Unable to create webhook API, error: %v", err)) } - if err = (&dpv1alpha2.API{}).SetupWebhookWithManager(mgr); err != nil { + if err = (&dpv1beta1.API{}).SetupWebhookWithManager(mgr); err != nil { loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2601, logging.MAJOR, "Unable to create webhook API, error: %v", err)) } diff --git a/common-go-libs/PROJECT b/common-go-libs/PROJECT index 89fbcd315..f6217e3bc 100644 --- a/common-go-libs/PROJECT +++ b/common-go-libs/PROJECT @@ -1,3 +1,7 @@ +# Code generated by tool. DO NOT EDIT. +# This file is used to track the info used to scaffold your project +# and allow the plugins properly work. +# More info: https://book.kubebuilder.io/reference/project-config.html domain: wso2.com layout: - go.kubebuilder.io/v3 @@ -160,4 +164,13 @@ resources: defaulting: true validation: true webhookVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: wso2.com + group: dp + kind: Api + path: github.com/wso2/apk/common-go-libs/apis/dp/v1beta1 + version: v1beta1 version: "3" diff --git a/common-go-libs/apis/dp/v1alpha1/api_conversion.go b/common-go-libs/apis/dp/v1alpha1/api_conversion.go index 2aaf06c91..39d22c48e 100644 --- a/common-go-libs/apis/dp/v1alpha1/api_conversion.go +++ b/common-go-libs/apis/dp/v1alpha1/api_conversion.go @@ -18,15 +18,15 @@ package v1alpha1 import ( - "github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2" + "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" "sigs.k8s.io/controller-runtime/pkg/conversion" ) -// ConvertTo converts this API CR to the Hub version (v1alpha2). -// src is v1alpha1.API and dst is v1alpha2.API. +// ConvertTo converts this API CR to the Hub version (v1beta1). +// src is v1alpha1.API and dst is v1beta1.API. func (src *API) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1alpha2.API) + dst := dstRaw.(*v1beta1.API) dst.ObjectMeta = src.ObjectMeta // Spec @@ -41,40 +41,40 @@ func (src *API) ConvertTo(dstRaw conversion.Hub) error { dst.Spec.SystemAPI = src.Spec.SystemAPI if src.Spec.Production != nil { - dst.Spec.Production = []v1alpha2.EnvConfig{} + dst.Spec.Production = []v1beta1.EnvConfig{} for _, productionRef := range src.Spec.Production { - dst.Spec.Production = append(dst.Spec.Production, v1alpha2.EnvConfig{ + dst.Spec.Production = append(dst.Spec.Production, v1beta1.EnvConfig{ RouteRefs: productionRef.HTTPRouteRefs, }) } } if src.Spec.Sandbox != nil { - dst.Spec.Sandbox = []v1alpha2.EnvConfig{} + dst.Spec.Sandbox = []v1beta1.EnvConfig{} for _, sandboxRef := range src.Spec.Sandbox { - dst.Spec.Sandbox = append(dst.Spec.Sandbox, v1alpha2.EnvConfig{ + dst.Spec.Sandbox = append(dst.Spec.Sandbox, v1beta1.EnvConfig{ RouteRefs: sandboxRef.HTTPRouteRefs, }) } } - // Convert []Property to []v1alpha2.Property - var properties []v1alpha2.Property + // Convert []Property to []v1beta1.Property + var properties []v1beta1.Property for _, p := range src.Spec.APIProperties { - properties = append(properties, v1alpha2.Property(p)) + properties = append(properties, v1beta1.Property(p)) } dst.Spec.APIProperties = properties // Status - dst.Status.DeploymentStatus = v1alpha2.DeploymentStatus(src.Status.DeploymentStatus) + dst.Status.DeploymentStatus = v1beta1.DeploymentStatus(src.Status.DeploymentStatus) return nil } -// ConvertFrom converts from the Hub version (v1alpha2) to this version. -// src is v1alpha1.API and dst is v1alpha2.API. +// ConvertFrom converts from the Hub version (v1beta1) to this version. +// src is v1beta1.API and dst is v1alpha1.API. func (src *API) ConvertFrom(srcRaw conversion.Hub) error { - dst := srcRaw.(*v1alpha2.API) + dst := srcRaw.(*v1beta1.API) src.ObjectMeta = dst.ObjectMeta // Spec @@ -106,7 +106,7 @@ func (src *API) ConvertFrom(srcRaw conversion.Hub) error { } } - // Convert []Property to []v1alpha1.Property + // Convert []Property to []v1beta1.Property var properties []Property for _, p := range dst.Spec.APIProperties { properties = append(properties, Property(p)) diff --git a/common-go-libs/apis/dp/v1alpha2/api_conversion.go b/common-go-libs/apis/dp/v1alpha2/api_conversion.go index 5a1953e13..fed53bed6 100644 --- a/common-go-libs/apis/dp/v1alpha2/api_conversion.go +++ b/common-go-libs/apis/dp/v1alpha2/api_conversion.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2024 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,5 +17,104 @@ package v1alpha2 -// Hub marks this type as a conversion hub. -func (*API) Hub() {} +import ( + "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// ConvertTo converts this API CR to the Hub version (v1beta1). +// src is v1alpha12API and dst is v1beta1.API. +func (src *API) ConvertTo(dstRaw conversion.Hub) error { + + dst := dstRaw.(*v1beta1.API) + dst.ObjectMeta = src.ObjectMeta + + // Spec + dst.Spec.APIName = src.Spec.APIName + dst.Spec.APIVersion = src.Spec.APIVersion + dst.Spec.IsDefaultVersion = src.Spec.IsDefaultVersion + dst.Spec.DefinitionFileRef = src.Spec.DefinitionFileRef + dst.Spec.DefinitionPath = src.Spec.DefinitionPath + dst.Spec.APIType = src.Spec.APIType + dst.Spec.BasePath = src.Spec.BasePath + dst.Spec.Organization = src.Spec.Organization + dst.Spec.SystemAPI = src.Spec.SystemAPI + + if src.Spec.Production != nil { + dst.Spec.Production = []v1beta1.EnvConfig{} + for _, productionRef := range src.Spec.Production { + dst.Spec.Production = append(dst.Spec.Production, v1beta1.EnvConfig{ + RouteRefs: productionRef.RouteRefs, + }) + } + } + if src.Spec.Sandbox != nil { + dst.Spec.Sandbox = []v1beta1.EnvConfig{} + for _, sandboxRef := range src.Spec.Sandbox { + dst.Spec.Sandbox = append(dst.Spec.Sandbox, v1beta1.EnvConfig{ + RouteRefs: sandboxRef.RouteRefs, + }) + } + } + + // Convert []Property to []v1alpha2.Property + var properties []v1beta1.Property + for _, p := range src.Spec.APIProperties { + properties = append(properties, v1beta1.Property(p)) + } + dst.Spec.APIProperties = properties + + // Status + dst.Status.DeploymentStatus = v1beta1.DeploymentStatus(src.Status.DeploymentStatus) + + return nil +} + +// ConvertFrom converts from the Hub version (v1beta1) to this version. +// src is v1beta1.API and dst is v1alpha2.API. +func (src *API) ConvertFrom(srcRaw conversion.Hub) error { + + dst := srcRaw.(*v1beta1.API) + src.ObjectMeta = dst.ObjectMeta + + // Spec + src.Spec.APIName = dst.Spec.APIName + src.Spec.APIVersion = dst.Spec.APIVersion + src.Spec.IsDefaultVersion = dst.Spec.IsDefaultVersion + src.Spec.DefinitionFileRef = dst.Spec.DefinitionFileRef + src.Spec.DefinitionPath = dst.Spec.DefinitionPath + src.Spec.APIType = dst.Spec.APIType + src.Spec.BasePath = dst.Spec.BasePath + src.Spec.Organization = dst.Spec.Organization + src.Spec.SystemAPI = dst.Spec.SystemAPI + + if dst.Spec.Production != nil { + src.Spec.Production = []EnvConfig{} + for _, productionRef := range dst.Spec.Production { + src.Spec.Production = append(src.Spec.Production, EnvConfig{ + RouteRefs: productionRef.RouteRefs, + }) + } + } + + if dst.Spec.Sandbox != nil { + src.Spec.Sandbox = []EnvConfig{} + for _, sandboxRef := range dst.Spec.Sandbox { + src.Spec.Sandbox = append(src.Spec.Sandbox, EnvConfig{ + RouteRefs: sandboxRef.RouteRefs, + }) + } + } + + // Convert []Property to []v1alpha2Property + var properties []Property + for _, p := range dst.Spec.APIProperties { + properties = append(properties, Property(p)) + } + src.Spec.APIProperties = properties + + // Status + src.Status.DeploymentStatus = DeploymentStatus(dst.Status.DeploymentStatus) + + return nil +} diff --git a/common-go-libs/apis/dp/v1alpha2/api_types.go b/common-go-libs/apis/dp/v1alpha2/api_types.go index 2943fa784..c6bee13ef 100644 --- a/common-go-libs/apis/dp/v1alpha2/api_types.go +++ b/common-go-libs/apis/dp/v1alpha2/api_types.go @@ -171,7 +171,6 @@ type DeploymentStatus struct { // +genclient //+kubebuilder:object:root=true //+kubebuilder:subresource:status -//+kubebuilder:storageversion //+kubebuilder:printcolumn:name="API Name",type="string",JSONPath=".spec.apiName" //+kubebuilder:printcolumn:name="Version",type="string",JSONPath=".spec.apiVersion" //+kubebuilder:printcolumn:name="BasePath",type="string",JSONPath=".spec.basePath" diff --git a/common-go-libs/apis/dp/v1beta1/api_conversion.go b/common-go-libs/apis/dp/v1beta1/api_conversion.go new file mode 100644 index 000000000..5564f83e0 --- /dev/null +++ b/common-go-libs/apis/dp/v1beta1/api_conversion.go @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (*API) Hub() {} diff --git a/common-go-libs/apis/dp/v1beta1/api_types.go b/common-go-libs/apis/dp/v1beta1/api_types.go new file mode 100644 index 000000000..357fab4a4 --- /dev/null +++ b/common-go-libs/apis/dp/v1beta1/api_types.go @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// APISpec defines the desired state of API +type APISpec struct { + + // APIName is the unique name of the API + //can be used to uniquely identify an API. + // + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:MaxLength=60 + // +kubebuilder:validation:Pattern="^[^~!@#;:%^*()+={}|\\<>\"'',&$\\[\\]\\/]*$" + APIName string `json:"apiName"` + + // APIVersion is the version number of the API. + // + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:MaxLength=30 + // +kubebuilder:validation:Pattern="^[^~!@#;:%^*()+={}|\\<>\"'',&/$\\[\\]\\s+\\/]+$" + APIVersion string `json:"apiVersion"` + + // IsDefaultVersion indicates whether this API version should be used as a default API + // + // +optional + IsDefaultVersion bool `json:"isDefaultVersion"` + + // DefinitionFileRef contains the + // definition of the API in a ConfigMap. + // + // +optional + DefinitionFileRef string `json:"definitionFileRef"` + + // DefinitionPath contains the path to expose the API definition. + // + // +kubebuilder:default:=/api-definition + // +kubebuilder:validation:MinLength=1 + DefinitionPath string `json:"definitionPath"` + + // Production contains a list of references to HttpRoutes + // of type HttpRoute. + // xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go + // + // + // +optional + // +nullable + // +kubebuilder:validation:MaxItems=1 + Production []EnvConfig `json:"production"` + + // Sandbox contains a list of references to HttpRoutes + // of type HttpRoute. + // xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go + // + // + // +optional + // +nullable + // +kubebuilder:validation:MaxItems=1 + Sandbox []EnvConfig `json:"sandbox"` + + // APIType denotes the type of the API. + // Possible values could be REST, GraphQL, Async, GRPC etc. + // + // +kubebuilder:validation:Enum=REST;GraphQL;GRPC + APIType string `json:"apiType"` + + // BasePath denotes the basepath of the API. + // e.g: /pet-store-api/1.0.6 + // + // +kubectl:validation:MaxLength=232 + BasePath string `json:"basePath"` + + // Organization denotes the organization. + // related to the API + // + // +optional + Organization string `json:"organization"` + + // SystemAPI denotes if it is an internal system API. + // + // +optional + SystemAPI bool `json:"systemAPI"` + + // APIProperties denotes the custom properties of the API. + // + // +optional + // +nullable + APIProperties []Property `json:"apiProperties,omitempty"` + + // Environment denotes the environment of the API. + // + // +optional + // +nullable + Environment string `json:"environment,omitempty"` +} + +// Property holds key value pair of APIProperties +type Property struct { + Name string `json:"name,omitempty"` + Value string `json:"value,omitempty"` +} + +// EnvConfig contains the environment specific configuration +type EnvConfig struct { + // RouteRefs denotes the environment of the API. + RouteRefs []string `json:"routeRefs"` +} + +// APIStatus defines the observed state of API +type APIStatus struct { + // DeploymentStatus denotes the deployment status of the API + // + // +optional + DeploymentStatus DeploymentStatus `json:"deploymentStatus"` +} + +// DeploymentStatus contains the status of the API deployment +type DeploymentStatus struct { + + // Status denotes the state of the API in its lifecycle. + // Possible values could be Accepted, Invalid, Deploy etc. + // + // + Status string `json:"status"` + + // Message represents a user friendly message that explains the + // current state of the API. + // + // + // +optional + Message string `json:"message"` + + // Accepted represents whether the API is accepted or not. + // + // + Accepted bool `json:"accepted"` + + // TransitionTime represents the last known transition timestamp. + // + // + TransitionTime *metav1.Time `json:"transitionTime"` + + // Events contains a list of events related to the API. + // + // + // +optional + Events []string `json:"events,omitempty"` +} + +// +genclient +//+kubebuilder:object:root=true +//+kubebuilder:subresource:status +//+kubebuilder:storageversion +//+kubebuilder:printcolumn:name="API Name",type="string",JSONPath=".spec.apiName" +//+kubebuilder:printcolumn:name="Version",type="string",JSONPath=".spec.apiVersion" +//+kubebuilder:printcolumn:name="BasePath",type="string",JSONPath=".spec.basePath" +//+kubebuilder:printcolumn:name="Organization",type="string",JSONPath=".spec.organization" +//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" + +// API is the Schema for the apis API +type API struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec APISpec `json:"spec,omitempty"` + Status APIStatus `json:"status,omitempty"` +} + +//+kubebuilder:object:root=true + +// APIList contains a list of API +type APIList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []API `json:"items"` +} + +func init() { + SchemeBuilder.Register(&API{}, &APIList{}) +} diff --git a/common-go-libs/apis/dp/v1beta1/api_webhook.go b/common-go-libs/apis/dp/v1beta1/api_webhook.go new file mode 100644 index 000000000..0ddb52772 --- /dev/null +++ b/common-go-libs/apis/dp/v1beta1/api_webhook.go @@ -0,0 +1,329 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package v1beta1 + +import ( + "bytes" + "compress/gzip" + "context" + "errors" + "fmt" + "io" + "regexp" + "strings" + + gqlparser "github.com/vektah/gqlparser" + "github.com/vektah/gqlparser/ast" + "github.com/wso2/apk/adapter/pkg/logging" + config "github.com/wso2/apk/common-go-libs/configs" + loggers "github.com/wso2/apk/common-go-libs/loggers" + utils "github.com/wso2/apk/common-go-libs/utils" + "golang.org/x/exp/slices" + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/validation/field" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/webhook" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +var c client.Client + +// SetupWebhookWithManager creates a new webhook builder for API +func (r *API) SetupWebhookWithManager(mgr ctrl.Manager) error { + + c = mgr.GetClient() + return ctrl.NewWebhookManagedBy(mgr). + For(r). + Complete() +} + +// TODO(user): EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! + +//+kubebuilder:webhook:path=/mutate-dp-wso2-com-v1beta1-api,mutating=true,failurePolicy=fail,sideEffects=None,groups=dp.wso2.com,resources=apis,verbs=create;update,versions=v1alpha2,name=mapi.kb.io,admissionReviewVersions=v1 + +var _ webhook.Defaulter = &API{} + +// Default implements webhook.Defaulter so a webhook will be registered for the type +func (r *API) Default() { + // TODO(user): fill in your defaulting logic. +} + +// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation. +//+kubebuilder:webhook:path=/validate-dp-wso2-com-v1beta1-api,mutating=false,failurePolicy=fail,sideEffects=None,groups=dp.wso2.com,resources=apis,verbs=create;update,versions=v1alpha2,name=vapi.kb.io,admissionReviewVersions=v1 + +var _ webhook.Validator = &API{} + +// ValidateCreate implements webhook.Validator so a webhook will be registered for the type +func (r *API) ValidateCreate() (admission.Warnings, error) { + return nil, r.validateAPI() +} + +// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type +func (r *API) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + return nil, r.validateAPI() +} + +// ValidateDelete implements webhook.Validator so a webhook will be registered for the type +func (r *API) ValidateDelete() (admission.Warnings, error) { + + // TODO(user): fill in your validation logic upon object deletion. + return nil, nil +} + +// validateAPI validate api crd fields +func (r *API) validateAPI() error { + var allErrs field.ErrorList + conf := config.ReadConfigs() + namespaces := conf.CommonController.Operator.Namespaces + if len(namespaces) > 0 { + if !slices.Contains(namespaces, r.Namespace) { + loggers.LoggerAPK.Debugf("API validation Skipped for namespace: %v", r.Namespace) + return nil + } + } + + if r.Spec.BasePath == "" { + allErrs = append(allErrs, field.Required(field.NewPath("spec").Child("basePath"), "API basePath is required")) + } else if errMsg := validateAPIBasePathRegex(r.Spec.BasePath, r.Spec.APIType); errMsg != "" { + allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("basePath"), r.Spec.BasePath, errMsg)) + } else if errMsg := validateAPIBasePathFormat(r.Spec.BasePath, r.Spec.APIVersion); errMsg != "" { + allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("basePath"), r.Spec.BasePath, errMsg)) + } else if err := r.validateAPIBasePathExistsAndDefaultVersion(); err != nil { + allErrs = append(allErrs, err) + } + + if r.Spec.DefinitionFileRef != "" { + if schemaString, errMsg := validateGzip(r.Spec.DefinitionFileRef, r.Namespace); errMsg != "" { + allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("definitionFileRef"), r.Spec.DefinitionFileRef, errMsg)) + } else if schemaString != "" && r.Spec.APIType == "GraphQL" { + if errMsg := validateSDL(schemaString); errMsg != "" { + allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("definitionFileRef"), r.Spec.DefinitionFileRef, errMsg)) + } + } + } else if r.Spec.APIType == "GraphQL" { + allErrs = append(allErrs, field.Required(field.NewPath("spec").Child("definitionFileRef"), "GraphQL API definitionFileRef is required")) + } + + // Organization value should not be empty as it required when applying ratelimit policy + if r.Spec.Organization == "" { + allErrs = append(allErrs, field.Required(field.NewPath("spec").Child("organization"), "Organization can not be empty")) + } + + if !(len(r.Spec.Production) > 0 && r.Spec.Production[0].RouteRefs != nil && len(r.Spec.Production[0].RouteRefs) > 0) && + !(len(r.Spec.Sandbox) > 0 && r.Spec.Sandbox[0].RouteRefs != nil && len(r.Spec.Sandbox[0].RouteRefs) > 0) { + allErrs = append(allErrs, field.Required(field.NewPath("spec"), + "both API production and sandbox endpoint references cannot be empty")) + } + + var prodHTTPRoute1, sandHTTPRoute1 []string + if len(r.Spec.Production) > 0 { + prodHTTPRoute1 = r.Spec.Production[0].RouteRefs + } + if len(r.Spec.Sandbox) > 0 { + sandHTTPRoute1 = r.Spec.Sandbox[0].RouteRefs + } + + if isEmptyStringsInArray(prodHTTPRoute1) { + allErrs = append(allErrs, field.Required(field.NewPath("spec").Child("production").Child("httpRouteRefs"), + "API production endpoint reference cannot be empty")) + } + + if isEmptyStringsInArray(sandHTTPRoute1) { + allErrs = append(allErrs, field.Required(field.NewPath("spec").Child("sandbox").Child("httpRouteRefs"), + "API sandbox endpoint reference cannot be empty")) + } + + if len(allErrs) > 0 { + return apierrors.NewInvalid( + schema.GroupKind{Group: "dp.wso2.com", Kind: "API"}, + r.Name, allErrs) + } + + return nil +} + +func isEmptyStringsInArray(strings []string) bool { + for _, str := range strings { + if str == "" { + return true + } + } + return false +} + +func (r *API) validateAPIBasePathExistsAndDefaultVersion() *field.Error { + + apiList, err := retrieveAPIList() + if err != nil { + return field.InternalError(field.NewPath("spec").Child("basePath"), + errors.New("unable to list APIs for API basePath validation")) + + } + currentAPIBasePathWithoutVersion := getBasePathWithoutVersion(r.Spec.BasePath) + incomingAPIEnvironment := utils.GetEnvironment(r.Spec.Environment) + for _, api := range apiList { + if (types.NamespacedName{Namespace: r.Namespace, Name: r.Name} != + types.NamespacedName{Namespace: api.Namespace, Name: api.Name}) { + + existingAPIEnvironment := utils.GetEnvironment(api.Spec.Environment) + if api.Spec.Organization == r.Spec.Organization && api.Spec.BasePath == r.Spec.BasePath && + incomingAPIEnvironment == existingAPIEnvironment { + return &field.Error{ + Type: field.ErrorTypeDuplicate, + Field: field.NewPath("spec").Child("basePath").String(), + BadValue: r.Spec.BasePath, + Detail: "an API has been already created for the basePath"} + } + if r.Spec.IsDefaultVersion { + targetAPIBasePathWithoutVersion := getBasePathWithoutVersion(api.Spec.BasePath) + targetAPIBasePathWithVersion := api.Spec.BasePath + if api.Spec.IsDefaultVersion { + if targetAPIBasePathWithoutVersion == currentAPIBasePathWithoutVersion { + return &field.Error{ + Type: field.ErrorTypeForbidden, + Field: field.NewPath("spec").Child("isDefaultVersion").String(), + BadValue: r.Spec.BasePath, + Detail: "this API already has a default version"} + } + + } + if targetAPIBasePathWithVersion == currentAPIBasePathWithoutVersion { + return &field.Error{ + Type: field.ErrorTypeForbidden, + Field: field.NewPath("spec").Child("isDefaultVersion").String(), + BadValue: r.Spec.BasePath, + Detail: fmt.Sprintf("api: %s's basePath path is colliding with default path", r.Name)} + } + } + } + } + return nil +} + +func retrieveAPIList() ([]API, error) { + ctx := context.Background() + conf := config.ReadConfigs() + namespaces := conf.CommonController.Operator.Namespaces + var apis []API + if namespaces == nil { + apiList := &APIList{} + if err := c.List(ctx, apiList, &client.ListOptions{}); err != nil { + loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2605, logging.CRITICAL, "Unable to list APIs: %v", err.Error())) + return nil, err + } + apis = make([]API, len(apiList.Items)) + copy(apis[:], apiList.Items[:]) + } else { + for _, namespace := range namespaces { + apiList := &APIList{} + if err := c.List(ctx, apiList, &client.ListOptions{Namespace: namespace}); err != nil { + loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2605, logging.CRITICAL, "Unable to list APIs: %v", err.Error())) + return nil, err + } + apis = append(apis, apiList.Items...) + } + } + return apis, nil +} + +func validateAPIBasePathFormat(basePath string, apiVersion string) string { + if !strings.HasSuffix("/"+basePath, apiVersion) { + return "API basePath value should contain the /{APIVersion} at end." + } + return "" +} + +func validateAPIBasePathRegex(basePath, apiType string) string { + var pattern string + if apiType == "GRPC" { + pattern = `^[/][a-zA-Z][a-zA-Z0-9_.]*$` + } else { + pattern = `^[/][a-zA-Z0-9~/_.-]*$` + } + re, err := regexp.Compile(pattern) + if err != nil { + return "Failed to compile basePath regex pattern" + } + if !re.MatchString(basePath) { + return "API basePath is not in a valid format for the specified API type" + } + return "" +} + +// getBasePathWithoutVersion returns the basePath without version +func getBasePathWithoutVersion(basePath string) string { + lastIndex := strings.LastIndex(basePath, "/") + if lastIndex != -1 { + return basePath[:lastIndex] + } + return basePath +} + +func validateGzip(name, namespace string) (string, string) { + configMap := &corev1.ConfigMap{} + var err error + + if err = c.Get(context.Background(), types.NamespacedName{Name: string(name), Namespace: namespace}, configMap); err == nil { + var apiDef []byte + for _, val := range configMap.BinaryData { + // config map data key is "swagger.yaml" + apiDef = []byte(val) + } + // unzip gzip bytes + var schemaString string + if schemaString, err = unzip(apiDef); err != nil { + loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2600, logging.MINOR, "Error while unzipping gzip bytes: %v", err)) + return "", "invalid gzipped content" + } + return schemaString, "" + } + + loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2600, logging.MINOR, "ConfigMap for sdl not found: %v", err)) + + return "", "" +} + +// unzip gzip bytes +func unzip(compressedData []byte) (string, error) { + reader, err := gzip.NewReader(bytes.NewBuffer(compressedData)) + if err != nil { + return "", fmt.Errorf("error creating gzip reader: %v", err) + } + defer reader.Close() + + // Read the decompressed data + schemaString, err := io.ReadAll(reader) + if err != nil { + return "", fmt.Errorf("error reading decompressed data of the apiDefinition: %v", err) + } + return string(schemaString), nil +} + +func validateSDL(sdl string) string { + _, err := gqlparser.LoadSchema(&ast.Source{Input: sdl}) + if err != nil { + loggers.LoggerAPKOperator.ErrorC(logging.PrintError(logging.Error2600, logging.MINOR, "Error while parsing the GraphQL SDL: %v", err)) + return "error while parsing the GraphQL SDL" + } + return "" +} diff --git a/common-go-libs/apis/dp/v1beta1/groupversion_info.go b/common-go-libs/apis/dp/v1beta1/groupversion_info.go new file mode 100644 index 000000000..9f7ad3d00 --- /dev/null +++ b/common-go-libs/apis/dp/v1beta1/groupversion_info.go @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package v1beta1 contains API Schema definitions for the dp v1beta1 API group +// +kubebuilder:object:generate=true +// +groupName=dp.wso2.com +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "dp.wso2.com", Version: "v1beta1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/common-go-libs/apis/dp/v1beta1/zz_generated.deepcopy.go b/common-go-libs/apis/dp/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..79cffd6db --- /dev/null +++ b/common-go-libs/apis/dp/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,195 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *API) DeepCopyInto(out *API) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new API. +func (in *API) DeepCopy() *API { + if in == nil { + return nil + } + out := new(API) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *API) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIList) DeepCopyInto(out *APIList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]API, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIList. +func (in *APIList) DeepCopy() *APIList { + if in == nil { + return nil + } + out := new(APIList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APISpec) DeepCopyInto(out *APISpec) { + *out = *in + if in.Production != nil { + in, out := &in.Production, &out.Production + *out = make([]EnvConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Sandbox != nil { + in, out := &in.Sandbox, &out.Sandbox + *out = make([]EnvConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.APIProperties != nil { + in, out := &in.APIProperties, &out.APIProperties + *out = make([]Property, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APISpec. +func (in *APISpec) DeepCopy() *APISpec { + if in == nil { + return nil + } + out := new(APISpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIStatus) DeepCopyInto(out *APIStatus) { + *out = *in + in.DeploymentStatus.DeepCopyInto(&out.DeploymentStatus) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStatus. +func (in *APIStatus) DeepCopy() *APIStatus { + if in == nil { + return nil + } + out := new(APIStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { + *out = *in + if in.TransitionTime != nil { + in, out := &in.TransitionTime, &out.TransitionTime + *out = (*in).DeepCopy() + } + if in.Events != nil { + in, out := &in.Events, &out.Events + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStatus. +func (in *DeploymentStatus) DeepCopy() *DeploymentStatus { + if in == nil { + return nil + } + out := new(DeploymentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvConfig) DeepCopyInto(out *EnvConfig) { + *out = *in + if in.RouteRefs != nil { + in, out := &in.RouteRefs, &out.RouteRefs + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvConfig. +func (in *EnvConfig) DeepCopy() *EnvConfig { + if in == nil { + return nil + } + out := new(EnvConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Property) DeepCopyInto(out *Property) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Property. +func (in *Property) DeepCopy() *Property { + if in == nil { + return nil + } + out := new(Property) + in.DeepCopyInto(out) + return out +} diff --git a/common-go-libs/config/crd/bases/dp.wso2.com_apis.yaml b/common-go-libs/config/crd/bases/dp.wso2.com_apis.yaml index 385c45e7e..656e1ec56 100644 --- a/common-go-libs/config/crd/bases/dp.wso2.com_apis.yaml +++ b/common-go-libs/config/crd/bases/dp.wso2.com_apis.yaml @@ -360,6 +360,183 @@ spec: type: object type: object served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .spec.apiName + name: API Name + type: string + - jsonPath: .spec.apiVersion + name: Version + type: string + - jsonPath: .spec.basePath + name: BasePath + type: string + - jsonPath: .spec.organization + name: Organization + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: API is the Schema for the apis API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: APISpec defines the desired state of API + properties: + apiName: + description: APIName is the unique name of the API can be used to + uniquely identify an API. + maxLength: 60 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&$\[\]\/]*$ + type: string + apiProperties: + description: APIProperties denotes the custom properties of the API. + items: + description: Property holds key value pair of APIProperties + properties: + name: + type: string + value: + type: string + type: object + nullable: true + type: array + apiType: + description: APIType denotes the type of the API. Possible values + could be REST, GraphQL, Async, GRPC etc. + enum: + - REST + - GraphQL + - GRPC + type: string + apiVersion: + description: APIVersion is the version number of the API. + maxLength: 30 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&/$\[\]\s+\/]+$ + type: string + basePath: + description: 'BasePath denotes the basepath of the API. e.g: /pet-store-api/1.0.6' + type: string + definitionFileRef: + description: DefinitionFileRef contains the definition of the API + in a ConfigMap. + type: string + definitionPath: + default: /api-definition + description: DefinitionPath contains the path to expose the API definition. + minLength: 1 + type: string + environment: + description: Environment denotes the environment of the API. + nullable: true + type: string + isDefaultVersion: + description: IsDefaultVersion indicates whether this API version should + be used as a default API + type: boolean + organization: + description: Organization denotes the organization. related to the + API + type: string + production: + description: 'Production contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + routeRefs: + description: RouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - routeRefs + type: object + maxItems: 1 + nullable: true + type: array + sandbox: + description: 'Sandbox contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + routeRefs: + description: RouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - routeRefs + type: object + maxItems: 1 + nullable: true + type: array + systemAPI: + description: SystemAPI denotes if it is an internal system API. + type: boolean + required: + - apiName + - apiType + - apiVersion + - basePath + - definitionPath + type: object + status: + description: APIStatus defines the observed state of API + properties: + deploymentStatus: + description: DeploymentStatus denotes the deployment status of the + API + properties: + accepted: + description: Accepted represents whether the API is accepted or + not. + type: boolean + events: + description: Events contains a list of events related to the API. + items: + type: string + type: array + message: + description: Message represents a user friendly message that explains + the current state of the API. + type: string + status: + description: Status denotes the state of the API in its lifecycle. + Possible values could be Accepted, Invalid, Deploy etc. + type: string + transitionTime: + description: TransitionTime represents the last known transition + timestamp. + format: date-time + type: string + required: + - accepted + - status + - transitionTime + type: object + type: object + type: object + served: true storage: true subresources: status: {} diff --git a/common-go-libs/config/crd/kustomization.yaml b/common-go-libs/config/crd/kustomization.yaml new file mode 100644 index 000000000..f5a7460e0 --- /dev/null +++ b/common-go-libs/config/crd/kustomization.yaml @@ -0,0 +1,21 @@ +# This kustomization.yaml is not intended to be run by itself, +# since it depends on service name and namespace that are out of this kustomize package. +# It should be run by config/default +resources: +- bases/dp.wso2.com_apis.yaml +#+kubebuilder:scaffold:crdkustomizeresource + +patchesStrategicMerge: +# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. +# patches here are for enabling the conversion webhook for each CRD +#- patches/webhook_in_apis.yaml +#+kubebuilder:scaffold:crdkustomizewebhookpatch + +# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. +# patches here are for enabling the CA injection for each CRD +#- patches/cainjection_in_apis.yaml +#+kubebuilder:scaffold:crdkustomizecainjectionpatch + +# the following config is for teaching kustomize how to do kustomization for CRDs. +configurations: +- kustomizeconfig.yaml diff --git a/common-go-libs/config/crd/kustomizeconfig.yaml b/common-go-libs/config/crd/kustomizeconfig.yaml new file mode 100644 index 000000000..ec5c150a9 --- /dev/null +++ b/common-go-libs/config/crd/kustomizeconfig.yaml @@ -0,0 +1,19 @@ +# This file is for teaching kustomize how to substitute name and namespace reference in CRD +nameReference: +- kind: Service + version: v1 + fieldSpecs: + - kind: CustomResourceDefinition + version: v1 + group: apiextensions.k8s.io + path: spec/conversion/webhook/clientConfig/service/name + +namespace: +- kind: CustomResourceDefinition + version: v1 + group: apiextensions.k8s.io + path: spec/conversion/webhook/clientConfig/service/namespace + create: false + +varReference: +- path: metadata/annotations diff --git a/common-go-libs/config/crd/patches/cainjection_in_dp_apis.yaml b/common-go-libs/config/crd/patches/cainjection_in_dp_apis.yaml new file mode 100644 index 000000000..7f949667b --- /dev/null +++ b/common-go-libs/config/crd/patches/cainjection_in_dp_apis.yaml @@ -0,0 +1,7 @@ +# The following patch adds a directive for certmanager to inject CA into the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) + name: apis.dp.wso2.com diff --git a/common-go-libs/config/crd/patches/webhook_in_dp_apis.yaml b/common-go-libs/config/crd/patches/webhook_in_dp_apis.yaml new file mode 100644 index 000000000..ad0c609d5 --- /dev/null +++ b/common-go-libs/config/crd/patches/webhook_in_dp_apis.yaml @@ -0,0 +1,16 @@ +# The following patch enables a conversion webhook for the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: apis.dp.wso2.com +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + namespace: system + name: webhook-service + path: /convert + conversionReviewVersions: + - v1 diff --git a/common-go-libs/config/rbac/dp_api_editor_role.yaml b/common-go-libs/config/rbac/dp_api_editor_role.yaml new file mode 100644 index 000000000..2de3070c5 --- /dev/null +++ b/common-go-libs/config/rbac/dp_api_editor_role.yaml @@ -0,0 +1,31 @@ +# permissions for end users to edit apis. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: api-editor-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: operator + app.kubernetes.io/part-of: operator + app.kubernetes.io/managed-by: kustomize + name: api-editor-role +rules: +- apiGroups: + - dp.wso2.com + resources: + - apis + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - dp.wso2.com + resources: + - apis/status + verbs: + - get diff --git a/common-go-libs/config/rbac/dp_api_viewer_role.yaml b/common-go-libs/config/rbac/dp_api_viewer_role.yaml new file mode 100644 index 000000000..75e4c488a --- /dev/null +++ b/common-go-libs/config/rbac/dp_api_viewer_role.yaml @@ -0,0 +1,27 @@ +# permissions for end users to view apis. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: api-viewer-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: operator + app.kubernetes.io/part-of: operator + app.kubernetes.io/managed-by: kustomize + name: api-viewer-role +rules: +- apiGroups: + - dp.wso2.com + resources: + - apis + verbs: + - get + - list + - watch +- apiGroups: + - dp.wso2.com + resources: + - apis/status + verbs: + - get diff --git a/common-go-libs/config/rbac/role.yaml b/common-go-libs/config/rbac/role.yaml new file mode 100644 index 000000000..44306fcc6 --- /dev/null +++ b/common-go-libs/config/rbac/role.yaml @@ -0,0 +1,32 @@ +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: manager-role +rules: +- apiGroups: + - dp.wso2.com + resources: + - apis + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - dp.wso2.com + resources: + - apis/finalizers + verbs: + - update +- apiGroups: + - dp.wso2.com + resources: + - apis/status + verbs: + - get + - patch + - update diff --git a/common-go-libs/config/samples/dp_v1beta1_api.yaml b/common-go-libs/config/samples/dp_v1beta1_api.yaml new file mode 100644 index 000000000..0e8e11b32 --- /dev/null +++ b/common-go-libs/config/samples/dp_v1beta1_api.yaml @@ -0,0 +1,12 @@ +apiVersion: dp.wso2.com/v1beta1 +kind: Api +metadata: + labels: + app.kubernetes.io/name: api + app.kubernetes.io/instance: api-sample + app.kubernetes.io/part-of: operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: operator + name: api-sample +spec: + # TODO(user): Add fields here diff --git a/common-go-libs/config/webhook/manifests.yaml b/common-go-libs/config/webhook/manifests.yaml index 411ed6ee8..0df6a571a 100644 --- a/common-go-libs/config/webhook/manifests.yaml +++ b/common-go-libs/config/webhook/manifests.yaml @@ -10,7 +10,7 @@ webhooks: service: name: webhook-service namespace: system - path: /mutate-dp-wso2-com-v1alpha2-api + path: /mutate-dp-wso2-com-v1beta1-api failurePolicy: Fail name: mapi.kb.io rules: @@ -30,9 +30,9 @@ webhooks: service: name: webhook-service namespace: system - path: /mutate-dp-wso2-com-v1alpha2-apipolicy + path: /mutate-dp-wso2-com-v1alpha2-api failurePolicy: Fail - name: mapipolicy.kb.io + name: mapi.kb.io rules: - apiGroups: - dp.wso2.com @@ -42,7 +42,7 @@ webhooks: - CREATE - UPDATE resources: - - apipolicies + - apis sideEffects: None - admissionReviewVersions: - v1 @@ -50,9 +50,9 @@ webhooks: service: name: webhook-service namespace: system - path: /mutate-dp-wso2-com-v1alpha2-authentication + path: /mutate-dp-wso2-com-v1alpha2-apipolicy failurePolicy: Fail - name: mauthentication.kb.io + name: mapipolicy.kb.io rules: - apiGroups: - dp.wso2.com @@ -62,7 +62,7 @@ webhooks: - CREATE - UPDATE resources: - - authentications + - apipolicies sideEffects: None - admissionReviewVersions: - v1 @@ -70,19 +70,19 @@ webhooks: service: name: webhook-service namespace: system - path: /mutate-dp-wso2-com-v1alpha1-apipolicy + path: /mutate-dp-wso2-com-v1alpha2-authentication failurePolicy: Fail - name: mapipolicy.kb.io + name: mauthentication.kb.io rules: - apiGroups: - dp.wso2.com apiVersions: - - v1alpha1 + - v1alpha2 operations: - CREATE - UPDATE resources: - - apipolicies + - authentications sideEffects: None - admissionReviewVersions: - v1 @@ -90,9 +90,9 @@ webhooks: service: name: webhook-service namespace: system - path: /mutate-dp-wso2-com-v1alpha1-authentication + path: /mutate-dp-wso2-com-v1alpha1-apipolicy failurePolicy: Fail - name: mauthentication.kb.io + name: mapipolicy.kb.io rules: - apiGroups: - dp.wso2.com @@ -102,7 +102,7 @@ webhooks: - CREATE - UPDATE resources: - - authentications + - apipolicies sideEffects: None - admissionReviewVersions: - v1 @@ -196,7 +196,7 @@ webhooks: service: name: webhook-service namespace: system - path: /validate-dp-wso2-com-v1alpha2-api + path: /validate-dp-wso2-com-v1beta1-api failurePolicy: Fail name: vapi.kb.io rules: @@ -216,9 +216,9 @@ webhooks: service: name: webhook-service namespace: system - path: /validate-dp-wso2-com-v1alpha2-apipolicy + path: /validate-dp-wso2-com-v1alpha2-api failurePolicy: Fail - name: vapipolicy.kb.io + name: vapi.kb.io rules: - apiGroups: - dp.wso2.com @@ -228,7 +228,7 @@ webhooks: - CREATE - UPDATE resources: - - apipolicies + - apis sideEffects: None - admissionReviewVersions: - v1 @@ -236,9 +236,9 @@ webhooks: service: name: webhook-service namespace: system - path: /validate-dp-wso2-com-v1alpha2-authentication + path: /validate-dp-wso2-com-v1alpha2-apipolicy failurePolicy: Fail - name: vauthentication.kb.io + name: vapipolicy.kb.io rules: - apiGroups: - dp.wso2.com @@ -248,7 +248,7 @@ webhooks: - CREATE - UPDATE resources: - - authentications + - apipolicies sideEffects: None - admissionReviewVersions: - v1 @@ -256,19 +256,19 @@ webhooks: service: name: webhook-service namespace: system - path: /validate-dp-wso2-com-v1alpha1-apipolicy + path: /validate-dp-wso2-com-v1alpha2-authentication failurePolicy: Fail - name: vapipolicy.kb.io + name: vauthentication.kb.io rules: - apiGroups: - dp.wso2.com apiVersions: - - v1alpha1 + - v1alpha2 operations: - CREATE - UPDATE resources: - - apipolicies + - authentications sideEffects: None - admissionReviewVersions: - v1 @@ -276,9 +276,9 @@ webhooks: service: name: webhook-service namespace: system - path: /validate-dp-wso2-com-v1alpha1-authentication + path: /validate-dp-wso2-com-v1alpha1-apipolicy failurePolicy: Fail - name: vauthentication.kb.io + name: vapipolicy.kb.io rules: - apiGroups: - dp.wso2.com @@ -288,7 +288,7 @@ webhooks: - CREATE - UPDATE resources: - - authentications + - apipolicies sideEffects: None - admissionReviewVersions: - v1 diff --git a/common-go-libs/controllers/dp/suite_test.go b/common-go-libs/controllers/dp/suite_test.go new file mode 100644 index 000000000..ebb404125 --- /dev/null +++ b/common-go-libs/controllers/dp/suite_test.go @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package dp + +import ( + "path/filepath" + "testing" + + "github.com/onsi/ginkgo/v2" + "github.com/onsi/gomega" + + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/envtest" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" + + dpv1beta1 "github.com/wso2/apk/common-go-libs/apis/dp/v1beta1" + //+kubebuilder:scaffold:imports +) + +// These tests use Ginkgo (BDD-style Go testing framework). Refer to +// http://onsi.github.io/ginkgo/ to learn more about Ginkgo. + +var cfg *rest.Config +var k8sClient client.Client +var testEnv *envtest.Environment + +func TestAPIs(t *testing.T) { + gomega.RegisterFailHandler(ginkgo.Fail) + + ginkgo.RunSpecs(t, "Controller Suite") +} + +var _ = ginkgo.BeforeSuite(func() { + logf.SetLogger(zap.New(zap.WriteTo(ginkgo.GinkgoWriter), zap.UseDevMode(true))) + + ginkgo.By("bootstrapping test environment") + testEnv = &envtest.Environment{ + CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")}, + ErrorIfCRDPathMissing: true, + } + + var err error + // cfg is defined in this file globally. + cfg, err = testEnv.Start() + gomega.Expect(err).NotTo(gomega.HaveOccurred()) + gomega.Expect(cfg).NotTo(gomega.BeNil()) + + err = dpv1beta1.AddToScheme(scheme.Scheme) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) + + //+kubebuilder:scaffold:scheme + + k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) + gomega.Expect(k8sClient).NotTo(gomega.BeNil()) + +}) + +var _ = ginkgo.AfterSuite(func() { + ginkgo.By("tearing down the test environment") + err := testEnv.Stop() + gomega.Expect(err).NotTo(gomega.HaveOccurred()) +}) diff --git a/common-go-libs/coverage.out b/common-go-libs/coverage.out new file mode 100644 index 000000000..ccf60e676 --- /dev/null +++ b/common-go-libs/coverage.out @@ -0,0 +1,1186 @@ +mode: atomic +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:27.56,43.32 12 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:43.32,45.53 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:45.53,49.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:51.2,51.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:51.29,53.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:53.47,57.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:61.2,62.43 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:62.43,64.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:65.2,70.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:75.58,91.32 12 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:91.32,93.53 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:93.53,97.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:100.2,100.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:100.29,102.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:102.47,106.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:110.2,111.43 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:111.43,113.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_conversion.go:114.2,119.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_types.go:194.13,196.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/api_webhook.go:25.63,29.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:28.62,32.29 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:32.29,34.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:34.47,37.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:38.3,38.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:38.41,47.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:48.3,48.50 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:48.50,50.69 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:50.69,53.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:55.3,55.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:55.51,57.70 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:57.70,60.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:62.3,63.36 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:66.2,66.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:66.30,68.48 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:68.48,71.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:72.3,72.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:72.42,81.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:82.3,82.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:82.51,84.70 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:84.70,87.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:89.3,89.52 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:89.52,91.71 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:91.71,94.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:96.3,97.37 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:99.2,99.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:99.35,104.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:105.2,105.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:110.64,115.29 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:115.29,117.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:117.47,120.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:121.3,121.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:121.41,129.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:130.3,130.50 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:130.50,132.69 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:132.69,135.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:137.3,137.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:137.51,139.70 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:139.70,142.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:144.3,144.36 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:146.2,146.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:146.30,148.48 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:148.48,151.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:152.3,152.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:152.42,160.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:161.3,161.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:161.51,163.70 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:163.70,166.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:168.3,168.52 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:168.52,170.71 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:170.71,173.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:175.3,175.37 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:177.2,177.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:177.35,182.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_conversion.go:183.2,183.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_types.go:138.13,140.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:33.69,37.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:46.32,46.33 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:54.66,56.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:59.84,61.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:64.44,67.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:67.33,69.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:70.2,71.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:71.51,74.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:75.2,75.107 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:75.107,78.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:79.2,79.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:79.22,83.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:84.2,84.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/apipolicy_webhook.go:88.66,91.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:27.67,34.29 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:34.29,38.41 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:38.41,47.66 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:47.66,54.5 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:55.4,55.76 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:55.76,60.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:61.4,61.60 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:63.3,63.48 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:66.2,66.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:66.30,70.42 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:70.42,79.67 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:79.67,86.5 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:87.4,87.77 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:87.77,92.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:93.4,93.61 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:95.3,95.50 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:99.2,100.12 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:105.69,112.29 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:112.29,116.41 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:116.41,124.66 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:124.66,131.5 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:132.4,136.60 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:138.3,138.48 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:141.2,141.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:141.30,145.42 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:145.42,153.67 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:153.67,160.5 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:161.4,165.61 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:167.3,167.50 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_conversion.go:170.2,172.12 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_types.go:142.13,144.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/authentication_webhook.go:25.74,29.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_types.go:280.13,282.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:35.67,39.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:48.29,52.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:60.64,62.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:65.82,67.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:70.64,75.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:77.47,80.24 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:80.24,81.54 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:81.54,82.44 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:82.44,85.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:89.2,89.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:89.22,93.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backend_webhook.go:94.2,94.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_types.go:109.13,111.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:34.70,38.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:47.33,49.2 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:57.67,60.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:63.85,66.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:68.48,71.31 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:71.31,73.18 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:74.14,75.55 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:75.55,77.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:78.16,79.65 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:79.65,81.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:82.15,83.60 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:83.60,85.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:86.15,87.67 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:87.67,89.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:90.15,91.67 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:91.67,93.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:97.2,97.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:97.22,101.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:102.2,102.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/backendjwt_webhook.go:106.67,109.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/custom_ratelimit_policy.go:32.94,40.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_types.go:91.13,93.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_webhook.go:28.78,32.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_webhook.go:41.41,41.42 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_webhook.go:49.75,52.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_webhook.go:55.93,58.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/interceptorservice_webhook.go:61.75,64.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_types.go:114.13,116.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:33.75,37.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:46.38,48.2 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:56.72,60.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:63.90,67.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:70.72,74.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:77.52,79.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:79.33,82.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:83.2,84.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:84.51,87.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:88.2,88.107 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:88.107,91.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:93.2,93.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:93.22,97.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/ratelimitpolicy_webhook.go:98.2,98.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/scope_types.go:66.13,68.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenIssuer_types.go:129.13,131.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:27.64,39.41 8 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:39.41,42.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:42.22,47.23 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:47.23,49.42 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:49.42,51.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:52.5,52.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:52.34,57.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:58.5,58.37 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:58.37,63.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:65.4,65.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:67.3,67.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:67.29,72.36 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:72.36,77.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:78.4,78.39 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:78.39,83.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:84.4,84.48 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:86.3,86.57 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:88.2,88.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:88.35,91.45 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:91.45,93.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:94.3,94.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:96.2,97.12 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:102.66,114.41 8 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:114.41,117.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:117.22,122.23 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:122.23,124.42 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:124.42,126.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:127.5,127.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:127.34,132.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:133.5,133.37 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:133.37,138.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:140.4,140.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:142.3,142.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:142.29,147.36 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:147.36,152.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:153.4,153.39 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:153.39,158.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:159.4,159.48 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:161.3,161.57 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:163.2,163.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:163.35,166.45 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:166.45,168.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:169.3,169.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/tokenissuer_conversion.go:171.2,172.12 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:31.39,37.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:40.32,41.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:41.15,43.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:44.2,46.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:50.48,51.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:51.34,53.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:54.2,54.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:58.47,61.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:61.22,65.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:66.2,66.40 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:70.40,71.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:71.15,73.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:74.2,76.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:80.53,82.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:85.46,86.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:86.15,88.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:89.2,91.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:95.47,99.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:99.21,102.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:102.22,104.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:109.40,110.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:110.15,112.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:113.2,115.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:119.52,120.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:120.34,122.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:123.2,123.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:127.51,133.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:136.44,137.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:137.15,139.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:140.2,142.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:146.54,147.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:147.34,149.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:150.2,150.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:154.59,158.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:158.21,161.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:161.22,163.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:168.52,169.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:169.15,171.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:172.2,174.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:178.58,179.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:179.34,181.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:182.2,182.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:186.59,188.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:188.23,192.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:193.2,193.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:193.24,197.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:198.2,198.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:202.52,203.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:203.15,205.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:206.2,208.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:212.63,214.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:217.56,218.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:218.15,220.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:221.2,223.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:227.69,229.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:232.62,233.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:233.15,235.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:236.2,238.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:242.47,244.26 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:244.26,247.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:247.22,249.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:251.2,251.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:251.23,254.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:254.22,256.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:258.2,258.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:258.29,262.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:266.40,267.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:267.15,269.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:270.2,272.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:276.51,279.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:282.44,283.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:283.15,285.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:286.2,288.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:292.49,294.24 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:294.24,298.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:299.2,299.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:299.25,303.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:307.42,308.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:308.15,310.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:311.2,313.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:317.61,323.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:326.54,327.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:327.15,329.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:330.2,332.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:336.59,337.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:337.34,339.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:340.2,340.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:344.69,348.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:348.21,351.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:351.22,353.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:358.62,359.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:359.15,361.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:362.2,364.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:368.63,369.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:369.34,371.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:372.2,372.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:376.69,378.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:378.23,382.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:383.2,383.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:383.24,387.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:388.2,388.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:392.62,393.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:393.15,395.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:396.2,398.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:402.73,404.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:407.66,408.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:408.15,410.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:411.2,413.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:417.47,423.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:426.40,427.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:427.15,429.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:430.2,432.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:436.52,437.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:437.34,439.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:440.2,440.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:444.53,450.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:453.46,454.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:454.15,456.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:457.2,459.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:463.55,464.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:464.34,466.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:467.2,467.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:471.61,475.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:475.21,478.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:478.22,480.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:485.54,486.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:486.15,488.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:489.2,491.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:495.59,496.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:496.34,498.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:499.2,499.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:503.61,505.28 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:505.28,509.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:513.54,514.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:514.15,516.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:517.2,519.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:523.65,525.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:528.58,529.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:529.15,531.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:532.2,534.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:538.63,540.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:543.56,544.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:544.15,546.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:547.2,549.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:553.55,557.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:557.21,560.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:560.22,562.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:567.48,568.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:568.15,570.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:571.2,573.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:577.56,578.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:578.34,580.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:581.2,581.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:585.65,587.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:590.58,591.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:591.15,593.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:594.2,596.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:600.55,602.24 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:602.24,606.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:607.2,607.19 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:607.19,611.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:612.2,612.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:612.24,616.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:617.2,617.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:617.30,621.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:622.2,622.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:622.23,626.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:627.2,627.21 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:627.21,631.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:632.2,632.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:632.27,636.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:640.48,641.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:641.15,643.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:644.2,646.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:650.59,652.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:655.52,656.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:656.15,658.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:659.2,661.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:665.71,668.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:671.64,672.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:672.15,674.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:675.2,677.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:681.53,683.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:683.33,687.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:688.2,688.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:688.25,692.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:693.2,693.28 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:693.28,697.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:701.46,702.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:702.15,704.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:705.2,707.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:711.53,713.41 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:713.41,717.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:718.2,718.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:718.41,722.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:723.2,723.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:723.41,727.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:728.2,728.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:728.42,732.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:733.2,733.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:733.35,737.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:741.46,742.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:742.15,744.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:745.2,747.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:751.61,753.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:756.54,757.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:757.15,759.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:760.2,762.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:766.57,768.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:771.50,772.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:772.15,774.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:775.2,777.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:781.55,783.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:786.48,787.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:787.15,789.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:790.2,792.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:796.75,798.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:801.68,802.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:802.15,804.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:805.2,807.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:811.81,813.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:816.74,817.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:817.15,819.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:820.2,822.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:826.65,828.30 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:828.30,831.3 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:832.2,832.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:832.22,836.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:840.58,841.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:841.15,843.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:844.2,846.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:850.51,852.29 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:852.29,856.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:860.44,861.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:861.15,863.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:864.2,866.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:870.55,872.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:875.48,876.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:876.15,878.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:879.2,881.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:885.73,887.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:890.66,891.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:891.15,893.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:894.2,896.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:900.69,906.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:909.62,910.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:910.15,912.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:913.2,915.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:919.63,920.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:920.34,922.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:923.2,923.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:927.77,931.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:931.21,934.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:934.22,936.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:941.70,942.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:942.15,944.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:945.2,947.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:951.67,952.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:952.34,954.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:955.2,955.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:959.77,962.24 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:962.24,966.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:970.70,971.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:971.15,973.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:974.2,976.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:980.81,982.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:985.74,986.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:986.15,988.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:989.2,991.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:995.41,997.19 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:997.19,1001.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1005.34,1006.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1006.15,1008.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1009.2,1011.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1015.64,1016.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1016.2,1019.29 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1019.29,1021.18 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1021.18,1023.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1023.10,1027.5 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1028.4,1028.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1034.56,1035.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1035.15,1037.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1038.2,1040.13 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1044.53,1046.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1049.46,1050.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1050.15,1052.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1053.2,1055.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1059.53,1061.35 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1061.35,1065.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1066.2,1066.36 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1066.36,1070.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1071.2,1071.32 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1071.32,1075.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1076.2,1076.26 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1076.26,1080.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1084.46,1085.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1085.15,1087.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1088.2,1090.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1094.49,1096.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1099.42,1100.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1100.15,1102.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1103.2,1105.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1109.69,1111.19 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1111.19,1115.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1116.2,1116.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1116.22,1120.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1124.62,1125.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1125.15,1127.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1128.2,1130.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1134.63,1140.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1143.56,1144.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1144.15,1146.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1147.2,1149.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1153.60,1154.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1154.34,1156.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1157.2,1157.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1161.71,1165.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1165.21,1168.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1168.22,1170.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1175.64,1176.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1176.15,1178.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1179.2,1181.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1185.64,1186.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1186.34,1188.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1189.2,1189.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1193.71,1195.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1195.23,1199.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1200.2,1200.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1200.24,1204.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1205.2,1205.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1209.64,1210.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1210.15,1212.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1213.2,1215.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1219.75,1221.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1224.68,1225.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1225.15,1227.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1228.2,1230.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1234.51,1236.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1239.44,1240.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1240.15,1242.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1243.2,1245.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1249.65,1251.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1254.58,1255.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1255.15,1257.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1258.2,1260.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1264.83,1267.25 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1267.25,1271.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1275.76,1276.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1276.15,1278.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1279.2,1281.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1285.63,1288.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1291.56,1292.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1292.15,1294.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1295.2,1297.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1301.63,1304.24 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1304.24,1308.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1309.2,1311.30 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1311.30,1315.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1316.2,1316.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1316.23,1320.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1321.2,1321.21 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1321.21,1325.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1326.2,1326.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1326.27,1330.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1334.56,1335.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1335.15,1337.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1338.2,1340.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1344.87,1346.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1349.80,1350.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1350.15,1352.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1353.2,1355.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1359.57,1361.19 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1361.19,1365.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1369.50,1370.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1370.15,1372.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1373.2,1375.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1379.67,1382.29 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1382.29,1385.29 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1385.29,1387.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1389.2,1389.28 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1389.28,1393.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1397.60,1398.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1398.15,1400.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1401.2,1403.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1407.77,1410.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1413.70,1414.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1414.15,1416.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1417.2,1419.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1423.87,1425.20 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1425.20,1429.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1430.2,1430.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1430.27,1434.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1438.80,1439.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1439.15,1441.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1442.2,1444.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1448.67,1450.27 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1450.27,1454.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1458.60,1459.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1459.15,1461.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1462.2,1464.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1468.55,1470.27 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1470.27,1474.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1478.48,1479.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1479.15,1481.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1482.2,1484.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1488.43,1494.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1497.36,1498.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1498.15,1500.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1501.2,1503.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1507.50,1508.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1508.34,1510.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1511.2,1511.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1515.51,1519.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1519.21,1522.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1522.22,1524.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1529.44,1530.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1530.15,1532.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1533.2,1535.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1539.54,1540.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1540.34,1542.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1543.2,1543.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1547.51,1549.21 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1549.21,1553.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1557.44,1558.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1558.15,1560.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1561.2,1563.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1567.55,1569.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1572.48,1573.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1573.15,1575.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1576.2,1578.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1582.51,1584.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1587.44,1588.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1588.15,1590.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1591.2,1593.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1597.61,1599.21 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1599.21,1603.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1607.54,1608.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1608.15,1610.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1611.2,1613.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1617.47,1619.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1622.40,1623.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1623.15,1625.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1626.2,1628.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1632.71,1634.20 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1634.20,1638.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1639.2,1639.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1639.27,1643.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1647.64,1648.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1648.15,1650.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1651.2,1653.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1657.51,1659.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1659.33,1663.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1664.2,1664.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1664.25,1668.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1669.2,1669.28 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1669.28,1673.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1674.2,1674.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1674.27,1678.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1682.44,1683.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1683.15,1685.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1686.2,1688.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1692.69,1694.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1697.62,1698.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1698.15,1700.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1701.2,1703.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1707.47,1709.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1712.40,1713.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1713.15,1715.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1716.2,1718.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1722.55,1728.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1731.48,1732.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1732.15,1734.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1735.2,1737.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1741.56,1742.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1742.34,1744.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1745.2,1745.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1749.63,1753.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1753.21,1756.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1756.22,1758.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1763.56,1764.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1764.15,1766.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1767.2,1769.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1773.60,1774.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1774.34,1776.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1777.2,1777.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1781.63,1783.35 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1783.35,1787.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1788.2,1788.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1788.29,1791.18 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1791.18,1795.4 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1797.2,1797.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1797.25,1801.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1805.56,1806.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1806.15,1808.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1809.2,1811.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1815.67,1817.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1820.60,1821.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1821.15,1823.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha1/zz_generated.deepcopy.go:1824.2,1826.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:27.56,43.32 12 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:43.32,45.53 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:45.53,49.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:51.2,51.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:51.29,53.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:53.47,57.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:61.2,62.43 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:62.43,64.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:65.2,70.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:75.58,91.32 12 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:91.32,93.53 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:93.53,97.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:100.2,100.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:100.29,102.47 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:102.47,106.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:110.2,111.43 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:111.43,113.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_conversion.go:114.2,119.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_types.go:198.13,200.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:52.63,58.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:67.26,69.2 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:77.60,79.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:82.78,84.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:87.60,91.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:94.35,98.25 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:98.25,99.48 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:99.48,102.4 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:105.2,105.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:105.27,107.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:107.8,107.94 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:107.94,109.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:109.8,109.98 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:109.98,111.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:111.8,111.78 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:111.78,113.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:115.2,115.36 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:115.36,116.96 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:116.96,118.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:118.9,118.63 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:118.63,119.57 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:119.57,121.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:123.8,123.40 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:123.40,125.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:128.2,128.31 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:128.31,130.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:132.2,133.108 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:133.108,136.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:138.2,139.32 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:139.32,141.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:142.2,142.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:142.29,144.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:146.2,146.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:146.43,149.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:151.2,151.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:151.43,154.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:156.2,156.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:156.22,160.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:162.2,162.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:165.51,166.30 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:166.30,167.16 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:167.16,169.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:171.2,171.14 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:174.73,177.16 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:177.16,181.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:182.2,184.30 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:184.30,186.68 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:186.68,190.54 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:190.54,196.5 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:197.4,197.31 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:197.31,200.34 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:200.34,201.77 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:201.77,207.7 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:210.5,210.73 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:210.73,216.6 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:220.2,220.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:223.39,228.23 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:228.23,230.69 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:230.69,233.4 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:234.3,235.34 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:236.8,237.40 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:237.40,239.90 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:239.90,242.5 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:243.4,243.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:246.2,246.18 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:249.75,250.50 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:250.50,252.3 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:253.2,253.11 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:256.64,258.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:258.23,260.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:260.8,262.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:263.2,264.16 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:264.16,266.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:267.2,267.31 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:267.31,269.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:270.2,270.11 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:274.56,276.21 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:276.21,278.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:279.2,279.17 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:282.60,286.126 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:286.126,288.44 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:288.44,291.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:293.3,294.52 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:294.52,297.4 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:298.3,298.26 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:301.2,303.15 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:307.51,309.16 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:309.16,311.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:312.2,316.16 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:316.16,318.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:319.2,319.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:322.37,324.16 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:324.16,327.3 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/api_webhook.go:328.2,328.11 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_conversion.go:21.26,21.27 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_types.go:153.13,155.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:33.69,37.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:46.32,46.33 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:54.66,56.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:59.84,61.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:64.44,67.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:67.33,69.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:70.2,71.51 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:71.51,74.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:75.2,75.107 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:75.107,78.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:79.2,79.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:79.22,83.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:84.2,84.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/apipolicy_webhook.go:88.66,91.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_conversion.go:21.31,21.32 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_types.go:196.13,198.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:34.74,38.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:47.37,49.2 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:57.71,60.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:63.89,65.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:68.57,71.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:71.33,73.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:74.2,74.102 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:74.102,77.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:79.2,88.107 7 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:88.107,98.69 7 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:98.69,101.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:103.3,103.64 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:103.64,106.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:108.3,108.40 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:108.40,111.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:113.3,113.136 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:113.136,116.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:117.8,117.117 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:117.117,127.69 7 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:127.69,130.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:132.3,132.64 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:132.64,135.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:137.3,137.40 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:137.40,140.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:142.3,142.136 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:142.136,145.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:148.2,148.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:148.22,152.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:153.2,153.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/authentication_webhook.go:157.71,160.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/gqlroute_types.go:136.13,138.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/tokenissuer_conversion.go:21.28,21.29 0 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/tokenissuer_types.go:149.13,151.2 1 1 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:32.39,38.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:41.32,42.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:42.15,44.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:45.2,47.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:51.48,52.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:52.34,54.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:55.2,55.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:59.47,62.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:62.22,66.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:67.2,68.25 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:68.25,72.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:76.40,77.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:77.15,79.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:80.2,82.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:86.53,88.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:91.46,92.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:92.15,94.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:95.2,97.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:101.47,105.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:105.21,108.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:108.22,110.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:115.40,116.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:116.15,118.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:119.2,121.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:125.52,126.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:126.34,128.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:129.2,129.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:133.51,139.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:142.44,143.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:143.15,145.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:146.2,148.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:152.54,153.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:153.34,155.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:156.2,156.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:160.59,164.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:164.21,167.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:167.22,169.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:174.52,175.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:175.15,177.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:178.2,180.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:184.58,185.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:185.34,187.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:188.2,188.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:192.59,194.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:194.23,198.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:199.2,199.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:199.24,203.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:204.2,204.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:208.52,209.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:209.15,211.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:212.2,214.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:218.63,220.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:223.56,224.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:224.15,226.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:227.2,229.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:233.47,235.26 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:235.26,238.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:238.22,240.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:242.2,242.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:242.23,245.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:245.22,247.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:249.2,249.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:249.29,253.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:257.40,258.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:258.15,260.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:261.2,263.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:267.51,270.2 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:273.44,274.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:274.15,276.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:277.2,279.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:283.49,285.24 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:285.24,289.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:290.2,290.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:290.25,294.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:298.42,299.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:299.15,301.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:302.2,304.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:308.61,314.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:317.54,318.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:318.15,320.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:321.2,323.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:327.59,328.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:328.34,330.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:331.2,331.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:335.69,339.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:339.21,342.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:342.22,344.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:349.62,350.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:350.15,352.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:353.2,355.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:359.63,360.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:360.34,362.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:363.2,363.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:367.69,369.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:369.23,373.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:374.2,374.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:374.24,378.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:379.2,379.43 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:383.62,384.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:384.15,386.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:387.2,389.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:393.73,395.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:398.66,399.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:399.15,401.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:402.2,404.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:408.63,410.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:413.56,414.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:414.15,416.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:417.2,419.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:423.53,425.33 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:425.33,429.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:430.2,430.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:430.25,434.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:435.2,435.28 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:435.28,439.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:443.46,444.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:444.15,446.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:447.2,449.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:453.53,455.41 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:455.41,459.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:460.2,460.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:460.41,464.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:465.2,465.41 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:465.41,469.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:470.2,470.42 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:470.42,474.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:475.2,475.35 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:475.35,479.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:483.46,484.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:484.15,486.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:487.2,489.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:493.57,495.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:498.50,499.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:499.15,501.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:502.2,504.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:508.65,510.30 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:510.30,513.3 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:514.2,514.22 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:514.22,518.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:522.58,523.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:523.15,525.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:526.2,528.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:532.51,534.25 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:534.25,538.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:542.44,543.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:543.15,545.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:546.2,548.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:552.49,558.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:561.42,562.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:562.15,564.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:565.2,567.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:571.53,572.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:572.34,574.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:575.2,575.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:579.61,581.28 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:581.28,585.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:589.54,590.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:590.15,592.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:593.2,595.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:599.57,603.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:603.21,606.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:606.22,608.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:613.50,614.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:614.15,616.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:617.2,619.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:623.57,624.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:624.34,626.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:627.2,627.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:631.59,633.20 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:633.20,637.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:638.2,638.20 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:638.20,642.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:646.52,647.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:647.15,649.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:650.2,652.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:656.59,658.23 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:658.23,661.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:661.22,663.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:665.2,665.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:665.23,668.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:668.22,670.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:675.52,676.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:676.15,678.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:679.2,681.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:685.57,688.25 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:688.25,692.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:693.2,693.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:693.27,696.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:696.22,698.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:700.2,700.21 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:700.21,703.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:703.22,705.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:710.50,711.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:711.15,713.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:714.2,716.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:720.61,722.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:725.54,726.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:726.15,728.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:729.2,731.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:735.73,737.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:740.66,741.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:741.15,743.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:744.2,746.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:750.41,752.19 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:752.19,756.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:760.34,761.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:761.15,763.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:764.2,766.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:770.39,772.24 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:772.24,776.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:777.2,777.24 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:777.24,781.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:785.32,786.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:786.15,788.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:789.2,791.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:795.51,797.34 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:797.34,801.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:805.44,806.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:806.15,808.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:809.2,811.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:815.63,817.34 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:817.34,820.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:820.22,821.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:821.23,825.5 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:828.2,828.26 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:828.26,831.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:831.22,832.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:832.23,836.5 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:839.2,839.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:839.29,842.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:842.22,843.23 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:843.23,847.5 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:853.56,854.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:854.15,856.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:857.2,859.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:863.53,865.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:868.46,869.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:869.15,871.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:872.2,874.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:878.53,880.35 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:880.35,884.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:885.2,885.36 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:885.36,889.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:890.2,890.32 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:890.32,894.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:895.2,895.26 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:895.26,899.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:903.46,904.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:904.15,906.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:907.2,909.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:913.49,915.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:918.42,919.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:919.15,921.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:922.2,924.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:928.51,930.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:933.44,934.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:934.15,936.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:937.2,939.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:943.71,945.20 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:945.20,949.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:950.2,950.27 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:950.27,954.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:958.64,959.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:959.15,961.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:962.2,964.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:968.55,974.2 5 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:977.48,978.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:978.15,980.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:981.2,983.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:987.56,988.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:988.34,990.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:991.2,991.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:995.63,999.21 4 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:999.21,1002.22 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1002.22,1004.4 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1009.56,1010.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1010.15,1012.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1013.2,1015.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1019.60,1020.34 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1020.34,1022.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1023.2,1023.12 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1027.63,1029.35 2 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1029.35,1033.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1034.2,1034.29 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1034.29,1037.18 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1037.18,1041.4 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1043.2,1043.25 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1043.25,1047.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1048.2,1048.28 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1048.28,1052.3 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1056.56,1057.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1057.15,1059.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1060.2,1062.12 3 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1066.67,1068.2 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1071.60,1072.15 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1072.15,1074.3 1 0 +github.com/wso2/apk/common-go-libs/apis/dp/v1alpha2/zz_generated.deepcopy.go:1075.2,1077.12 3 0 +github.com/wso2/apk/common-go-libs/controllers/dp/api_controller.go:50.95,56.2 2 0 +github.com/wso2/apk/common-go-libs/controllers/dp/api_controller.go:59.66,63.2 1 0 diff --git a/helm-charts/templates/crds/dp.wso2.com_apis.yaml b/helm-charts/templates/crds/dp.wso2.com_apis.yaml index c398f3988..600b6cf8f 100644 --- a/helm-charts/templates/crds/dp.wso2.com_apis.yaml +++ b/helm-charts/templates/crds/dp.wso2.com_apis.yaml @@ -374,6 +374,183 @@ spec: type: object type: object served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .spec.apiName + name: API Name + type: string + - jsonPath: .spec.apiVersion + name: Version + type: string + - jsonPath: .spec.basePath + name: BasePath + type: string + - jsonPath: .spec.organization + name: Organization + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: API is the Schema for the apis API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: APISpec defines the desired state of API + properties: + apiName: + description: APIName is the unique name of the API can be used to + uniquely identify an API. + maxLength: 60 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&$\[\]\/]*$ + type: string + apiProperties: + description: APIProperties denotes the custom properties of the API. + items: + description: Property holds key value pair of APIProperties + properties: + name: + type: string + value: + type: string + type: object + nullable: true + type: array + apiType: + description: APIType denotes the type of the API. Possible values + could be REST, GraphQL, Async, GRPC etc. + enum: + - REST + - GraphQL + - GRPC + type: string + apiVersion: + description: APIVersion is the version number of the API. + maxLength: 30 + minLength: 1 + pattern: ^[^~!@#;:%^*()+={}|\<>"'',&/$\[\]\s+\/]+$ + type: string + basePath: + description: 'BasePath denotes the basepath of the API. e.g: /pet-store-api/1.0.6' + type: string + definitionFileRef: + description: DefinitionFileRef contains the definition of the API + in a ConfigMap. + type: string + definitionPath: + default: /api-definition + description: DefinitionPath contains the path to expose the API definition. + minLength: 1 + type: string + environment: + description: Environment denotes the environment of the API. + nullable: true + type: string + isDefaultVersion: + description: IsDefaultVersion indicates whether this API version should + be used as a default API + type: boolean + organization: + description: Organization denotes the organization. related to the + API + type: string + production: + description: 'Production contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + routeRefs: + description: RouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - routeRefs + type: object + maxItems: 1 + nullable: true + type: array + sandbox: + description: 'Sandbox contains a list of references to HttpRoutes + of type HttpRoute. xref: https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1beta1/httproute_types.go' + items: + description: EnvConfig contains the environment specific configuration + properties: + routeRefs: + description: RouteRefs denotes the environment of the API. + items: + type: string + type: array + required: + - routeRefs + type: object + maxItems: 1 + nullable: true + type: array + systemAPI: + description: SystemAPI denotes if it is an internal system API. + type: boolean + required: + - apiName + - apiType + - apiVersion + - basePath + - definitionPath + type: object + status: + description: APIStatus defines the observed state of API + properties: + deploymentStatus: + description: DeploymentStatus denotes the deployment status of the + API + properties: + accepted: + description: Accepted represents whether the API is accepted or + not. + type: boolean + events: + description: Events contains a list of events related to the API. + items: + type: string + type: array + message: + description: Message represents a user friendly message that explains + the current state of the API. + type: string + status: + description: Status denotes the state of the API in its lifecycle. + Possible values could be Accepted, Invalid, Deploy etc. + type: string + transitionTime: + description: TransitionTime represents the last known transition + timestamp. + format: date-time + type: string + required: + - accepted + - status + - transitionTime + type: object + type: object + type: object + served: true storage: true subresources: status: {} diff --git a/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-deployer-api.yaml b/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-deployer-api.yaml index 63185b014..f81c8731d 100644 --- a/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-deployer-api.yaml +++ b/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-deployer-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if and .Values.wso2.apk.dp.enabled .Values.wso2.apk.dp.configdeployer.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: "{{ template "apk-helm.resource.prefix" . }}-wso2-apk-config-deployer-api" namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-generator-api.yaml b/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-generator-api.yaml index 708e3f87f..3835db775 100644 --- a/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-generator-api.yaml +++ b/helm-charts/templates/data-plane/config-deployer/wso2-apk-config-generator-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if and .Values.wso2.apk.dp.enabled .Values.wso2.apk.dp.configdeployer.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: "{{ template "apk-helm.resource.prefix" . }}-wso2-apk-config-generator-api" namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/data-plane/gateway-components/common-controller/api/notification-api.yaml b/helm-charts/templates/data-plane/gateway-components/common-controller/api/notification-api.yaml index c9cc6f773..46e2f7469 100644 --- a/helm-charts/templates/data-plane/gateway-components/common-controller/api/notification-api.yaml +++ b/helm-charts/templates/data-plane/gateway-components/common-controller/api/notification-api.yaml @@ -16,7 +16,7 @@ {{- if and .Values.wso2.apk.dp.enabled .Values.wso2.apk.dp.commonController }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: "{{ template "apk-helm.resource.prefix" . }}-wso2-apk-notification-api" namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-mutating-webhook-config.yaml b/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-mutating-webhook-config.yaml index 6cdd00e77..46462931a 100644 --- a/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-mutating-webhook-config.yaml +++ b/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-mutating-webhook-config.yaml @@ -31,14 +31,14 @@ webhooks: service: name: {{ template "apk-helm.resource.prefix" . }}-common-controller-service namespace: {{ .Release.Namespace }} - path: /mutate-dp-wso2-com-v1alpha2-api + path: /mutate-dp-wso2-com-v1beta1-api failurePolicy: Fail name: mapi.kb.io rules: - apiGroups: - dp.wso2.com apiVersions: - - v1alpha2 + - v1beta1 operations: - CREATE - UPDATE diff --git a/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-validation-webhook-config.yaml b/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-validation-webhook-config.yaml index e29b5a8a4..3ef9ca6f2 100644 --- a/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-validation-webhook-config.yaml +++ b/helm-charts/templates/data-plane/gateway-components/common-controller/webhook/adapter-validation-webhook-config.yaml @@ -51,14 +51,14 @@ webhooks: service: name: {{ template "apk-helm.resource.prefix" . }}-common-controller-service namespace: {{ .Release.Namespace }} - path: /validate-dp-wso2-com-v1alpha2-api + path: /validate-dp-wso2-com-v1beta1-api failurePolicy: Fail name: vapi.kb.io rules: - apiGroups: - dp.wso2.com apiVersions: - - v1alpha2 + - v1beta1 operations: - CREATE - UPDATE diff --git a/helm-charts/templates/data-plane/gateway-components/gateway-runtime/jwks-domain-api.yaml b/helm-charts/templates/data-plane/gateway-components/gateway-runtime/jwks-domain-api.yaml index 5da3d8295..4e97cb924 100644 --- a/helm-charts/templates/data-plane/gateway-components/gateway-runtime/jwks-domain-api.yaml +++ b/helm-charts/templates/data-plane/gateway-components/gateway-runtime/jwks-domain-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if .Values.idp.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: {{ template "apk-helm.resource.prefix" . }}-jwks-endpoint-ds-api namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/idp/authenticationEndpoint-domain-api.yaml b/helm-charts/templates/idp/authenticationEndpoint-domain-api.yaml index 0929f1658..4d4325330 100644 --- a/helm-charts/templates/idp/authenticationEndpoint-domain-api.yaml +++ b/helm-charts/templates/idp/authenticationEndpoint-domain-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if .Values.idp.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: {{ template "apk-helm.resource.prefix" . }}-authentication-endpoint-ds-api namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/idp/commonoauth-domain-api.yaml b/helm-charts/templates/idp/commonoauth-domain-api.yaml index a538daa85..cdd7a2a6d 100644 --- a/helm-charts/templates/idp/commonoauth-domain-api.yaml +++ b/helm-charts/templates/idp/commonoauth-domain-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if .Values.idp.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: {{ template "apk-helm.resource.prefix" . }}-commonoauth-api namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/idp/dcr-domain-api.yaml b/helm-charts/templates/idp/dcr-domain-api.yaml index fba48631a..aa6d70eb3 100644 --- a/helm-charts/templates/idp/dcr-domain-api.yaml +++ b/helm-charts/templates/idp/dcr-domain-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if .Values.idp.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: {{ template "apk-helm.resource.prefix" . }}-dcr-api namespace: {{ .Release.Namespace }} diff --git a/helm-charts/templates/idp/oauth-domain-api.yaml b/helm-charts/templates/idp/oauth-domain-api.yaml index a4c4214e1..f67fecbb4 100644 --- a/helm-charts/templates/idp/oauth-domain-api.yaml +++ b/helm-charts/templates/idp/oauth-domain-api.yaml @@ -15,7 +15,7 @@ # under the License. {{- if .Values.idp.enabled }} kind: "API" -apiVersion: "dp.wso2.com/v1alpha2" +apiVersion: "dp.wso2.com/v1beta1" metadata: name: {{ template "apk-helm.resource.prefix" . }}-oauth-api namespace: {{ .Release.Namespace }} diff --git a/runtime/config-deployer-service/ballerina/Dependencies.toml b/runtime/config-deployer-service/ballerina/Dependencies.toml index cb855bd71..747d44537 100644 --- a/runtime/config-deployer-service/ballerina/Dependencies.toml +++ b/runtime/config-deployer-service/ballerina/Dependencies.toml @@ -5,7 +5,7 @@ [ballerina] dependencies-toml-version = "2" -distribution-version = "2201.8.5" +distribution-version = "2201.8.4" [[package]] org = "ballerina" @@ -273,7 +273,7 @@ dependencies = [ [[package]] org = "ballerina" name = "observe" -version = "1.2.2" +version = "1.2.3" dependencies = [ {org = "ballerina", name = "jballerina.java"} ] @@ -424,8 +424,7 @@ dependencies = [ modules = [ {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib"}, {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.io"}, - {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"}, - {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.org.wso2.apk.common"} + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"} ] [[package]] diff --git a/runtime/config-deployer-service/ballerina/K8sClient.bal b/runtime/config-deployer-service/ballerina/K8sClient.bal index 45723229a..3b298edc3 100644 --- a/runtime/config-deployer-service/ballerina/K8sClient.bal +++ b/runtime/config-deployer-service/ballerina/K8sClient.bal @@ -56,7 +56,7 @@ isolated function getConfigMapValueFromNameAndNamespace(string name, string name } isolated function deleteAPICR(string name, string namespace) returns http:Response|http:ClientError { - string endpoint = "/apis/dp.wso2.com/v1alpha2/namespaces/" + namespace + "/apis/" + name; + string endpoint = "/apis/dp.wso2.com/v1beta1/namespaces/" + namespace + "/apis/" + name; return k8sApiServerEp->delete(endpoint, targetType = http:Response); } @@ -121,12 +121,12 @@ isolated function deleteConfigMap(string name, string namespace) returns http:Re } isolated function deployAPICR(model:API api, string namespace) returns http:Response|http:ClientError { - string endpoint = "/apis/dp.wso2.com/v1alpha2/namespaces/" + namespace + "/apis"; + string endpoint = "/apis/dp.wso2.com/v1beta1/namespaces/" + namespace + "/apis"; return k8sApiServerEp->post(endpoint, api, targetType = http:Response); } isolated function updateAPICR(model:API api, string namespace) returns http:Response|http:ClientError { - string endpoint = "/apis/dp.wso2.com/v1alpha2/namespaces/" + namespace + "/apis/" + api.metadata.name; + string endpoint = "/apis/dp.wso2.com/v1beta1/namespaces/" + namespace + "/apis/" + api.metadata.name; return k8sApiServerEp->put(endpoint, api, targetType = http:Response); } @@ -171,7 +171,7 @@ isolated function updateGrpcRoute(model:GRPCRoute grpcRoute, string namespace) r } public isolated function getK8sAPIByNameAndNamespace(string name, string namespace) returns model:API?|commons:APKError { - string endpoint = "/apis/dp.wso2.com/v1alpha2/namespaces/" + namespace + "/apis/" + name; + string endpoint = "/apis/dp.wso2.com/v1beta1/namespaces/" + namespace + "/apis/" + name; do { http:Response response = check k8sApiServerEp->get(endpoint); if response.statusCode == 200 { diff --git a/runtime/config-deployer-service/ballerina/modules/model/API.bal b/runtime/config-deployer-service/ballerina/modules/model/API.bal index 25d7bd40c..d7f6008b8 100644 --- a/runtime/config-deployer-service/ballerina/modules/model/API.bal +++ b/runtime/config-deployer-service/ballerina/modules/model/API.bal @@ -18,7 +18,7 @@ public type API record { string kind = "API"; - string apiVersion = "dp.wso2.com/v1alpha2"; + string apiVersion = "dp.wso2.com/v1beta1"; Metadata metadata; APISpec spec; APIStatus? status = (); @@ -62,7 +62,7 @@ public type EnvConfig record { }; public type APIList record { - string apiVersion = "dp.wso2.com/v1alpha2"; + string apiVersion = "dp.wso2.com/v1beta1"; string kind = "APIList"; API[] items; ListMeta metadata; diff --git a/test/integration/integration/tests/resources/tests/grpc-api.yaml b/test/integration/integration/tests/resources/tests/grpc-api.yaml index 6329c8777..359b00a49 100644 --- a/test/integration/integration/tests/resources/tests/grpc-api.yaml +++ b/test/integration/integration/tests/resources/tests/grpc-api.yaml @@ -14,7 +14,7 @@ # specific language governing permissions and limitations # under the License. -apiVersion: dp.wso2.com/v1alpha2 +apiVersion: dp.wso2.com/v1beta1 kind: API metadata: name: grpc-api