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/11 07:49:15 UTC

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

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

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