You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2022/10/10 09:54:33 UTC

[GitHub] [apisix-ingress-controller] cyrpg520 commented on issue #1375: help request: unsupported resource record

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: notifications-unsubscribe@apisix.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org