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

   > 看了下源代码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)
   >    }
   > }
   > ```
   
   yeah,i reproduce it. Are you interested in submitting pr to fix it?


-- 
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