This is an automated email from the ASF dual-hosted git repository.
zhangjintao 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 472fbcd feat: add ApisixPluginConfigs crd to v2beta3 (#792)
472fbcd is described below
commit 472fbcd62721560ba681883b269cfc72b3c35977
Author: nevercase <[email protected]>
AuthorDate: Tue Dec 14 09:35:48 2021 +0800
feat: add ApisixPluginConfigs crd to v2beta3 (#792)
---
pkg/apisix/cache/cache.go | 2 +-
pkg/kube/apisix/apis/config/v2beta3/types.go | 34 ++++
.../apis/config/v2beta3/zz_generated.deepcopy.go | 84 +++++++++
.../typed/config/v2beta3/apisixpluginconfig.go | 194 +++++++++++++++++++++
.../typed/config/v2beta3/config_client.go | 5 +
.../config/v2beta3/fake/fake_apisixpluginconfig.go | 141 +++++++++++++++
.../config/v2beta3/fake/fake_config_client.go | 4 +
.../typed/config/v2beta3/generated_expansion.go | 2 +
.../config/v2beta3/apisixpluginconfig.go | 89 ++++++++++
.../externalversions/config/v2beta3/interface.go | 7 +
.../client/informers/externalversions/generic.go | 2 +
.../listers/config/v2beta3/apisixpluginconfig.go | 98 +++++++++++
.../listers/config/v2beta3/expansion_generated.go | 8 +
samples/deploy/crd/v1/ApisixPluginConfig.yaml | 2 +-
14 files changed, 670 insertions(+), 2 deletions(-)
diff --git a/pkg/apisix/cache/cache.go b/pkg/apisix/cache/cache.go
index debae3e..485454c 100644
--- a/pkg/apisix/cache/cache.go
+++ b/pkg/apisix/cache/cache.go
@@ -71,7 +71,7 @@ type Cache interface {
ListConsumers() ([]*v1.Consumer, error)
// ListSchema lists all schema in cache.
ListSchema() ([]*v1.Schema, error)
- // ListPluginConfig lists all plugin_config in cache.
+ // ListPluginConfigs lists all plugin_config in cache.
ListPluginConfigs() ([]*v1.PluginConfig, error)
// DeleteRoute deletes the specified route in cache.
diff --git a/pkg/kube/apisix/apis/config/v2beta3/types.go
b/pkg/kube/apisix/apis/config/v2beta3/types.go
index 3ebc5bb..bdf948f 100644
--- a/pkg/kube/apisix/apis/config/v2beta3/types.go
+++ b/pkg/kube/apisix/apis/config/v2beta3/types.go
@@ -611,3 +611,37 @@ type ApisixMutualTlsClientConfig struct {
CASecret ApisixSecret `json:"caSecret,omitempty"
yaml:"caSecret,omitempty"`
Depth int `json:"depth,omitempty" yaml:"depth,omitempty"`
}
+
+// +genclient
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+// +kubebuilder:subresource:status
+
+// ApisixPluginConfig is the Schema for the ApisixPluginConfig resource.
+// An ApisixPluginConfig is used to support a group of plugin configs
+type ApisixPluginConfig struct {
+ metav1.TypeMeta `json:",inline" yaml:",inline"`
+ metav1.ObjectMeta `json:"metadata" yaml:"metadata"`
+
+ // Spec defines the desired state of ApisixPluginConfigSpec.
+ Spec ApisixPluginConfigSpec `json:"spec" yaml:"spec"`
+ Status ApisixStatus `json:"status,omitempty"
yaml:"status,omitempty"`
+}
+
+// ApisixPluginConfigSpec defines the desired state of ApisixPluginConfigSpec.
+type ApisixPluginConfigSpec struct {
+ // Plugins contains a list of ApisixRouteHTTPPluginConfig
+ // +required
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:MinItems=1
+ Plugins []ApisixRouteHTTPPluginConfig `json:"plugins" yaml:"plugins"`
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+// +kubebuilder:object:generate=true
+
+// ApisixPluginConfigList contains a list of ApisixPluginConfig.
+type ApisixPluginConfigList struct {
+ metav1.TypeMeta `json:",inline" yaml:",inline"`
+ metav1.ListMeta `json:"metadata" yaml:"metadata"`
+ Items []ApisixPluginConfig `json:"items,omitempty"
yaml:"items,omitempty"`
+}
diff --git a/pkg/kube/apisix/apis/config/v2beta3/zz_generated.deepcopy.go
b/pkg/kube/apisix/apis/config/v2beta3/zz_generated.deepcopy.go
index 78959db..3498257 100644
--- a/pkg/kube/apisix/apis/config/v2beta3/zz_generated.deepcopy.go
+++ b/pkg/kube/apisix/apis/config/v2beta3/zz_generated.deepcopy.go
@@ -457,6 +457,90 @@ func (in *ApisixMutualTlsClientConfig) DeepCopy()
*ApisixMutualTlsClientConfig {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver,
writing into out. in must be non-nil.
+func (in *ApisixPluginConfig) DeepCopyInto(out *ApisixPluginConfig) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ in.Status.DeepCopyInto(&out.Status)
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver,
creating a new ApisixPluginConfig.
+func (in *ApisixPluginConfig) DeepCopy() *ApisixPluginConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(ApisixPluginConfig)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver,
creating a new runtime.Object.
+func (in *ApisixPluginConfig) 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 *ApisixPluginConfigList) DeepCopyInto(out *ApisixPluginConfigList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ListMeta.DeepCopyInto(&out.ListMeta)
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]ApisixPluginConfig, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver,
creating a new ApisixPluginConfigList.
+func (in *ApisixPluginConfigList) DeepCopy() *ApisixPluginConfigList {
+ if in == nil {
+ return nil
+ }
+ out := new(ApisixPluginConfigList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver,
creating a new runtime.Object.
+func (in *ApisixPluginConfigList) 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 *ApisixPluginConfigSpec) DeepCopyInto(out *ApisixPluginConfigSpec) {
+ *out = *in
+ if in.Plugins != nil {
+ in, out := &in.Plugins, &out.Plugins
+ *out = make([]ApisixRouteHTTPPluginConfig, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver,
creating a new ApisixPluginConfigSpec.
+func (in *ApisixPluginConfigSpec) DeepCopy() *ApisixPluginConfigSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ApisixPluginConfigSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver,
writing into out. in must be non-nil.
func (in *ApisixRoute) DeepCopyInto(out *ApisixRoute) {
*out = *in
out.TypeMeta = in.TypeMeta
diff --git
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/apisixpluginconfig.go
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/apisixpluginconfig.go
new file mode 100644
index 0000000..3a3ec44
--- /dev/null
+++
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/apisixpluginconfig.go
@@ -0,0 +1,194 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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 client-gen. DO NOT EDIT.
+
+package v2beta3
+
+import (
+ "context"
+ "time"
+
+ v2beta3
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
+ scheme
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/clientset/versioned/scheme"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ rest "k8s.io/client-go/rest"
+)
+
+// ApisixPluginConfigsGetter has a method to return a
ApisixPluginConfigInterface.
+// A group's client should implement this interface.
+type ApisixPluginConfigsGetter interface {
+ ApisixPluginConfigs(namespace string) ApisixPluginConfigInterface
+}
+
+// ApisixPluginConfigInterface has methods to work with ApisixPluginConfig
resources.
+type ApisixPluginConfigInterface interface {
+ Create(ctx context.Context, apisixPluginConfig
*v2beta3.ApisixPluginConfig, opts v1.CreateOptions)
(*v2beta3.ApisixPluginConfig, error)
+ Update(ctx context.Context, apisixPluginConfig
*v2beta3.ApisixPluginConfig, opts v1.UpdateOptions)
(*v2beta3.ApisixPluginConfig, error)
+ UpdateStatus(ctx context.Context, apisixPluginConfig
*v2beta3.ApisixPluginConfig, opts v1.UpdateOptions)
(*v2beta3.ApisixPluginConfig, error)
+ Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
+ DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts
v1.ListOptions) error
+ Get(ctx context.Context, name string, opts v1.GetOptions)
(*v2beta3.ApisixPluginConfig, error)
+ List(ctx context.Context, opts v1.ListOptions)
(*v2beta3.ApisixPluginConfigList, error)
+ Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
+ Patch(ctx context.Context, name string, pt types.PatchType, data
[]byte, opts v1.PatchOptions, subresources ...string) (result
*v2beta3.ApisixPluginConfig, err error)
+ ApisixPluginConfigExpansion
+}
+
+// apisixPluginConfigs implements ApisixPluginConfigInterface
+type apisixPluginConfigs struct {
+ client rest.Interface
+ ns string
+}
+
+// newApisixPluginConfigs returns a ApisixPluginConfigs
+func newApisixPluginConfigs(c *ApisixV2beta3Client, namespace string)
*apisixPluginConfigs {
+ return &apisixPluginConfigs{
+ client: c.RESTClient(),
+ ns: namespace,
+ }
+}
+
+// Get takes name of the apisixPluginConfig, and returns the corresponding
apisixPluginConfig object, and an error if there is any.
+func (c *apisixPluginConfigs) Get(ctx context.Context, name string, options
v1.GetOptions) (result *v2beta3.ApisixPluginConfig, err error) {
+ result = &v2beta3.ApisixPluginConfig{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do(ctx).
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of
ApisixPluginConfigs that match those selectors.
+func (c *apisixPluginConfigs) List(ctx context.Context, opts v1.ListOptions)
(result *v2beta3.ApisixPluginConfigList, err error) {
+ var timeout time.Duration
+ if opts.TimeoutSeconds != nil {
+ timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
+ }
+ result = &v2beta3.ApisixPluginConfigList{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Timeout(timeout).
+ Do(ctx).
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested
apisixPluginConfigs.
+func (c *apisixPluginConfigs) Watch(ctx context.Context, opts v1.ListOptions)
(watch.Interface, error) {
+ var timeout time.Duration
+ if opts.TimeoutSeconds != nil {
+ timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
+ }
+ opts.Watch = true
+ return c.client.Get().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Timeout(timeout).
+ Watch(ctx)
+}
+
+// Create takes the representation of a apisixPluginConfig and creates it.
Returns the server's representation of the apisixPluginConfig, and an error, if
there is any.
+func (c *apisixPluginConfigs) Create(ctx context.Context, apisixPluginConfig
*v2beta3.ApisixPluginConfig, opts v1.CreateOptions) (result
*v2beta3.ApisixPluginConfig, err error) {
+ result = &v2beta3.ApisixPluginConfig{}
+ err = c.client.Post().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Body(apisixPluginConfig).
+ Do(ctx).
+ Into(result)
+ return
+}
+
+// Update takes the representation of a apisixPluginConfig and updates it.
Returns the server's representation of the apisixPluginConfig, and an error, if
there is any.
+func (c *apisixPluginConfigs) Update(ctx context.Context, apisixPluginConfig
*v2beta3.ApisixPluginConfig, opts v1.UpdateOptions) (result
*v2beta3.ApisixPluginConfig, err error) {
+ result = &v2beta3.ApisixPluginConfig{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ Name(apisixPluginConfig.Name).
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Body(apisixPluginConfig).
+ Do(ctx).
+ Into(result)
+ return
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating
UpdateStatus().
+func (c *apisixPluginConfigs) UpdateStatus(ctx context.Context,
apisixPluginConfig *v2beta3.ApisixPluginConfig, opts v1.UpdateOptions) (result
*v2beta3.ApisixPluginConfig, err error) {
+ result = &v2beta3.ApisixPluginConfig{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ Name(apisixPluginConfig.Name).
+ SubResource("status").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Body(apisixPluginConfig).
+ Do(ctx).
+ Into(result)
+ return
+}
+
+// Delete takes name of the apisixPluginConfig and deletes it. Returns an
error if one occurs.
+func (c *apisixPluginConfigs) Delete(ctx context.Context, name string, opts
v1.DeleteOptions) error {
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ Name(name).
+ Body(&opts).
+ Do(ctx).
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *apisixPluginConfigs) DeleteCollection(ctx context.Context, opts
v1.DeleteOptions, listOpts v1.ListOptions) error {
+ var timeout time.Duration
+ if listOpts.TimeoutSeconds != nil {
+ timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
+ }
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ VersionedParams(&listOpts, scheme.ParameterCodec).
+ Timeout(timeout).
+ Body(&opts).
+ Do(ctx).
+ Error()
+}
+
+// Patch applies the patch and returns the patched apisixPluginConfig.
+func (c *apisixPluginConfigs) Patch(ctx context.Context, name string, pt
types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string)
(result *v2beta3.ApisixPluginConfig, err error) {
+ result = &v2beta3.ApisixPluginConfig{}
+ err = c.client.Patch(pt).
+ Namespace(c.ns).
+ Resource("apisixpluginconfigs").
+ Name(name).
+ SubResource(subresources...).
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Body(data).
+ Do(ctx).
+ Into(result)
+ return
+}
diff --git
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/config_client.go
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/config_client.go
index f94c04c..e3c1d30 100644
---
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/config_client.go
+++
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/config_client.go
@@ -27,6 +27,7 @@ type ApisixV2beta3Interface interface {
RESTClient() rest.Interface
ApisixClusterConfigsGetter
ApisixConsumersGetter
+ ApisixPluginConfigsGetter
ApisixRoutesGetter
ApisixTlsesGetter
ApisixUpstreamsGetter
@@ -45,6 +46,10 @@ func (c *ApisixV2beta3Client) ApisixConsumers(namespace
string) ApisixConsumerIn
return newApisixConsumers(c, namespace)
}
+func (c *ApisixV2beta3Client) ApisixPluginConfigs(namespace string)
ApisixPluginConfigInterface {
+ return newApisixPluginConfigs(c, namespace)
+}
+
func (c *ApisixV2beta3Client) ApisixRoutes(namespace string)
ApisixRouteInterface {
return newApisixRoutes(c, namespace)
}
diff --git
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_apisixpluginconfig.go
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_apisixpluginconfig.go
new file mode 100644
index 0000000..9f275f2
--- /dev/null
+++
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_apisixpluginconfig.go
@@ -0,0 +1,141 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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 client-gen. DO NOT EDIT.
+
+package fake
+
+import (
+ "context"
+
+ v2beta3
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+)
+
+// FakeApisixPluginConfigs implements ApisixPluginConfigInterface
+type FakeApisixPluginConfigs struct {
+ Fake *FakeApisixV2beta3
+ ns string
+}
+
+var apisixpluginconfigsResource = schema.GroupVersionResource{Group:
"apisix.apache.org", Version: "v2beta3", Resource: "apisixpluginconfigs"}
+
+var apisixpluginconfigsKind = schema.GroupVersionKind{Group:
"apisix.apache.org", Version: "v2beta3", Kind: "ApisixPluginConfig"}
+
+// Get takes name of the apisixPluginConfig, and returns the corresponding
apisixPluginConfig object, and an error if there is any.
+func (c *FakeApisixPluginConfigs) Get(ctx context.Context, name string,
options v1.GetOptions) (result *v2beta3.ApisixPluginConfig, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewGetAction(apisixpluginconfigsResource, c.ns,
name), &v2beta3.ApisixPluginConfig{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), err
+}
+
+// List takes label and field selectors, and returns the list of
ApisixPluginConfigs that match those selectors.
+func (c *FakeApisixPluginConfigs) List(ctx context.Context, opts
v1.ListOptions) (result *v2beta3.ApisixPluginConfigList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewListAction(apisixpluginconfigsResource,
apisixpluginconfigsKind, c.ns, opts), &v2beta3.ApisixPluginConfigList{})
+
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &v2beta3.ApisixPluginConfigList{ListMeta:
obj.(*v2beta3.ApisixPluginConfigList).ListMeta}
+ for _, item := range obj.(*v2beta3.ApisixPluginConfigList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested
apisixPluginConfigs.
+func (c *FakeApisixPluginConfigs) Watch(ctx context.Context, opts
v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+
InvokesWatch(testing.NewWatchAction(apisixpluginconfigsResource, c.ns, opts))
+
+}
+
+// Create takes the representation of a apisixPluginConfig and creates it.
Returns the server's representation of the apisixPluginConfig, and an error, if
there is any.
+func (c *FakeApisixPluginConfigs) Create(ctx context.Context,
apisixPluginConfig *v2beta3.ApisixPluginConfig, opts v1.CreateOptions) (result
*v2beta3.ApisixPluginConfig, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewCreateAction(apisixpluginconfigsResource,
c.ns, apisixPluginConfig), &v2beta3.ApisixPluginConfig{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), err
+}
+
+// Update takes the representation of a apisixPluginConfig and updates it.
Returns the server's representation of the apisixPluginConfig, and an error, if
there is any.
+func (c *FakeApisixPluginConfigs) Update(ctx context.Context,
apisixPluginConfig *v2beta3.ApisixPluginConfig, opts v1.UpdateOptions) (result
*v2beta3.ApisixPluginConfig, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewUpdateAction(apisixpluginconfigsResource,
c.ns, apisixPluginConfig), &v2beta3.ApisixPluginConfig{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), err
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating
UpdateStatus().
+func (c *FakeApisixPluginConfigs) UpdateStatus(ctx context.Context,
apisixPluginConfig *v2beta3.ApisixPluginConfig, opts v1.UpdateOptions)
(*v2beta3.ApisixPluginConfig, error) {
+ obj, err := c.Fake.
+
Invokes(testing.NewUpdateSubresourceAction(apisixpluginconfigsResource,
"status", c.ns, apisixPluginConfig), &v2beta3.ApisixPluginConfig{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), err
+}
+
+// Delete takes name of the apisixPluginConfig and deletes it. Returns an
error if one occurs.
+func (c *FakeApisixPluginConfigs) Delete(ctx context.Context, name string,
opts v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewDeleteAction(apisixpluginconfigsResource,
c.ns, name), &v2beta3.ApisixPluginConfig{})
+
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeApisixPluginConfigs) DeleteCollection(ctx context.Context, opts
v1.DeleteOptions, listOpts v1.ListOptions) error {
+ action :=
testing.NewDeleteCollectionAction(apisixpluginconfigsResource, c.ns, listOpts)
+
+ _, err := c.Fake.Invokes(action, &v2beta3.ApisixPluginConfigList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched apisixPluginConfig.
+func (c *FakeApisixPluginConfigs) Patch(ctx context.Context, name string, pt
types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string)
(result *v2beta3.ApisixPluginConfig, err error) {
+ obj, err := c.Fake.
+
Invokes(testing.NewPatchSubresourceAction(apisixpluginconfigsResource, c.ns,
name, pt, data, subresources...), &v2beta3.ApisixPluginConfig{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), err
+}
diff --git
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_config_client.go
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_config_client.go
index 71b748b..f1af3a5 100644
---
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_config_client.go
+++
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/fake/fake_config_client.go
@@ -35,6 +35,10 @@ func (c *FakeApisixV2beta3) ApisixConsumers(namespace
string) v2beta3.ApisixCons
return &FakeApisixConsumers{c, namespace}
}
+func (c *FakeApisixV2beta3) ApisixPluginConfigs(namespace string)
v2beta3.ApisixPluginConfigInterface {
+ return &FakeApisixPluginConfigs{c, namespace}
+}
+
func (c *FakeApisixV2beta3) ApisixRoutes(namespace string)
v2beta3.ApisixRouteInterface {
return &FakeApisixRoutes{c, namespace}
}
diff --git
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/generated_expansion.go
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/generated_expansion.go
index 0755d9e..eec76e7 100644
---
a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/generated_expansion.go
+++
b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2beta3/generated_expansion.go
@@ -21,6 +21,8 @@ type ApisixClusterConfigExpansion interface{}
type ApisixConsumerExpansion interface{}
+type ApisixPluginConfigExpansion interface{}
+
type ApisixRouteExpansion interface{}
type ApisixTlsExpansion interface{}
diff --git
a/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/apisixpluginconfig.go
b/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/apisixpluginconfig.go
new file mode 100644
index 0000000..01eff3a
--- /dev/null
+++
b/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/apisixpluginconfig.go
@@ -0,0 +1,89 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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 informer-gen. DO NOT EDIT.
+
+package v2beta3
+
+import (
+ "context"
+ time "time"
+
+ configv2beta3
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
+ versioned
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/clientset/versioned"
+ internalinterfaces
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/informers/externalversions/internalinterfaces"
+ v2beta3
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/listers/config/v2beta3"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ cache "k8s.io/client-go/tools/cache"
+)
+
+// ApisixPluginConfigInformer provides access to a shared informer and lister
for
+// ApisixPluginConfigs.
+type ApisixPluginConfigInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() v2beta3.ApisixPluginConfigLister
+}
+
+type apisixPluginConfigInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
+}
+
+// NewApisixPluginConfigInformer constructs a new informer for
ApisixPluginConfig type.
+// Always prefer using an informer factory to get a shared informer instead of
getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewApisixPluginConfigInformer(client versioned.Interface, namespace
string, resyncPeriod time.Duration, indexers cache.Indexers)
cache.SharedIndexInformer {
+ return NewFilteredApisixPluginConfigInformer(client, namespace,
resyncPeriod, indexers, nil)
+}
+
+// NewFilteredApisixPluginConfigInformer constructs a new informer for
ApisixPluginConfig type.
+// Always prefer using an informer factory to get a shared informer instead of
getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredApisixPluginConfigInformer(client versioned.Interface,
namespace string, resyncPeriod time.Duration, indexers cache.Indexers,
tweakListOptions internalinterfaces.TweakListOptionsFunc)
cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options v1.ListOptions) (runtime.Object,
error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return
client.ApisixV2beta3().ApisixPluginConfigs(namespace).List(context.TODO(),
options)
+ },
+ WatchFunc: func(options v1.ListOptions)
(watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return
client.ApisixV2beta3().ApisixPluginConfigs(namespace).Watch(context.TODO(),
options)
+ },
+ },
+ &configv2beta3.ApisixPluginConfig{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *apisixPluginConfigInformer) defaultInformer(client
versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredApisixPluginConfigInformer(client, f.namespace,
resyncPeriod, cache.Indexers{cache.NamespaceIndex:
cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *apisixPluginConfigInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&configv2beta3.ApisixPluginConfig{},
f.defaultInformer)
+}
+
+func (f *apisixPluginConfigInformer) Lister() v2beta3.ApisixPluginConfigLister
{
+ return v2beta3.NewApisixPluginConfigLister(f.Informer().GetIndexer())
+}
diff --git
a/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/interface.go
b/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/interface.go
index bcdcb9e..dd46b50 100644
---
a/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/interface.go
+++
b/pkg/kube/apisix/client/informers/externalversions/config/v2beta3/interface.go
@@ -27,6 +27,8 @@ type Interface interface {
ApisixClusterConfigs() ApisixClusterConfigInformer
// ApisixConsumers returns a ApisixConsumerInformer.
ApisixConsumers() ApisixConsumerInformer
+ // ApisixPluginConfigs returns a ApisixPluginConfigInformer.
+ ApisixPluginConfigs() ApisixPluginConfigInformer
// ApisixRoutes returns a ApisixRouteInformer.
ApisixRoutes() ApisixRouteInformer
// ApisixTlses returns a ApisixTlsInformer.
@@ -56,6 +58,11 @@ func (v *version) ApisixConsumers() ApisixConsumerInformer {
return &apisixConsumerInformer{factory: v.factory, namespace:
v.namespace, tweakListOptions: v.tweakListOptions}
}
+// ApisixPluginConfigs returns a ApisixPluginConfigInformer.
+func (v *version) ApisixPluginConfigs() ApisixPluginConfigInformer {
+ return &apisixPluginConfigInformer{factory: v.factory, namespace:
v.namespace, tweakListOptions: v.tweakListOptions}
+}
+
// ApisixRoutes returns a ApisixRouteInformer.
func (v *version) ApisixRoutes() ApisixRouteInformer {
return &apisixRouteInformer{factory: v.factory, namespace: v.namespace,
tweakListOptions: v.tweakListOptions}
diff --git a/pkg/kube/apisix/client/informers/externalversions/generic.go
b/pkg/kube/apisix/client/informers/externalversions/generic.go
index 4469274..782fade 100644
--- a/pkg/kube/apisix/client/informers/externalversions/generic.go
+++ b/pkg/kube/apisix/client/informers/externalversions/generic.go
@@ -68,6 +68,8 @@ func (f *sharedInformerFactory) ForResource(resource
schema.GroupVersionResource
return &genericInformer{resource: resource.GroupResource(),
informer: f.Apisix().V2beta3().ApisixClusterConfigs().Informer()}, nil
case v2beta3.SchemeGroupVersion.WithResource("apisixconsumers"):
return &genericInformer{resource: resource.GroupResource(),
informer: f.Apisix().V2beta3().ApisixConsumers().Informer()}, nil
+ case v2beta3.SchemeGroupVersion.WithResource("apisixpluginconfigs"):
+ return &genericInformer{resource: resource.GroupResource(),
informer: f.Apisix().V2beta3().ApisixPluginConfigs().Informer()}, nil
case v2beta3.SchemeGroupVersion.WithResource("apisixroutes"):
return &genericInformer{resource: resource.GroupResource(),
informer: f.Apisix().V2beta3().ApisixRoutes().Informer()}, nil
case v2beta3.SchemeGroupVersion.WithResource("apisixtlses"):
diff --git
a/pkg/kube/apisix/client/listers/config/v2beta3/apisixpluginconfig.go
b/pkg/kube/apisix/client/listers/config/v2beta3/apisixpluginconfig.go
new file mode 100644
index 0000000..c36c66d
--- /dev/null
+++ b/pkg/kube/apisix/client/listers/config/v2beta3/apisixpluginconfig.go
@@ -0,0 +1,98 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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 lister-gen. DO NOT EDIT.
+
+package v2beta3
+
+import (
+ v2beta3
"github.com/apache/apisix-ingress-controller/pkg/kube/apisix/apis/config/v2beta3"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+)
+
+// ApisixPluginConfigLister helps list ApisixPluginConfigs.
+// All objects returned here must be treated as read-only.
+type ApisixPluginConfigLister interface {
+ // List lists all ApisixPluginConfigs in the indexer.
+ // Objects returned here must be treated as read-only.
+ List(selector labels.Selector) (ret []*v2beta3.ApisixPluginConfig, err
error)
+ // ApisixPluginConfigs returns an object that can list and get
ApisixPluginConfigs.
+ ApisixPluginConfigs(namespace string) ApisixPluginConfigNamespaceLister
+ ApisixPluginConfigListerExpansion
+}
+
+// apisixPluginConfigLister implements the ApisixPluginConfigLister interface.
+type apisixPluginConfigLister struct {
+ indexer cache.Indexer
+}
+
+// NewApisixPluginConfigLister returns a new ApisixPluginConfigLister.
+func NewApisixPluginConfigLister(indexer cache.Indexer)
ApisixPluginConfigLister {
+ return &apisixPluginConfigLister{indexer: indexer}
+}
+
+// List lists all ApisixPluginConfigs in the indexer.
+func (s *apisixPluginConfigLister) List(selector labels.Selector) (ret
[]*v2beta3.ApisixPluginConfig, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*v2beta3.ApisixPluginConfig))
+ })
+ return ret, err
+}
+
+// ApisixPluginConfigs returns an object that can list and get
ApisixPluginConfigs.
+func (s *apisixPluginConfigLister) ApisixPluginConfigs(namespace string)
ApisixPluginConfigNamespaceLister {
+ return apisixPluginConfigNamespaceLister{indexer: s.indexer, namespace:
namespace}
+}
+
+// ApisixPluginConfigNamespaceLister helps list and get ApisixPluginConfigs.
+// All objects returned here must be treated as read-only.
+type ApisixPluginConfigNamespaceLister interface {
+ // List lists all ApisixPluginConfigs in the indexer for a given
namespace.
+ // Objects returned here must be treated as read-only.
+ List(selector labels.Selector) (ret []*v2beta3.ApisixPluginConfig, err
error)
+ // Get retrieves the ApisixPluginConfig from the indexer for a given
namespace and name.
+ // Objects returned here must be treated as read-only.
+ Get(name string) (*v2beta3.ApisixPluginConfig, error)
+ ApisixPluginConfigNamespaceListerExpansion
+}
+
+// apisixPluginConfigNamespaceLister implements the
ApisixPluginConfigNamespaceLister
+// interface.
+type apisixPluginConfigNamespaceLister struct {
+ indexer cache.Indexer
+ namespace string
+}
+
+// List lists all ApisixPluginConfigs in the indexer for a given namespace.
+func (s apisixPluginConfigNamespaceLister) List(selector labels.Selector) (ret
[]*v2beta3.ApisixPluginConfig, err error) {
+ err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m
interface{}) {
+ ret = append(ret, m.(*v2beta3.ApisixPluginConfig))
+ })
+ return ret, err
+}
+
+// Get retrieves the ApisixPluginConfig from the indexer for a given namespace
and name.
+func (s apisixPluginConfigNamespaceLister) Get(name string)
(*v2beta3.ApisixPluginConfig, error) {
+ obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil,
errors.NewNotFound(v2beta3.Resource("apisixpluginconfig"), name)
+ }
+ return obj.(*v2beta3.ApisixPluginConfig), nil
+}
diff --git
a/pkg/kube/apisix/client/listers/config/v2beta3/expansion_generated.go
b/pkg/kube/apisix/client/listers/config/v2beta3/expansion_generated.go
index 307c276..4e66912 100644
--- a/pkg/kube/apisix/client/listers/config/v2beta3/expansion_generated.go
+++ b/pkg/kube/apisix/client/listers/config/v2beta3/expansion_generated.go
@@ -29,6 +29,14 @@ type ApisixConsumerListerExpansion interface{}
// ApisixConsumerNamespaceLister.
type ApisixConsumerNamespaceListerExpansion interface{}
+// ApisixPluginConfigListerExpansion allows custom methods to be added to
+// ApisixPluginConfigLister.
+type ApisixPluginConfigListerExpansion interface{}
+
+// ApisixPluginConfigNamespaceListerExpansion allows custom methods to be
added to
+// ApisixPluginConfigNamespaceLister.
+type ApisixPluginConfigNamespaceListerExpansion interface{}
+
// ApisixRouteListerExpansion allows custom methods to be added to
// ApisixRouteLister.
type ApisixRouteListerExpansion interface{}
diff --git a/samples/deploy/crd/v1/ApisixPluginConfig.yaml
b/samples/deploy/crd/v1/ApisixPluginConfig.yaml
index d2597aa..a3f6a20 100644
--- a/samples/deploy/crd/v1/ApisixPluginConfig.yaml
+++ b/samples/deploy/crd/v1/ApisixPluginConfig.yaml
@@ -29,7 +29,7 @@ spec:
shortNames:
- apc
versions:
- - name: v2beta2
+ - name: v2beta3
served: true
storage: true
subresources: