cyrpg520 commented on issue #1375:
URL: 
https://github.com/apache/apisix-ingress-controller/issues/1375#issuecomment-1273064039

   看了下源代码1.15.0版本 
/pkg/ingress/status.go中apisixpluginconfig好像没有v2版本的类型,所以注解中添加插件时报错:`error 
ingress/status.go:336 unsupported resource record`
   这是不是1.15.0版本的bug啊?
   
   ```
        switch v := at.(type) {
        case *configv2beta3.ApisixTls:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixTlses(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixTls",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2.ApisixTls:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2().ApisixTlses(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixTls",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta3.ApisixUpstream:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixUpstreams(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixUpstream",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
   
        case *configv2.ApisixUpstream:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2().ApisixUpstreams(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixUpstream",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2.ApisixRoute:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2().ApisixRoutes(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixRoute",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta2.ApisixRoute:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta2().ApisixRoutes(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixRoute",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta3.ApisixRoute:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixRoutes(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixRoute",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta3.ApisixConsumer:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixConsumers(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixConsumer",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2.ApisixConsumer:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2().ApisixConsumers(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixConsumer",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta3.ApisixPluginConfig:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixPluginConfigs(v.Namespace).
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixPluginConfig",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                        zap.String("namespace", v.Namespace),
                                )
                        }
                }
        case *configv2beta3.ApisixClusterConfig:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2beta3().ApisixClusterConfigs().
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixClusterConfig",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                )
                        }
                }
        case *configv2.ApisixClusterConfig:
                // set to status
                if v.Status.Conditions == nil {
                        conditions := make([]metav1.Condition, 0)
                        v.Status.Conditions = conditions
                }
                if c.verifyGeneration(&v.Status.Conditions, condition) {
                        meta.SetStatusCondition(&v.Status.Conditions, condition)
                        if _, errRecord := 
client.ApisixV2().ApisixClusterConfigs().
                                UpdateStatus(context.TODO(), v, 
metav1.UpdateOptions{}); errRecord != nil {
                                log.Errorw("failed to record status change for 
ApisixClusterConfig",
                                        zap.Error(errRecord),
                                        zap.String("name", v.Name),
                                )
                        }
                }
        case *networkingv1.Ingress:
                // set to status
                lbips, err := c.ingressLBStatusIPs()
                if err != nil {
                        log.Errorw("failed to get APISIX gateway external IPs",
                                zap.Error(err),
                        )
   
                }
   
                v.ObjectMeta.Generation = generation
                v.Status.LoadBalancer.Ingress = lbips
                if _, errRecord := 
kubeClient.NetworkingV1().Ingresses(v.Namespace).UpdateStatus(context.TODO(), 
v, metav1.UpdateOptions{}); errRecord != nil {
                        log.Errorw("failed to record status change for 
IngressV1",
                                zap.Error(errRecord),
                                zap.String("name", v.Name),
                                zap.String("namespace", v.Namespace),
                        )
                }
   
        case *networkingv1beta1.Ingress:
                // set to status
                lbips, err := c.ingressLBStatusIPs()
                if err != nil {
                        log.Errorw("failed to get APISIX gateway external IPs",
                                zap.Error(err),
                        )
   
                }
   
                v.ObjectMeta.Generation = generation
                v.Status.LoadBalancer.Ingress = lbips
                if _, errRecord := 
kubeClient.NetworkingV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
 v, metav1.UpdateOptions{}); errRecord != nil {
                        log.Errorw("failed to record status change for 
IngressV1",
                                zap.Error(errRecord),
                                zap.String("name", v.Name),
                                zap.String("namespace", v.Namespace),
                        )
                }
        case *extensionsv1beta1.Ingress:
                // set to status
                lbips, err := c.ingressLBStatusIPs()
                if err != nil {
                        log.Errorw("failed to get APISIX gateway external IPs",
                                zap.Error(err),
                        )
   
                }
   
                v.ObjectMeta.Generation = generation
                v.Status.LoadBalancer.Ingress = lbips
                if _, errRecord := 
kubeClient.ExtensionsV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
 v, metav1.UpdateOptions{}); errRecord != nil {
                        log.Errorw("failed to record status change for 
IngressV1",
                                zap.Error(errRecord),
                                zap.String("name", v.Name),
                                zap.String("namespace", v.Namespace),
                        )
                }
        default:
                // This should not be executed
                log.Errorf("unsupported resource record: %s", v)
        }
   }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to