This is an automated email from the ASF dual-hosted git repository.

kvn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/master by this push:
     new 408eb0d1 feat: support ApisixPluginConfig v2 (#984)
408eb0d1 is described below

commit 408eb0d1c9b05517e530688e2e6e82c721699548
Author: Sarasa Kisaragi <[email protected]>
AuthorDate: Wed Jun 1 18:48:27 2022 +0800

    feat: support ApisixPluginConfig v2 (#984)
---
 cmd/ingress/ingress.go                      |  1 +
 pkg/config/config.go                        |  2 +
 pkg/config/config_test.go                   |  2 +
 pkg/ingress/apisix_pluginconfig.go          | 43 ++++++++++++++++++---
 pkg/ingress/controller.go                   | 15 +++++++-
 pkg/kube/apisix_plugin_config.go            | 59 +++++++++++++++++++++++------
 pkg/kube/translation/apisix_pluginconfig.go | 41 ++++++++++++++++++++
 pkg/kube/translation/translator.go          |  6 +++
 8 files changed, 151 insertions(+), 18 deletions(-)

diff --git a/cmd/ingress/ingress.go b/cmd/ingress/ingress.go
index daed1637..324ff7b1 100644
--- a/cmd/ingress/ingress.go
+++ b/cmd/ingress/ingress.go
@@ -162,6 +162,7 @@ For example, no available LB exists in the bare metal 
environment.`)
        cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ElectionID, 
"election-id", config.IngressAPISIXLeader, "election id used for campaign the 
controller leader")
        cmd.PersistentFlags().StringVar(&cfg.Kubernetes.IngressVersion, 
"ingress-version", config.IngressNetworkingV1, "the supported ingress api group 
version, can be \"networking/v1beta1\", \"networking/v1\" (for Kubernetes 
version v1.19.0 or higher) and \"extensions/v1beta1\"")
        cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ApisixRouteVersion, 
"apisix-route-version", config.ApisixRouteV2beta3, "the supported apisixroute 
api group version, can be \"apisix.apache.org/v2beta2\" or 
\"apisix.apache.org/v2beta3\"")
+       
cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ApisixPluginConfigVersion, 
"apisix-plugin-config-version", config.ApisixV2beta3, "the supported 
ApisixPluginConfig api group version, can be \"apisix.apache.org/v2beta3\" or 
\"apisix.apache.org/v2\"")
        cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ApisixTlsVersion, 
"apisix-tls-version", config.ApisixV2beta3, "the supported apisixtls api group 
version, can be \"apisix.apache.org/v2beta3\" or \"apisix.apache.org/v2\"")
        
cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ApisixClusterConfigVersion, 
"apisix-cluster-config-version", config.ApisixV2beta3, "the supported 
ApisixClusterConfig api group version, can be \"apisix.apache.org/v2beta3\" or 
\"apisix.apache.org/v2\"")
        cmd.PersistentFlags().StringVar(&cfg.Kubernetes.ApisixConsumerVersion, 
"apisix-consumer-version", config.ApisixV2beta3, "the supported ApisixConsumer 
api group version, can be \"apisix.apache.org/v2beta3\" or 
\"apisix.apache.org/v2\"")
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 2641ef5d..af6d3665 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -96,6 +96,7 @@ type KubernetesConfig struct {
        IngressVersion             string             `json:"ingress_version" 
yaml:"ingress_version"`
        WatchEndpointSlices        bool               
`json:"watch_endpoint_slices" yaml:"watch_endpoint_slices"`
        ApisixRouteVersion         string             
`json:"apisix_route_version" yaml:"apisix_route_version"`
+       ApisixPluginConfigVersion  string             
`json:"apisix_plugin_config_version" yaml:"apisix_plugin_config_version"`
        ApisixConsumerVersion      string             
`json:"apisix_consumer_version" yaml:"apisix_consumer_version"`
        ApisixTlsVersion           string             
`json:"apisix_tls_version" yaml:"apisix_tls_version"`
        ApisixClusterConfigVersion string             
`json:"apisix_cluster_config_version" yaml:"apisix_cluster_config_version"`
@@ -134,6 +135,7 @@ func NewDefaultConfig() *Config {
                        IngressClass:               IngressClass,
                        IngressVersion:             IngressNetworkingV1,
                        ApisixRouteVersion:         ApisixRouteV2beta3,
+                       ApisixPluginConfigVersion:  ApisixV2beta3,
                        ApisixConsumerVersion:      ApisixV2beta3,
                        ApisixTlsVersion:           ApisixV2beta3,
                        ApisixClusterConfigVersion: ApisixV2beta3,
diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go
index 311afd50..aa0a3077 100644
--- a/pkg/config/config_test.go
+++ b/pkg/config/config_test.go
@@ -45,6 +45,7 @@ func TestNewConfigFromFile(t *testing.T) {
                        IngressClass:               IngressClass,
                        IngressVersion:             IngressNetworkingV1,
                        ApisixRouteVersion:         ApisixRouteV2beta3,
+                       ApisixPluginConfigVersion:  ApisixV2beta3,
                        ApisixConsumerVersion:      ApisixV2beta3,
                        ApisixTlsVersion:           ApisixV2beta3,
                        ApisixClusterConfigVersion: ApisixV2beta3,
@@ -129,6 +130,7 @@ func TestConfigWithEnvVar(t *testing.T) {
                        IngressClass:               IngressClass,
                        IngressVersion:             IngressNetworkingV1,
                        ApisixRouteVersion:         ApisixRouteV2beta3,
+                       ApisixPluginConfigVersion:  ApisixV2beta3,
                        ApisixConsumerVersion:      ApisixV2beta3,
                        ApisixTlsVersion:           ApisixV2beta3,
                        ApisixClusterConfigVersion: ApisixV2beta3,
diff --git a/pkg/ingress/apisix_pluginconfig.go 
b/pkg/ingress/apisix_pluginconfig.go
index b2e8afa2..a1e4db2c 100644
--- a/pkg/ingress/apisix_pluginconfig.go
+++ b/pkg/ingress/apisix_pluginconfig.go
@@ -16,6 +16,7 @@ package ingress
 
 import (
        "context"
+       "fmt"
        "time"
 
        "go.uber.org/zap"
@@ -25,6 +26,7 @@ import (
        "k8s.io/client-go/tools/cache"
        "k8s.io/client-go/util/workqueue"
 
+       "github.com/apache/apisix-ingress-controller/pkg/config"
        "github.com/apache/apisix-ingress-controller/pkg/kube"
        "github.com/apache/apisix-ingress-controller/pkg/kube/translation"
        "github.com/apache/apisix-ingress-controller/pkg/log"
@@ -94,8 +96,12 @@ func (c *apisixPluginConfigController) sync(ctx 
context.Context, ev *types.Event
                tctx *translation.TranslateContext
        )
        switch obj.GroupVersion {
-       case kube.ApisixPluginConfigV2beta3:
+       case config.ApisixV2beta3:
                apc, err = 
c.controller.apisixPluginConfigLister.V2beta3(namespace, name)
+       case config.ApisixV2:
+               apc, err = c.controller.apisixPluginConfigLister.V2(namespace, 
name)
+       default:
+               return fmt.Errorf("unsupported ApisixPluginConfig group version 
%s", obj.GroupVersion)
        }
        if err != nil {
                if !k8serrors.IsNotFound(err) {
@@ -129,7 +135,7 @@ func (c *apisixPluginConfigController) sync(ctx 
context.Context, ev *types.Event
        }
 
        switch obj.GroupVersion {
-       case kube.ApisixPluginConfigV2beta3:
+       case config.ApisixV2beta3:
                if ev.Type != types.EventDelete {
                        tctx, err = 
c.controller.translator.TranslatePluginConfigV2beta3(apc.V2beta3())
                } else {
@@ -142,6 +148,19 @@ func (c *apisixPluginConfigController) sync(ctx 
context.Context, ev *types.Event
                        )
                        return err
                }
+       case config.ApisixV2:
+               if ev.Type != types.EventDelete {
+                       tctx, err = 
c.controller.translator.TranslatePluginConfigV2(apc.V2())
+               } else {
+                       tctx, err = 
c.controller.translator.TranslatePluginConfigV2NotStrictly(apc.V2())
+               }
+               if err != nil {
+                       log.Errorw("failed to translate ApisixPluginConfig v2",
+                               zap.Error(err),
+                               zap.Any("object", apc),
+                       )
+                       return err
+               }
        }
 
        log.Debugw("translated ApisixPluginConfig",
@@ -165,8 +184,10 @@ func (c *apisixPluginConfigController) sync(ctx 
context.Context, ev *types.Event
        } else {
                var oldCtx *translation.TranslateContext
                switch obj.GroupVersion {
-               case kube.ApisixPluginConfigV2beta3:
+               case config.ApisixV2beta3:
                        oldCtx, err = 
c.controller.translator.TranslatePluginConfigV2beta3(obj.OldObject.V2beta3())
+               case config.ApisixV2:
+                       oldCtx, err = 
c.controller.translator.TranslatePluginConfigV2(obj.OldObject.V2())
                }
                if err != nil {
                        log.Errorw("failed to translate old ApisixPluginConfig",
@@ -206,16 +227,23 @@ func (c *apisixPluginConfigController) handleSyncErr(obj 
interface{}, errOrigin
        }
        var apc kube.ApisixPluginConfig
        switch event.GroupVersion {
-       case kube.ApisixPluginConfigV2beta3:
+       case config.ApisixV2beta3:
                apc, errLocal = 
c.controller.apisixPluginConfigLister.V2beta3(namespace, name)
+       case config.ApisixV2:
+               apc, errLocal = 
c.controller.apisixPluginConfigLister.V2(namespace, name)
+       default:
+               errLocal = fmt.Errorf("unsupported ApisixPluginConfig group 
version %s", event.GroupVersion)
        }
        if errOrigin == nil {
                if ev.Type != types.EventDelete {
                        if errLocal == nil {
                                switch apc.GroupVersion() {
-                               case kube.ApisixPluginConfigV2beta3:
+                               case config.ApisixV2beta3:
                                        
c.controller.recorderEvent(apc.V2beta3(), v1.EventTypeNormal, _resourceSynced, 
nil)
                                        
c.controller.recordStatus(apc.V2beta3(), _resourceSynced, nil, 
metav1.ConditionTrue, apc.V2beta3().GetGeneration())
+                               case config.ApisixV2:
+                                       c.controller.recorderEvent(apc.V2(), 
v1.EventTypeNormal, _resourceSynced, nil)
+                                       c.controller.recordStatus(apc.V2(), 
_resourceSynced, nil, metav1.ConditionTrue, apc.V2().GetGeneration())
                                }
                        } else {
                                log.Errorw("failed list ApisixPluginConfig",
@@ -235,9 +263,12 @@ func (c *apisixPluginConfigController) handleSyncErr(obj 
interface{}, errOrigin
        )
        if errLocal == nil {
                switch apc.GroupVersion() {
-               case kube.ApisixPluginConfigV2beta3:
+               case config.ApisixV2beta3:
                        c.controller.recorderEvent(apc.V2beta3(), 
v1.EventTypeWarning, _resourceSyncAborted, errOrigin)
                        c.controller.recordStatus(apc.V2beta3(), 
_resourceSyncAborted, errOrigin, metav1.ConditionFalse, 
apc.V2beta3().GetGeneration())
+               case config.ApisixV2:
+                       c.controller.recorderEvent(apc.V2(), 
v1.EventTypeWarning, _resourceSyncAborted, errOrigin)
+                       c.controller.recordStatus(apc.V2(), 
_resourceSyncAborted, errOrigin, metav1.ConditionFalse, 
apc.V2().GetGeneration())
                }
        } else {
                log.Errorw("failed list ApisixPluginConfig",
diff --git a/pkg/ingress/controller.go b/pkg/ingress/controller.go
index 7ab245c6..bcba8a24 100644
--- a/pkg/ingress/controller.go
+++ b/pkg/ingress/controller.go
@@ -205,6 +205,7 @@ func (c *Controller) initWhenStartLeading() {
        var (
                ingressInformer             cache.SharedIndexInformer
                apisixRouteInformer         cache.SharedIndexInformer
+               apisixPluginConfigInformer  cache.SharedIndexInformer
                apisixTlsInformer           cache.SharedIndexInformer
                apisixClusterConfigInformer cache.SharedIndexInformer
                apisixConsumerInformer      cache.SharedIndexInformer
@@ -244,6 +245,7 @@ func (c *Controller) initWhenStartLeading() {
        )
        c.apisixPluginConfigLister = kube.NewApisixPluginConfigLister(
                apisixFactory.Apisix().V2beta3().ApisixPluginConfigs().Lister(),
+               apisixFactory.Apisix().V2().ApisixPluginConfigs().Lister(),
        )
 
        c.translator = translation.NewTranslator(&translation.TranslatorOptions{
@@ -304,6 +306,17 @@ func (c *Controller) initWhenStartLeading() {
                apisixConsumerInformer = 
apisixFactory.Apisix().V2beta3().ApisixConsumers().Informer()
        case config.ApisixRouteV2:
                apisixConsumerInformer = 
apisixFactory.Apisix().V2().ApisixConsumers().Informer()
+       default:
+               panic(fmt.Errorf("unsupported ApisixConsumer version %v", 
c.cfg.Kubernetes.ApisixConsumerVersion))
+       }
+
+       switch c.cfg.Kubernetes.ApisixPluginConfigVersion {
+       case config.ApisixV2beta3:
+               apisixPluginConfigInformer = 
apisixFactory.Apisix().V2beta3().ApisixPluginConfigs().Informer()
+       case config.ApisixV2:
+               apisixPluginConfigInformer = 
apisixFactory.Apisix().V2().ApisixPluginConfigs().Informer()
+       default:
+               panic(fmt.Errorf("unsupported ApisixPluginConfig version %v", 
c.cfg.Kubernetes.ApisixPluginConfigVersion))
        }
 
        c.namespaceInformer = kubeFactory.Core().V1().Namespaces().Informer()
@@ -316,7 +329,7 @@ func (c *Controller) initWhenStartLeading() {
        c.secretInformer = kubeFactory.Core().V1().Secrets().Informer()
        c.apisixTlsInformer = apisixTlsInformer
        c.apisixConsumerInformer = apisixConsumerInformer
-       c.apisixPluginConfigInformer = 
apisixFactory.Apisix().V2beta3().ApisixPluginConfigs().Informer()
+       c.apisixPluginConfigInformer = apisixPluginConfigInformer
 
        if c.cfg.Kubernetes.WatchEndpointSlices {
                c.endpointSliceController = c.newEndpointSliceController()
diff --git a/pkg/kube/apisix_plugin_config.go b/pkg/kube/apisix_plugin_config.go
index a3147d28..98f587e5 100644
--- a/pkg/kube/apisix_plugin_config.go
+++ b/pkg/kube/apisix_plugin_config.go
@@ -17,20 +17,20 @@ package kube
 import (
        "errors"
 
+       "github.com/apache/apisix-ingress-controller/pkg/config"
+       configv2 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2"
        configv2beta3 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
+       listersv2 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/listers/config/v2"
        listersv2beta3 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/listers/config/v2beta3"
 )
 
-const (
-       // ApisixPluginConfigV2beta3 represents the ApisixPluginConfig in 
apisix.apache.org/v2beta3 group version
-       ApisixPluginConfigV2beta3 = "apisix.apache.org/v2beta3"
-)
-
 // ApisixPluginConfigLister is an encapsulation for the lister of 
ApisixPluginConfig,
 // it aims at to be compatible with different ApisixPluginConfig versions.
 type ApisixPluginConfigLister interface {
        // V2beta3 gets the ApisixPluginConfig in apisix.apache.org/v2beta3.
        V2beta3(string, string) (ApisixPluginConfig, error)
+       // V2 gets the ApisixPluginConfig in apisix.apache.org/v2.
+       V2(string, string) (ApisixPluginConfig, error)
 }
 
 // ApisixPluginConfigInformer is an encapsulation for the informer of 
ApisixPluginConfig,
@@ -48,6 +48,9 @@ type ApisixPluginConfig interface {
        // V2beta3 returns the ApisixPluginConfig in apisix.apache.org/v2beta3, 
the real
        // ApisixPluginConfig must be in this group version, otherwise will 
panic.
        V2beta3() *configv2beta3.ApisixPluginConfig
+       // V2 returns the ApisixPluginConfig in apisix.apache.org/v2, the real
+       // ApisixPluginConfig must be in this group version, otherwise will 
panic.
+       V2() *configv2.ApisixPluginConfig
        // ResourceVersion returns the the resource version field inside
        // the real ApisixPluginConfig.
        ResourceVersion() string
@@ -64,25 +67,37 @@ type ApisixPluginConfigEvent struct {
 type apisixPluginConfig struct {
        groupVersion string
        v2beta3      *configv2beta3.ApisixPluginConfig
+       v2           *configv2.ApisixPluginConfig
 }
 
 func (apc *apisixPluginConfig) V2beta3() *configv2beta3.ApisixPluginConfig {
-       if apc.groupVersion != ApisixPluginConfigV2beta3 {
+       if apc.groupVersion != config.ApisixV2beta3 {
                panic("not a apisix.apache.org/v2beta3 pluginConfig")
        }
        return apc.v2beta3
 }
 
+func (apc *apisixPluginConfig) V2() *configv2.ApisixPluginConfig {
+       if apc.groupVersion != config.ApisixV2 {
+               panic("not a apisix.apache.org/v2 pluginConfig")
+       }
+       return apc.v2
+}
+
 func (apc *apisixPluginConfig) GroupVersion() string {
        return apc.groupVersion
 }
 
 func (apc *apisixPluginConfig) ResourceVersion() string {
-       return apc.V2beta3().ResourceVersion
+       if apc.groupVersion == config.ApisixV2beta3 {
+               return apc.V2beta3().ResourceVersion
+       }
+       return apc.V2().ResourceVersion
 }
 
 type apisixPluginConfigLister struct {
        v2beta3Lister listersv2beta3.ApisixPluginConfigLister
+       v2Lister      listersv2.ApisixPluginConfigLister
 }
 
 func (l *apisixPluginConfigLister) V2beta3(namespace, name string) 
(ApisixPluginConfig, error) {
@@ -91,20 +106,36 @@ func (l *apisixPluginConfigLister) V2beta3(namespace, name 
string) (ApisixPlugin
                return nil, err
        }
        return &apisixPluginConfig{
-               groupVersion: ApisixPluginConfigV2beta3,
+               groupVersion: config.ApisixV2beta3,
                v2beta3:      apc,
        }, nil
 }
 
+func (l *apisixPluginConfigLister) V2(namespace, name string) 
(ApisixPluginConfig, error) {
+       apc, err := l.v2Lister.ApisixPluginConfigs(namespace).Get(name)
+       if err != nil {
+               return nil, err
+       }
+       return &apisixPluginConfig{
+               groupVersion: config.ApisixV2,
+               v2:           apc,
+       }, nil
+}
+
 // MustNewApisixPluginConfig creates a kube.ApisixPluginConfig object 
according to the
 // type of obj.
 func MustNewApisixPluginConfig(obj interface{}) ApisixPluginConfig {
        switch apc := obj.(type) {
        case *configv2beta3.ApisixPluginConfig:
                return &apisixPluginConfig{
-                       groupVersion: ApisixPluginConfigV2beta3,
+                       groupVersion: config.ApisixV2beta3,
                        v2beta3:      apc,
                }
+       case *configv2.ApisixPluginConfig:
+               return &apisixPluginConfig{
+                       groupVersion: config.ApisixV2,
+                       v2:           apc,
+               }
        default:
                panic("invalid ApisixPluginConfig type")
        }
@@ -117,16 +148,22 @@ func NewApisixPluginConfig(obj interface{}) 
(ApisixPluginConfig, error) {
        switch apc := obj.(type) {
        case *configv2beta3.ApisixPluginConfig:
                return &apisixPluginConfig{
-                       groupVersion: ApisixPluginConfigV2beta3,
+                       groupVersion: config.ApisixV2beta3,
                        v2beta3:      apc,
                }, nil
+       case *configv2.ApisixPluginConfig:
+               return &apisixPluginConfig{
+                       groupVersion: config.ApisixV2,
+                       v2:           apc,
+               }, nil
        default:
                return nil, errors.New("invalid ApisixPluginConfig type")
        }
 }
 
-func NewApisixPluginConfigLister(v2beta3 
listersv2beta3.ApisixPluginConfigLister) ApisixPluginConfigLister {
+func NewApisixPluginConfigLister(v2beta3 
listersv2beta3.ApisixPluginConfigLister, v2 listersv2.ApisixPluginConfigLister) 
ApisixPluginConfigLister {
        return &apisixPluginConfigLister{
                v2beta3Lister: v2beta3,
+               v2Lister:      v2,
        }
 }
diff --git a/pkg/kube/translation/apisix_pluginconfig.go 
b/pkg/kube/translation/apisix_pluginconfig.go
index 44a62169..14ce0467 100644
--- a/pkg/kube/translation/apisix_pluginconfig.go
+++ b/pkg/kube/translation/apisix_pluginconfig.go
@@ -18,6 +18,7 @@ import (
        "go.uber.org/zap"
 
        "github.com/apache/apisix-ingress-controller/pkg/id"
+       configv2 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2"
        configv2beta3 
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
        "github.com/apache/apisix-ingress-controller/pkg/log"
        apisixv1 
"github.com/apache/apisix-ingress-controller/pkg/types/apisix/v1"
@@ -62,3 +63,43 @@ func (t *translator) 
TranslatePluginConfigV2beta3NotStrictly(config *configv2bet
        ctx.addPluginConfig(pc)
        return ctx, nil
 }
+
+func (t *translator) TranslatePluginConfigV2(config 
*configv2.ApisixPluginConfig) (*TranslateContext, error) {
+       ctx := defaultEmptyTranslateContext()
+       pluginMap := make(apisixv1.Plugins)
+       if len(config.Spec.Plugins) > 0 {
+               for _, plugin := range config.Spec.Plugins {
+                       if !plugin.Enable {
+                               continue
+                       }
+                       if plugin.Config != nil {
+                               // Here, it will override same key.
+                               if t, ok := pluginMap[plugin.Name]; ok {
+                                       log.Infow("TranslatePluginConfigV2 
override same plugin key",
+                                               zap.String("key", plugin.Name),
+                                               zap.Any("old", t),
+                                               zap.Any("new", plugin.Config),
+                                       )
+                               }
+                               pluginMap[plugin.Name] = plugin.Config
+                       } else {
+                               pluginMap[plugin.Name] = 
make(map[string]interface{})
+                       }
+               }
+       }
+       pc := apisixv1.NewDefaultPluginConfig()
+       pc.Name = apisixv1.ComposePluginConfigName(config.Namespace, 
config.Name)
+       pc.ID = id.GenID(pc.Name)
+       pc.Plugins = pluginMap
+       ctx.addPluginConfig(pc)
+       return ctx, nil
+}
+
+func (t *translator) TranslatePluginConfigV2NotStrictly(config 
*configv2.ApisixPluginConfig) (*TranslateContext, error) {
+       ctx := defaultEmptyTranslateContext()
+       pc := apisixv1.NewDefaultPluginConfig()
+       pc.Name = apisixv1.ComposePluginConfigName(config.Namespace, 
config.Name)
+       pc.ID = id.GenID(pc.Name)
+       ctx.addPluginConfig(pc)
+       return ctx, nil
+}
diff --git a/pkg/kube/translation/translator.go 
b/pkg/kube/translation/translator.go
index 8ec4cbb7..d20fc5ce 100644
--- a/pkg/kube/translation/translator.go
+++ b/pkg/kube/translation/translator.go
@@ -106,6 +106,12 @@ type Translator interface {
        // TranslatePluginConfigV2beta3NotStrictly translates the 
configv2beta3.ApisixPluginConfig object into several PluginConfig
        // resources not strictly, only used for delete event.
        
TranslatePluginConfigV2beta3NotStrictly(*configv2beta3.ApisixPluginConfig) 
(*TranslateContext, error)
+       // TranslatePluginConfigV2 translates the configv2.ApisixPluginConfig 
object into several PluginConfig
+       // resources.
+       TranslatePluginConfigV2(*configv2.ApisixPluginConfig) 
(*TranslateContext, error)
+       // TranslatePluginConfigV2NotStrictly translates the 
configv2.ApisixPluginConfig object into several PluginConfig
+       // resources not strictly, only used for delete event.
+       TranslatePluginConfigV2NotStrictly(*configv2.ApisixPluginConfig) 
(*TranslateContext, error)
        // ExtractKeyPair extracts certificate and private key pair from secret
        // Supports APISIX style ("cert" and "key") and Kube style ("tls.crt" 
and "tls.key)
        ExtractKeyPair(s *corev1.Secret, hasPrivateKey bool) ([]byte, []byte, 
error)

Reply via email to