feat: add events and status for ApisixClusterConfig resource (#502)
diff --git a/pkg/ingress/apisix_cluster_config.go b/pkg/ingress/apisix_cluster_config.go
index 5df2e5d..9af9f3d 100644
--- a/pkg/ingress/apisix_cluster_config.go
+++ b/pkg/ingress/apisix_cluster_config.go
@@ -19,7 +19,9 @@
"time"
"go.uber.org/zap"
+ corev1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
@@ -140,6 +142,8 @@
zap.Error(err),
zap.Any("opts", clusterOpts),
)
+ c.controller.recorderEvent(acc, corev1.EventTypeWarning, _resourceSyncAborted, err)
+ c.controller.recordStatus(acc, _resourceSyncAborted, err, metav1.ConditionFalse)
return err
}
}
@@ -152,6 +156,8 @@
zap.String("key", key),
zap.Any("object", acc),
)
+ c.controller.recorderEvent(acc, corev1.EventTypeWarning, _resourceSyncAborted, err)
+ c.controller.recordStatus(acc, _resourceSyncAborted, err, metav1.ConditionFalse)
return err
}
log.Debugw("translated global_rule",
@@ -169,8 +175,12 @@
zap.Any("global_rule", globalRule),
zap.Any("cluster", acc.Name),
)
+ c.controller.recorderEvent(acc, corev1.EventTypeWarning, _resourceSyncAborted, err)
+ c.controller.recordStatus(acc, _resourceSyncAborted, err, metav1.ConditionFalse)
return err
}
+ c.controller.recorderEvent(acc, corev1.EventTypeNormal, _resourceSynced, nil)
+ c.controller.recordStatus(acc, _resourceSynced, nil, metav1.ConditionTrue)
return nil
}
diff --git a/pkg/kube/apisix/apis/config/v2alpha1/types.go b/pkg/kube/apisix/apis/config/v2alpha1/types.go
index c978e92..0e49ddd 100644
--- a/pkg/kube/apisix/apis/config/v2alpha1/types.go
+++ b/pkg/kube/apisix/apis/config/v2alpha1/types.go
@@ -263,7 +263,8 @@
metav1.ObjectMeta `json:"metadata" yaml:"metadata"`
// Spec defines the desired state of ApisixClusterConfigSpec.
- Spec ApisixClusterConfigSpec `json:"spec" yaml:"spec"`
+ Spec ApisixClusterConfigSpec `json:"spec" yaml:"spec"`
+ Status ApisixStatus `json:"status,omitempty" yaml:"status,omitempty"`
}
// ApisixClusterConfigSpec defines the desired state of ApisixClusterConfigSpec.
diff --git a/pkg/kube/apisix/apis/config/v2alpha1/zz_generated.deepcopy.go b/pkg/kube/apisix/apis/config/v2alpha1/zz_generated.deepcopy.go
index cdc867c..836b88a 100644
--- a/pkg/kube/apisix/apis/config/v2alpha1/zz_generated.deepcopy.go
+++ b/pkg/kube/apisix/apis/config/v2alpha1/zz_generated.deepcopy.go
@@ -48,6 +48,7 @@
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
+ in.Status.DeepCopyInto(&out.Status)
return
}
diff --git a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/apisixclusterconfig.go b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/apisixclusterconfig.go
index ab3e13f..1917523 100644
--- a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/apisixclusterconfig.go
+++ b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/apisixclusterconfig.go
@@ -39,6 +39,7 @@
type ApisixClusterConfigInterface interface {
Create(ctx context.Context, apisixClusterConfig *v2alpha1.ApisixClusterConfig, opts v1.CreateOptions) (*v2alpha1.ApisixClusterConfig, error)
Update(ctx context.Context, apisixClusterConfig *v2alpha1.ApisixClusterConfig, opts v1.UpdateOptions) (*v2alpha1.ApisixClusterConfig, error)
+ UpdateStatus(ctx context.Context, apisixClusterConfig *v2alpha1.ApisixClusterConfig, opts v1.UpdateOptions) (*v2alpha1.ApisixClusterConfig, 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) (*v2alpha1.ApisixClusterConfig, error)
@@ -127,6 +128,21 @@
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 *apisixClusterConfigs) UpdateStatus(ctx context.Context, apisixClusterConfig *v2alpha1.ApisixClusterConfig, opts v1.UpdateOptions) (result *v2alpha1.ApisixClusterConfig, err error) {
+ result = &v2alpha1.ApisixClusterConfig{}
+ err = c.client.Put().
+ Resource("apisixclusterconfigs").
+ Name(apisixClusterConfig.Name).
+ SubResource("status").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Body(apisixClusterConfig).
+ Do(ctx).
+ Into(result)
+ return
+}
+
// Delete takes name of the apisixClusterConfig and deletes it. Returns an error if one occurs.
func (c *apisixClusterConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
return c.client.Delete().
diff --git a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/fake/fake_apisixclusterconfig.go b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/fake/fake_apisixclusterconfig.go
index 7b5af35..f348ee6 100644
--- a/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/fake/fake_apisixclusterconfig.go
+++ b/pkg/kube/apisix/client/clientset/versioned/typed/config/v2alpha1/fake/fake_apisixclusterconfig.go
@@ -95,6 +95,17 @@
return obj.(*v2alpha1.ApisixClusterConfig), 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 *FakeApisixClusterConfigs) UpdateStatus(ctx context.Context, apisixClusterConfig *v2alpha1.ApisixClusterConfig, opts v1.UpdateOptions) (*v2alpha1.ApisixClusterConfig, error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootUpdateSubresourceAction(apisixclusterconfigsResource, "status", apisixClusterConfig), &v2alpha1.ApisixClusterConfig{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v2alpha1.ApisixClusterConfig), err
+}
+
// Delete takes name of the apisixClusterConfig and deletes it. Returns an error if one occurs.
func (c *FakeApisixClusterConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
_, err := c.Fake.
diff --git a/samples/deploy/rbac/apisix_view_clusterrole.yaml b/samples/deploy/rbac/apisix_view_clusterrole.yaml
index 5e99d01..ef9d342 100644
--- a/samples/deploy/rbac/apisix_view_clusterrole.yaml
+++ b/samples/deploy/rbac/apisix_view_clusterrole.yaml
@@ -146,7 +146,9 @@
- apisixtlses
- apisixtlses/status
- apisixclusterconfigs
+ - apisixclusterconfigs/status
- apisixconsumers
+ - apisixconsumers/status
verbs:
- '*'
- apiGroups:
diff --git a/test/e2e/scaffold/ingress.go b/test/e2e/scaffold/ingress.go
index 5689280..75c29ca 100644
--- a/test/e2e/scaffold/ingress.go
+++ b/test/e2e/scaffold/ingress.go
@@ -158,7 +158,9 @@
- apisixtlses
- apisixtlses/status
- apisixclusterconfigs
+ - apisixclusterconfigs/status
- apisixconsumers
+ - apisixconsumers/status
verbs:
- '*'
- apiGroups: