istio.io/istio@v0.0.0-20240520182934-d79c90f27776/pilot/pkg/config/kube/crdclient/types.gen.go (about) 1 // Code generated by pkg/config/schema/codegen/tools/collections.main.go. DO NOT EDIT. 2 3 package crdclient 4 5 import ( 6 "context" 7 "fmt" 8 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "k8s.io/apimachinery/pkg/runtime" 11 "k8s.io/apimachinery/pkg/types" 12 13 "istio.io/istio/pkg/config" 14 "istio.io/istio/pkg/config/schema/gvk" 15 "istio.io/istio/pkg/kube" 16 17 k8sioapiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1" 18 k8sioapiappsv1 "k8s.io/api/apps/v1" 19 k8sioapicertificatesv1 "k8s.io/api/certificates/v1" 20 k8sioapicoordinationv1 "k8s.io/api/coordination/v1" 21 k8sioapicorev1 "k8s.io/api/core/v1" 22 k8sioapidiscoveryv1 "k8s.io/api/discovery/v1" 23 k8sioapinetworkingv1 "k8s.io/api/networking/v1" 24 k8sioapiextensionsapiserverpkgapisapiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 25 sigsk8siogatewayapiapisv1 "sigs.k8s.io/gateway-api/apis/v1" 26 sigsk8siogatewayapiapisv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" 27 sigsk8siogatewayapiapisv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" 28 29 istioioapiextensionsv1alpha1 "istio.io/api/extensions/v1alpha1" 30 istioioapimetav1alpha1 "istio.io/api/meta/v1alpha1" 31 istioioapinetworkingv1alpha3 "istio.io/api/networking/v1alpha3" 32 istioioapinetworkingv1beta1 "istio.io/api/networking/v1beta1" 33 istioioapisecurityv1beta1 "istio.io/api/security/v1beta1" 34 istioioapitelemetryv1alpha1 "istio.io/api/telemetry/v1alpha1" 35 apiistioioapiextensionsv1alpha1 "istio.io/client-go/pkg/apis/extensions/v1alpha1" 36 apiistioioapinetworkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3" 37 apiistioioapinetworkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1" 38 apiistioioapisecurityv1beta1 "istio.io/client-go/pkg/apis/security/v1beta1" 39 apiistioioapitelemetryv1alpha1 "istio.io/client-go/pkg/apis/telemetry/v1alpha1" 40 ) 41 42 func create(c kube.Client, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) { 43 switch cfg.GroupVersionKind { 44 case gvk.AuthorizationPolicy: 45 return c.Istio().SecurityV1beta1().AuthorizationPolicies(cfg.Namespace).Create(context.TODO(), &apiistioioapisecurityv1beta1.AuthorizationPolicy{ 46 ObjectMeta: objMeta, 47 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.AuthorizationPolicy)), 48 }, metav1.CreateOptions{}) 49 case gvk.DestinationRule: 50 return c.Istio().NetworkingV1alpha3().DestinationRules(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.DestinationRule{ 51 ObjectMeta: objMeta, 52 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.DestinationRule)), 53 }, metav1.CreateOptions{}) 54 case gvk.EnvoyFilter: 55 return c.Istio().NetworkingV1alpha3().EnvoyFilters(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.EnvoyFilter{ 56 ObjectMeta: objMeta, 57 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.EnvoyFilter)), 58 }, metav1.CreateOptions{}) 59 case gvk.GRPCRoute: 60 return c.GatewayAPI().GatewayV1().GRPCRoutes(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1.GRPCRoute{ 61 ObjectMeta: objMeta, 62 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1.GRPCRouteSpec)), 63 }, metav1.CreateOptions{}) 64 case gvk.Gateway: 65 return c.Istio().NetworkingV1alpha3().Gateways(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.Gateway{ 66 ObjectMeta: objMeta, 67 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.Gateway)), 68 }, metav1.CreateOptions{}) 69 case gvk.GatewayClass: 70 return c.GatewayAPI().GatewayV1beta1().GatewayClasses().Create(context.TODO(), &sigsk8siogatewayapiapisv1beta1.GatewayClass{ 71 ObjectMeta: objMeta, 72 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewayClassSpec)), 73 }, metav1.CreateOptions{}) 74 case gvk.HTTPRoute: 75 return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1beta1.HTTPRoute{ 76 ObjectMeta: objMeta, 77 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.HTTPRouteSpec)), 78 }, metav1.CreateOptions{}) 79 case gvk.KubernetesGateway: 80 return c.GatewayAPI().GatewayV1beta1().Gateways(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1beta1.Gateway{ 81 ObjectMeta: objMeta, 82 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewaySpec)), 83 }, metav1.CreateOptions{}) 84 case gvk.PeerAuthentication: 85 return c.Istio().SecurityV1beta1().PeerAuthentications(cfg.Namespace).Create(context.TODO(), &apiistioioapisecurityv1beta1.PeerAuthentication{ 86 ObjectMeta: objMeta, 87 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.PeerAuthentication)), 88 }, metav1.CreateOptions{}) 89 case gvk.ProxyConfig: 90 return c.Istio().NetworkingV1beta1().ProxyConfigs(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1beta1.ProxyConfig{ 91 ObjectMeta: objMeta, 92 Spec: *(cfg.Spec.(*istioioapinetworkingv1beta1.ProxyConfig)), 93 }, metav1.CreateOptions{}) 94 case gvk.ReferenceGrant: 95 return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1beta1.ReferenceGrant{ 96 ObjectMeta: objMeta, 97 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.ReferenceGrantSpec)), 98 }, metav1.CreateOptions{}) 99 case gvk.RequestAuthentication: 100 return c.Istio().SecurityV1beta1().RequestAuthentications(cfg.Namespace).Create(context.TODO(), &apiistioioapisecurityv1beta1.RequestAuthentication{ 101 ObjectMeta: objMeta, 102 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.RequestAuthentication)), 103 }, metav1.CreateOptions{}) 104 case gvk.ServiceEntry: 105 return c.Istio().NetworkingV1alpha3().ServiceEntries(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.ServiceEntry{ 106 ObjectMeta: objMeta, 107 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.ServiceEntry)), 108 }, metav1.CreateOptions{}) 109 case gvk.Sidecar: 110 return c.Istio().NetworkingV1alpha3().Sidecars(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.Sidecar{ 111 ObjectMeta: objMeta, 112 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.Sidecar)), 113 }, metav1.CreateOptions{}) 114 case gvk.TCPRoute: 115 return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TCPRoute{ 116 ObjectMeta: objMeta, 117 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.TCPRouteSpec)), 118 }, metav1.CreateOptions{}) 119 case gvk.TLSRoute: 120 return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TLSRoute{ 121 ObjectMeta: objMeta, 122 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.TLSRouteSpec)), 123 }, metav1.CreateOptions{}) 124 case gvk.Telemetry: 125 return c.Istio().TelemetryV1alpha1().Telemetries(cfg.Namespace).Create(context.TODO(), &apiistioioapitelemetryv1alpha1.Telemetry{ 126 ObjectMeta: objMeta, 127 Spec: *(cfg.Spec.(*istioioapitelemetryv1alpha1.Telemetry)), 128 }, metav1.CreateOptions{}) 129 case gvk.UDPRoute: 130 return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(cfg.Namespace).Create(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.UDPRoute{ 131 ObjectMeta: objMeta, 132 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.UDPRouteSpec)), 133 }, metav1.CreateOptions{}) 134 case gvk.VirtualService: 135 return c.Istio().NetworkingV1alpha3().VirtualServices(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.VirtualService{ 136 ObjectMeta: objMeta, 137 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.VirtualService)), 138 }, metav1.CreateOptions{}) 139 case gvk.WasmPlugin: 140 return c.Istio().ExtensionsV1alpha1().WasmPlugins(cfg.Namespace).Create(context.TODO(), &apiistioioapiextensionsv1alpha1.WasmPlugin{ 141 ObjectMeta: objMeta, 142 Spec: *(cfg.Spec.(*istioioapiextensionsv1alpha1.WasmPlugin)), 143 }, metav1.CreateOptions{}) 144 case gvk.WorkloadEntry: 145 return c.Istio().NetworkingV1alpha3().WorkloadEntries(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadEntry{ 146 ObjectMeta: objMeta, 147 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.WorkloadEntry)), 148 }, metav1.CreateOptions{}) 149 case gvk.WorkloadGroup: 150 return c.Istio().NetworkingV1alpha3().WorkloadGroups(cfg.Namespace).Create(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadGroup{ 151 ObjectMeta: objMeta, 152 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.WorkloadGroup)), 153 }, metav1.CreateOptions{}) 154 default: 155 return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind) 156 } 157 } 158 159 func update(c kube.Client, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) { 160 switch cfg.GroupVersionKind { 161 case gvk.AuthorizationPolicy: 162 return c.Istio().SecurityV1beta1().AuthorizationPolicies(cfg.Namespace).Update(context.TODO(), &apiistioioapisecurityv1beta1.AuthorizationPolicy{ 163 ObjectMeta: objMeta, 164 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.AuthorizationPolicy)), 165 }, metav1.UpdateOptions{}) 166 case gvk.DestinationRule: 167 return c.Istio().NetworkingV1alpha3().DestinationRules(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.DestinationRule{ 168 ObjectMeta: objMeta, 169 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.DestinationRule)), 170 }, metav1.UpdateOptions{}) 171 case gvk.EnvoyFilter: 172 return c.Istio().NetworkingV1alpha3().EnvoyFilters(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.EnvoyFilter{ 173 ObjectMeta: objMeta, 174 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.EnvoyFilter)), 175 }, metav1.UpdateOptions{}) 176 case gvk.GRPCRoute: 177 return c.GatewayAPI().GatewayV1().GRPCRoutes(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1.GRPCRoute{ 178 ObjectMeta: objMeta, 179 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1.GRPCRouteSpec)), 180 }, metav1.UpdateOptions{}) 181 case gvk.Gateway: 182 return c.Istio().NetworkingV1alpha3().Gateways(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.Gateway{ 183 ObjectMeta: objMeta, 184 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.Gateway)), 185 }, metav1.UpdateOptions{}) 186 case gvk.GatewayClass: 187 return c.GatewayAPI().GatewayV1beta1().GatewayClasses().Update(context.TODO(), &sigsk8siogatewayapiapisv1beta1.GatewayClass{ 188 ObjectMeta: objMeta, 189 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewayClassSpec)), 190 }, metav1.UpdateOptions{}) 191 case gvk.HTTPRoute: 192 return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1beta1.HTTPRoute{ 193 ObjectMeta: objMeta, 194 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.HTTPRouteSpec)), 195 }, metav1.UpdateOptions{}) 196 case gvk.KubernetesGateway: 197 return c.GatewayAPI().GatewayV1beta1().Gateways(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1beta1.Gateway{ 198 ObjectMeta: objMeta, 199 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewaySpec)), 200 }, metav1.UpdateOptions{}) 201 case gvk.PeerAuthentication: 202 return c.Istio().SecurityV1beta1().PeerAuthentications(cfg.Namespace).Update(context.TODO(), &apiistioioapisecurityv1beta1.PeerAuthentication{ 203 ObjectMeta: objMeta, 204 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.PeerAuthentication)), 205 }, metav1.UpdateOptions{}) 206 case gvk.ProxyConfig: 207 return c.Istio().NetworkingV1beta1().ProxyConfigs(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1beta1.ProxyConfig{ 208 ObjectMeta: objMeta, 209 Spec: *(cfg.Spec.(*istioioapinetworkingv1beta1.ProxyConfig)), 210 }, metav1.UpdateOptions{}) 211 case gvk.ReferenceGrant: 212 return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1beta1.ReferenceGrant{ 213 ObjectMeta: objMeta, 214 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1beta1.ReferenceGrantSpec)), 215 }, metav1.UpdateOptions{}) 216 case gvk.RequestAuthentication: 217 return c.Istio().SecurityV1beta1().RequestAuthentications(cfg.Namespace).Update(context.TODO(), &apiistioioapisecurityv1beta1.RequestAuthentication{ 218 ObjectMeta: objMeta, 219 Spec: *(cfg.Spec.(*istioioapisecurityv1beta1.RequestAuthentication)), 220 }, metav1.UpdateOptions{}) 221 case gvk.ServiceEntry: 222 return c.Istio().NetworkingV1alpha3().ServiceEntries(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.ServiceEntry{ 223 ObjectMeta: objMeta, 224 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.ServiceEntry)), 225 }, metav1.UpdateOptions{}) 226 case gvk.Sidecar: 227 return c.Istio().NetworkingV1alpha3().Sidecars(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.Sidecar{ 228 ObjectMeta: objMeta, 229 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.Sidecar)), 230 }, metav1.UpdateOptions{}) 231 case gvk.TCPRoute: 232 return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TCPRoute{ 233 ObjectMeta: objMeta, 234 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.TCPRouteSpec)), 235 }, metav1.UpdateOptions{}) 236 case gvk.TLSRoute: 237 return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TLSRoute{ 238 ObjectMeta: objMeta, 239 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.TLSRouteSpec)), 240 }, metav1.UpdateOptions{}) 241 case gvk.Telemetry: 242 return c.Istio().TelemetryV1alpha1().Telemetries(cfg.Namespace).Update(context.TODO(), &apiistioioapitelemetryv1alpha1.Telemetry{ 243 ObjectMeta: objMeta, 244 Spec: *(cfg.Spec.(*istioioapitelemetryv1alpha1.Telemetry)), 245 }, metav1.UpdateOptions{}) 246 case gvk.UDPRoute: 247 return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(cfg.Namespace).Update(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.UDPRoute{ 248 ObjectMeta: objMeta, 249 Spec: *(cfg.Spec.(*sigsk8siogatewayapiapisv1alpha2.UDPRouteSpec)), 250 }, metav1.UpdateOptions{}) 251 case gvk.VirtualService: 252 return c.Istio().NetworkingV1alpha3().VirtualServices(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.VirtualService{ 253 ObjectMeta: objMeta, 254 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.VirtualService)), 255 }, metav1.UpdateOptions{}) 256 case gvk.WasmPlugin: 257 return c.Istio().ExtensionsV1alpha1().WasmPlugins(cfg.Namespace).Update(context.TODO(), &apiistioioapiextensionsv1alpha1.WasmPlugin{ 258 ObjectMeta: objMeta, 259 Spec: *(cfg.Spec.(*istioioapiextensionsv1alpha1.WasmPlugin)), 260 }, metav1.UpdateOptions{}) 261 case gvk.WorkloadEntry: 262 return c.Istio().NetworkingV1alpha3().WorkloadEntries(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadEntry{ 263 ObjectMeta: objMeta, 264 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.WorkloadEntry)), 265 }, metav1.UpdateOptions{}) 266 case gvk.WorkloadGroup: 267 return c.Istio().NetworkingV1alpha3().WorkloadGroups(cfg.Namespace).Update(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadGroup{ 268 ObjectMeta: objMeta, 269 Spec: *(cfg.Spec.(*istioioapinetworkingv1alpha3.WorkloadGroup)), 270 }, metav1.UpdateOptions{}) 271 default: 272 return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind) 273 } 274 } 275 276 func updateStatus(c kube.Client, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) { 277 switch cfg.GroupVersionKind { 278 case gvk.AuthorizationPolicy: 279 return c.Istio().SecurityV1beta1().AuthorizationPolicies(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapisecurityv1beta1.AuthorizationPolicy{ 280 ObjectMeta: objMeta, 281 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 282 }, metav1.UpdateOptions{}) 283 case gvk.DestinationRule: 284 return c.Istio().NetworkingV1alpha3().DestinationRules(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.DestinationRule{ 285 ObjectMeta: objMeta, 286 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 287 }, metav1.UpdateOptions{}) 288 case gvk.EnvoyFilter: 289 return c.Istio().NetworkingV1alpha3().EnvoyFilters(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.EnvoyFilter{ 290 ObjectMeta: objMeta, 291 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 292 }, metav1.UpdateOptions{}) 293 case gvk.GRPCRoute: 294 return c.GatewayAPI().GatewayV1().GRPCRoutes(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1.GRPCRoute{ 295 ObjectMeta: objMeta, 296 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1.GRPCRouteStatus)), 297 }, metav1.UpdateOptions{}) 298 case gvk.Gateway: 299 return c.Istio().NetworkingV1alpha3().Gateways(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.Gateway{ 300 ObjectMeta: objMeta, 301 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 302 }, metav1.UpdateOptions{}) 303 case gvk.GatewayClass: 304 return c.GatewayAPI().GatewayV1beta1().GatewayClasses().UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1beta1.GatewayClass{ 305 ObjectMeta: objMeta, 306 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1beta1.GatewayClassStatus)), 307 }, metav1.UpdateOptions{}) 308 case gvk.HTTPRoute: 309 return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1beta1.HTTPRoute{ 310 ObjectMeta: objMeta, 311 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1beta1.HTTPRouteStatus)), 312 }, metav1.UpdateOptions{}) 313 case gvk.KubernetesGateway: 314 return c.GatewayAPI().GatewayV1beta1().Gateways(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1beta1.Gateway{ 315 ObjectMeta: objMeta, 316 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1beta1.GatewayStatus)), 317 }, metav1.UpdateOptions{}) 318 case gvk.PeerAuthentication: 319 return c.Istio().SecurityV1beta1().PeerAuthentications(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapisecurityv1beta1.PeerAuthentication{ 320 ObjectMeta: objMeta, 321 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 322 }, metav1.UpdateOptions{}) 323 case gvk.ProxyConfig: 324 return c.Istio().NetworkingV1beta1().ProxyConfigs(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1beta1.ProxyConfig{ 325 ObjectMeta: objMeta, 326 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 327 }, metav1.UpdateOptions{}) 328 case gvk.RequestAuthentication: 329 return c.Istio().SecurityV1beta1().RequestAuthentications(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapisecurityv1beta1.RequestAuthentication{ 330 ObjectMeta: objMeta, 331 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 332 }, metav1.UpdateOptions{}) 333 case gvk.ServiceEntry: 334 return c.Istio().NetworkingV1alpha3().ServiceEntries(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.ServiceEntry{ 335 ObjectMeta: objMeta, 336 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 337 }, metav1.UpdateOptions{}) 338 case gvk.Sidecar: 339 return c.Istio().NetworkingV1alpha3().Sidecars(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.Sidecar{ 340 ObjectMeta: objMeta, 341 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 342 }, metav1.UpdateOptions{}) 343 case gvk.TCPRoute: 344 return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TCPRoute{ 345 ObjectMeta: objMeta, 346 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1alpha2.TCPRouteStatus)), 347 }, metav1.UpdateOptions{}) 348 case gvk.TLSRoute: 349 return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.TLSRoute{ 350 ObjectMeta: objMeta, 351 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1alpha2.TLSRouteStatus)), 352 }, metav1.UpdateOptions{}) 353 case gvk.Telemetry: 354 return c.Istio().TelemetryV1alpha1().Telemetries(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapitelemetryv1alpha1.Telemetry{ 355 ObjectMeta: objMeta, 356 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 357 }, metav1.UpdateOptions{}) 358 case gvk.UDPRoute: 359 return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(cfg.Namespace).UpdateStatus(context.TODO(), &sigsk8siogatewayapiapisv1alpha2.UDPRoute{ 360 ObjectMeta: objMeta, 361 Status: *(cfg.Status.(*sigsk8siogatewayapiapisv1alpha2.UDPRouteStatus)), 362 }, metav1.UpdateOptions{}) 363 case gvk.VirtualService: 364 return c.Istio().NetworkingV1alpha3().VirtualServices(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.VirtualService{ 365 ObjectMeta: objMeta, 366 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 367 }, metav1.UpdateOptions{}) 368 case gvk.WasmPlugin: 369 return c.Istio().ExtensionsV1alpha1().WasmPlugins(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapiextensionsv1alpha1.WasmPlugin{ 370 ObjectMeta: objMeta, 371 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 372 }, metav1.UpdateOptions{}) 373 case gvk.WorkloadEntry: 374 return c.Istio().NetworkingV1alpha3().WorkloadEntries(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadEntry{ 375 ObjectMeta: objMeta, 376 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 377 }, metav1.UpdateOptions{}) 378 case gvk.WorkloadGroup: 379 return c.Istio().NetworkingV1alpha3().WorkloadGroups(cfg.Namespace).UpdateStatus(context.TODO(), &apiistioioapinetworkingv1alpha3.WorkloadGroup{ 380 ObjectMeta: objMeta, 381 Status: *(cfg.Status.(*istioioapimetav1alpha1.IstioStatus)), 382 }, metav1.UpdateOptions{}) 383 default: 384 return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind) 385 } 386 } 387 388 func patch(c kube.Client, orig config.Config, origMeta metav1.ObjectMeta, mod config.Config, modMeta metav1.ObjectMeta, typ types.PatchType) (metav1.Object, error) { 389 if orig.GroupVersionKind != mod.GroupVersionKind { 390 return nil, fmt.Errorf("gvk mismatch: %v, modified: %v", orig.GroupVersionKind, mod.GroupVersionKind) 391 } 392 switch orig.GroupVersionKind { 393 case gvk.AuthorizationPolicy: 394 oldRes := &apiistioioapisecurityv1beta1.AuthorizationPolicy{ 395 ObjectMeta: origMeta, 396 Spec: *(orig.Spec.(*istioioapisecurityv1beta1.AuthorizationPolicy)), 397 } 398 modRes := &apiistioioapisecurityv1beta1.AuthorizationPolicy{ 399 ObjectMeta: modMeta, 400 Spec: *(mod.Spec.(*istioioapisecurityv1beta1.AuthorizationPolicy)), 401 } 402 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 403 if err != nil { 404 return nil, err 405 } 406 return c.Istio().SecurityV1beta1().AuthorizationPolicies(orig.Namespace). 407 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 408 case gvk.DestinationRule: 409 oldRes := &apiistioioapinetworkingv1alpha3.DestinationRule{ 410 ObjectMeta: origMeta, 411 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.DestinationRule)), 412 } 413 modRes := &apiistioioapinetworkingv1alpha3.DestinationRule{ 414 ObjectMeta: modMeta, 415 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.DestinationRule)), 416 } 417 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 418 if err != nil { 419 return nil, err 420 } 421 return c.Istio().NetworkingV1alpha3().DestinationRules(orig.Namespace). 422 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 423 case gvk.EnvoyFilter: 424 oldRes := &apiistioioapinetworkingv1alpha3.EnvoyFilter{ 425 ObjectMeta: origMeta, 426 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.EnvoyFilter)), 427 } 428 modRes := &apiistioioapinetworkingv1alpha3.EnvoyFilter{ 429 ObjectMeta: modMeta, 430 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.EnvoyFilter)), 431 } 432 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 433 if err != nil { 434 return nil, err 435 } 436 return c.Istio().NetworkingV1alpha3().EnvoyFilters(orig.Namespace). 437 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 438 case gvk.GRPCRoute: 439 oldRes := &sigsk8siogatewayapiapisv1.GRPCRoute{ 440 ObjectMeta: origMeta, 441 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1.GRPCRouteSpec)), 442 } 443 modRes := &sigsk8siogatewayapiapisv1.GRPCRoute{ 444 ObjectMeta: modMeta, 445 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1.GRPCRouteSpec)), 446 } 447 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 448 if err != nil { 449 return nil, err 450 } 451 return c.GatewayAPI().GatewayV1().GRPCRoutes(orig.Namespace). 452 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 453 case gvk.Gateway: 454 oldRes := &apiistioioapinetworkingv1alpha3.Gateway{ 455 ObjectMeta: origMeta, 456 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.Gateway)), 457 } 458 modRes := &apiistioioapinetworkingv1alpha3.Gateway{ 459 ObjectMeta: modMeta, 460 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.Gateway)), 461 } 462 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 463 if err != nil { 464 return nil, err 465 } 466 return c.Istio().NetworkingV1alpha3().Gateways(orig.Namespace). 467 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 468 case gvk.GatewayClass: 469 oldRes := &sigsk8siogatewayapiapisv1beta1.GatewayClass{ 470 ObjectMeta: origMeta, 471 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewayClassSpec)), 472 } 473 modRes := &sigsk8siogatewayapiapisv1beta1.GatewayClass{ 474 ObjectMeta: modMeta, 475 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewayClassSpec)), 476 } 477 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 478 if err != nil { 479 return nil, err 480 } 481 return c.GatewayAPI().GatewayV1beta1().GatewayClasses(). 482 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 483 case gvk.HTTPRoute: 484 oldRes := &sigsk8siogatewayapiapisv1beta1.HTTPRoute{ 485 ObjectMeta: origMeta, 486 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1beta1.HTTPRouteSpec)), 487 } 488 modRes := &sigsk8siogatewayapiapisv1beta1.HTTPRoute{ 489 ObjectMeta: modMeta, 490 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1beta1.HTTPRouteSpec)), 491 } 492 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 493 if err != nil { 494 return nil, err 495 } 496 return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(orig.Namespace). 497 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 498 case gvk.KubernetesGateway: 499 oldRes := &sigsk8siogatewayapiapisv1beta1.Gateway{ 500 ObjectMeta: origMeta, 501 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewaySpec)), 502 } 503 modRes := &sigsk8siogatewayapiapisv1beta1.Gateway{ 504 ObjectMeta: modMeta, 505 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1beta1.GatewaySpec)), 506 } 507 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 508 if err != nil { 509 return nil, err 510 } 511 return c.GatewayAPI().GatewayV1beta1().Gateways(orig.Namespace). 512 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 513 case gvk.PeerAuthentication: 514 oldRes := &apiistioioapisecurityv1beta1.PeerAuthentication{ 515 ObjectMeta: origMeta, 516 Spec: *(orig.Spec.(*istioioapisecurityv1beta1.PeerAuthentication)), 517 } 518 modRes := &apiistioioapisecurityv1beta1.PeerAuthentication{ 519 ObjectMeta: modMeta, 520 Spec: *(mod.Spec.(*istioioapisecurityv1beta1.PeerAuthentication)), 521 } 522 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 523 if err != nil { 524 return nil, err 525 } 526 return c.Istio().SecurityV1beta1().PeerAuthentications(orig.Namespace). 527 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 528 case gvk.ProxyConfig: 529 oldRes := &apiistioioapinetworkingv1beta1.ProxyConfig{ 530 ObjectMeta: origMeta, 531 Spec: *(orig.Spec.(*istioioapinetworkingv1beta1.ProxyConfig)), 532 } 533 modRes := &apiistioioapinetworkingv1beta1.ProxyConfig{ 534 ObjectMeta: modMeta, 535 Spec: *(mod.Spec.(*istioioapinetworkingv1beta1.ProxyConfig)), 536 } 537 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 538 if err != nil { 539 return nil, err 540 } 541 return c.Istio().NetworkingV1beta1().ProxyConfigs(orig.Namespace). 542 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 543 case gvk.ReferenceGrant: 544 oldRes := &sigsk8siogatewayapiapisv1beta1.ReferenceGrant{ 545 ObjectMeta: origMeta, 546 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1beta1.ReferenceGrantSpec)), 547 } 548 modRes := &sigsk8siogatewayapiapisv1beta1.ReferenceGrant{ 549 ObjectMeta: modMeta, 550 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1beta1.ReferenceGrantSpec)), 551 } 552 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 553 if err != nil { 554 return nil, err 555 } 556 return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(orig.Namespace). 557 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 558 case gvk.RequestAuthentication: 559 oldRes := &apiistioioapisecurityv1beta1.RequestAuthentication{ 560 ObjectMeta: origMeta, 561 Spec: *(orig.Spec.(*istioioapisecurityv1beta1.RequestAuthentication)), 562 } 563 modRes := &apiistioioapisecurityv1beta1.RequestAuthentication{ 564 ObjectMeta: modMeta, 565 Spec: *(mod.Spec.(*istioioapisecurityv1beta1.RequestAuthentication)), 566 } 567 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 568 if err != nil { 569 return nil, err 570 } 571 return c.Istio().SecurityV1beta1().RequestAuthentications(orig.Namespace). 572 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 573 case gvk.ServiceEntry: 574 oldRes := &apiistioioapinetworkingv1alpha3.ServiceEntry{ 575 ObjectMeta: origMeta, 576 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.ServiceEntry)), 577 } 578 modRes := &apiistioioapinetworkingv1alpha3.ServiceEntry{ 579 ObjectMeta: modMeta, 580 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.ServiceEntry)), 581 } 582 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 583 if err != nil { 584 return nil, err 585 } 586 return c.Istio().NetworkingV1alpha3().ServiceEntries(orig.Namespace). 587 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 588 case gvk.Sidecar: 589 oldRes := &apiistioioapinetworkingv1alpha3.Sidecar{ 590 ObjectMeta: origMeta, 591 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.Sidecar)), 592 } 593 modRes := &apiistioioapinetworkingv1alpha3.Sidecar{ 594 ObjectMeta: modMeta, 595 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.Sidecar)), 596 } 597 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 598 if err != nil { 599 return nil, err 600 } 601 return c.Istio().NetworkingV1alpha3().Sidecars(orig.Namespace). 602 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 603 case gvk.TCPRoute: 604 oldRes := &sigsk8siogatewayapiapisv1alpha2.TCPRoute{ 605 ObjectMeta: origMeta, 606 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1alpha2.TCPRouteSpec)), 607 } 608 modRes := &sigsk8siogatewayapiapisv1alpha2.TCPRoute{ 609 ObjectMeta: modMeta, 610 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1alpha2.TCPRouteSpec)), 611 } 612 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 613 if err != nil { 614 return nil, err 615 } 616 return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(orig.Namespace). 617 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 618 case gvk.TLSRoute: 619 oldRes := &sigsk8siogatewayapiapisv1alpha2.TLSRoute{ 620 ObjectMeta: origMeta, 621 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1alpha2.TLSRouteSpec)), 622 } 623 modRes := &sigsk8siogatewayapiapisv1alpha2.TLSRoute{ 624 ObjectMeta: modMeta, 625 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1alpha2.TLSRouteSpec)), 626 } 627 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 628 if err != nil { 629 return nil, err 630 } 631 return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(orig.Namespace). 632 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 633 case gvk.Telemetry: 634 oldRes := &apiistioioapitelemetryv1alpha1.Telemetry{ 635 ObjectMeta: origMeta, 636 Spec: *(orig.Spec.(*istioioapitelemetryv1alpha1.Telemetry)), 637 } 638 modRes := &apiistioioapitelemetryv1alpha1.Telemetry{ 639 ObjectMeta: modMeta, 640 Spec: *(mod.Spec.(*istioioapitelemetryv1alpha1.Telemetry)), 641 } 642 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 643 if err != nil { 644 return nil, err 645 } 646 return c.Istio().TelemetryV1alpha1().Telemetries(orig.Namespace). 647 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 648 case gvk.UDPRoute: 649 oldRes := &sigsk8siogatewayapiapisv1alpha2.UDPRoute{ 650 ObjectMeta: origMeta, 651 Spec: *(orig.Spec.(*sigsk8siogatewayapiapisv1alpha2.UDPRouteSpec)), 652 } 653 modRes := &sigsk8siogatewayapiapisv1alpha2.UDPRoute{ 654 ObjectMeta: modMeta, 655 Spec: *(mod.Spec.(*sigsk8siogatewayapiapisv1alpha2.UDPRouteSpec)), 656 } 657 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 658 if err != nil { 659 return nil, err 660 } 661 return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(orig.Namespace). 662 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 663 case gvk.VirtualService: 664 oldRes := &apiistioioapinetworkingv1alpha3.VirtualService{ 665 ObjectMeta: origMeta, 666 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.VirtualService)), 667 } 668 modRes := &apiistioioapinetworkingv1alpha3.VirtualService{ 669 ObjectMeta: modMeta, 670 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.VirtualService)), 671 } 672 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 673 if err != nil { 674 return nil, err 675 } 676 return c.Istio().NetworkingV1alpha3().VirtualServices(orig.Namespace). 677 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 678 case gvk.WasmPlugin: 679 oldRes := &apiistioioapiextensionsv1alpha1.WasmPlugin{ 680 ObjectMeta: origMeta, 681 Spec: *(orig.Spec.(*istioioapiextensionsv1alpha1.WasmPlugin)), 682 } 683 modRes := &apiistioioapiextensionsv1alpha1.WasmPlugin{ 684 ObjectMeta: modMeta, 685 Spec: *(mod.Spec.(*istioioapiextensionsv1alpha1.WasmPlugin)), 686 } 687 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 688 if err != nil { 689 return nil, err 690 } 691 return c.Istio().ExtensionsV1alpha1().WasmPlugins(orig.Namespace). 692 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 693 case gvk.WorkloadEntry: 694 oldRes := &apiistioioapinetworkingv1alpha3.WorkloadEntry{ 695 ObjectMeta: origMeta, 696 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.WorkloadEntry)), 697 } 698 modRes := &apiistioioapinetworkingv1alpha3.WorkloadEntry{ 699 ObjectMeta: modMeta, 700 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.WorkloadEntry)), 701 } 702 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 703 if err != nil { 704 return nil, err 705 } 706 return c.Istio().NetworkingV1alpha3().WorkloadEntries(orig.Namespace). 707 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 708 case gvk.WorkloadGroup: 709 oldRes := &apiistioioapinetworkingv1alpha3.WorkloadGroup{ 710 ObjectMeta: origMeta, 711 Spec: *(orig.Spec.(*istioioapinetworkingv1alpha3.WorkloadGroup)), 712 } 713 modRes := &apiistioioapinetworkingv1alpha3.WorkloadGroup{ 714 ObjectMeta: modMeta, 715 Spec: *(mod.Spec.(*istioioapinetworkingv1alpha3.WorkloadGroup)), 716 } 717 patchBytes, err := genPatchBytes(oldRes, modRes, typ) 718 if err != nil { 719 return nil, err 720 } 721 return c.Istio().NetworkingV1alpha3().WorkloadGroups(orig.Namespace). 722 Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"}) 723 default: 724 return nil, fmt.Errorf("unsupported type: %v", orig.GroupVersionKind) 725 } 726 } 727 728 func delete(c kube.Client, typ config.GroupVersionKind, name, namespace string, resourceVersion *string) error { 729 var deleteOptions metav1.DeleteOptions 730 if resourceVersion != nil { 731 deleteOptions.Preconditions = &metav1.Preconditions{ResourceVersion: resourceVersion} 732 } 733 switch typ { 734 case gvk.AuthorizationPolicy: 735 return c.Istio().SecurityV1beta1().AuthorizationPolicies(namespace).Delete(context.TODO(), name, deleteOptions) 736 case gvk.DestinationRule: 737 return c.Istio().NetworkingV1alpha3().DestinationRules(namespace).Delete(context.TODO(), name, deleteOptions) 738 case gvk.EnvoyFilter: 739 return c.Istio().NetworkingV1alpha3().EnvoyFilters(namespace).Delete(context.TODO(), name, deleteOptions) 740 case gvk.GRPCRoute: 741 return c.GatewayAPI().GatewayV1().GRPCRoutes(namespace).Delete(context.TODO(), name, deleteOptions) 742 case gvk.Gateway: 743 return c.Istio().NetworkingV1alpha3().Gateways(namespace).Delete(context.TODO(), name, deleteOptions) 744 case gvk.GatewayClass: 745 return c.GatewayAPI().GatewayV1beta1().GatewayClasses().Delete(context.TODO(), name, deleteOptions) 746 case gvk.HTTPRoute: 747 return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(namespace).Delete(context.TODO(), name, deleteOptions) 748 case gvk.KubernetesGateway: 749 return c.GatewayAPI().GatewayV1beta1().Gateways(namespace).Delete(context.TODO(), name, deleteOptions) 750 case gvk.PeerAuthentication: 751 return c.Istio().SecurityV1beta1().PeerAuthentications(namespace).Delete(context.TODO(), name, deleteOptions) 752 case gvk.ProxyConfig: 753 return c.Istio().NetworkingV1beta1().ProxyConfigs(namespace).Delete(context.TODO(), name, deleteOptions) 754 case gvk.ReferenceGrant: 755 return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(namespace).Delete(context.TODO(), name, deleteOptions) 756 case gvk.RequestAuthentication: 757 return c.Istio().SecurityV1beta1().RequestAuthentications(namespace).Delete(context.TODO(), name, deleteOptions) 758 case gvk.ServiceEntry: 759 return c.Istio().NetworkingV1alpha3().ServiceEntries(namespace).Delete(context.TODO(), name, deleteOptions) 760 case gvk.Sidecar: 761 return c.Istio().NetworkingV1alpha3().Sidecars(namespace).Delete(context.TODO(), name, deleteOptions) 762 case gvk.TCPRoute: 763 return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(namespace).Delete(context.TODO(), name, deleteOptions) 764 case gvk.TLSRoute: 765 return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(namespace).Delete(context.TODO(), name, deleteOptions) 766 case gvk.Telemetry: 767 return c.Istio().TelemetryV1alpha1().Telemetries(namespace).Delete(context.TODO(), name, deleteOptions) 768 case gvk.UDPRoute: 769 return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(namespace).Delete(context.TODO(), name, deleteOptions) 770 case gvk.VirtualService: 771 return c.Istio().NetworkingV1alpha3().VirtualServices(namespace).Delete(context.TODO(), name, deleteOptions) 772 case gvk.WasmPlugin: 773 return c.Istio().ExtensionsV1alpha1().WasmPlugins(namespace).Delete(context.TODO(), name, deleteOptions) 774 case gvk.WorkloadEntry: 775 return c.Istio().NetworkingV1alpha3().WorkloadEntries(namespace).Delete(context.TODO(), name, deleteOptions) 776 case gvk.WorkloadGroup: 777 return c.Istio().NetworkingV1alpha3().WorkloadGroups(namespace).Delete(context.TODO(), name, deleteOptions) 778 default: 779 return fmt.Errorf("unsupported type: %v", typ) 780 } 781 } 782 783 var translationMap = map[config.GroupVersionKind]func(r runtime.Object) config.Config{ 784 gvk.AuthorizationPolicy: func(r runtime.Object) config.Config { 785 obj := r.(*apiistioioapisecurityv1beta1.AuthorizationPolicy) 786 return config.Config{ 787 Meta: config.Meta{ 788 GroupVersionKind: gvk.AuthorizationPolicy, 789 Name: obj.Name, 790 Namespace: obj.Namespace, 791 Labels: obj.Labels, 792 Annotations: obj.Annotations, 793 ResourceVersion: obj.ResourceVersion, 794 CreationTimestamp: obj.CreationTimestamp.Time, 795 OwnerReferences: obj.OwnerReferences, 796 UID: string(obj.UID), 797 Generation: obj.Generation, 798 }, 799 Spec: &obj.Spec, 800 Status: &obj.Status, 801 } 802 }, 803 gvk.CertificateSigningRequest: func(r runtime.Object) config.Config { 804 obj := r.(*k8sioapicertificatesv1.CertificateSigningRequest) 805 return config.Config{ 806 Meta: config.Meta{ 807 GroupVersionKind: gvk.CertificateSigningRequest, 808 Name: obj.Name, 809 Namespace: obj.Namespace, 810 Labels: obj.Labels, 811 Annotations: obj.Annotations, 812 ResourceVersion: obj.ResourceVersion, 813 CreationTimestamp: obj.CreationTimestamp.Time, 814 OwnerReferences: obj.OwnerReferences, 815 UID: string(obj.UID), 816 Generation: obj.Generation, 817 }, 818 Spec: &obj.Spec, 819 Status: &obj.Status, 820 } 821 }, 822 gvk.ConfigMap: func(r runtime.Object) config.Config { 823 obj := r.(*k8sioapicorev1.ConfigMap) 824 return config.Config{ 825 Meta: config.Meta{ 826 GroupVersionKind: gvk.ConfigMap, 827 Name: obj.Name, 828 Namespace: obj.Namespace, 829 Labels: obj.Labels, 830 Annotations: obj.Annotations, 831 ResourceVersion: obj.ResourceVersion, 832 CreationTimestamp: obj.CreationTimestamp.Time, 833 OwnerReferences: obj.OwnerReferences, 834 UID: string(obj.UID), 835 Generation: obj.Generation, 836 }, 837 Spec: obj, 838 } 839 }, 840 gvk.CustomResourceDefinition: func(r runtime.Object) config.Config { 841 obj := r.(*k8sioapiextensionsapiserverpkgapisapiextensionsv1.CustomResourceDefinition) 842 return config.Config{ 843 Meta: config.Meta{ 844 GroupVersionKind: gvk.CustomResourceDefinition, 845 Name: obj.Name, 846 Namespace: obj.Namespace, 847 Labels: obj.Labels, 848 Annotations: obj.Annotations, 849 ResourceVersion: obj.ResourceVersion, 850 CreationTimestamp: obj.CreationTimestamp.Time, 851 OwnerReferences: obj.OwnerReferences, 852 UID: string(obj.UID), 853 Generation: obj.Generation, 854 }, 855 Spec: &obj.Spec, 856 } 857 }, 858 gvk.DaemonSet: func(r runtime.Object) config.Config { 859 obj := r.(*k8sioapiappsv1.DaemonSet) 860 return config.Config{ 861 Meta: config.Meta{ 862 GroupVersionKind: gvk.DaemonSet, 863 Name: obj.Name, 864 Namespace: obj.Namespace, 865 Labels: obj.Labels, 866 Annotations: obj.Annotations, 867 ResourceVersion: obj.ResourceVersion, 868 CreationTimestamp: obj.CreationTimestamp.Time, 869 OwnerReferences: obj.OwnerReferences, 870 UID: string(obj.UID), 871 Generation: obj.Generation, 872 }, 873 Spec: &obj.Spec, 874 } 875 }, 876 gvk.Deployment: func(r runtime.Object) config.Config { 877 obj := r.(*k8sioapiappsv1.Deployment) 878 return config.Config{ 879 Meta: config.Meta{ 880 GroupVersionKind: gvk.Deployment, 881 Name: obj.Name, 882 Namespace: obj.Namespace, 883 Labels: obj.Labels, 884 Annotations: obj.Annotations, 885 ResourceVersion: obj.ResourceVersion, 886 CreationTimestamp: obj.CreationTimestamp.Time, 887 OwnerReferences: obj.OwnerReferences, 888 UID: string(obj.UID), 889 Generation: obj.Generation, 890 }, 891 Spec: &obj.Spec, 892 } 893 }, 894 gvk.DestinationRule: func(r runtime.Object) config.Config { 895 obj := r.(*apiistioioapinetworkingv1alpha3.DestinationRule) 896 return config.Config{ 897 Meta: config.Meta{ 898 GroupVersionKind: gvk.DestinationRule, 899 Name: obj.Name, 900 Namespace: obj.Namespace, 901 Labels: obj.Labels, 902 Annotations: obj.Annotations, 903 ResourceVersion: obj.ResourceVersion, 904 CreationTimestamp: obj.CreationTimestamp.Time, 905 OwnerReferences: obj.OwnerReferences, 906 UID: string(obj.UID), 907 Generation: obj.Generation, 908 }, 909 Spec: &obj.Spec, 910 Status: &obj.Status, 911 } 912 }, 913 gvk.EndpointSlice: func(r runtime.Object) config.Config { 914 obj := r.(*k8sioapidiscoveryv1.EndpointSlice) 915 return config.Config{ 916 Meta: config.Meta{ 917 GroupVersionKind: gvk.EndpointSlice, 918 Name: obj.Name, 919 Namespace: obj.Namespace, 920 Labels: obj.Labels, 921 Annotations: obj.Annotations, 922 ResourceVersion: obj.ResourceVersion, 923 CreationTimestamp: obj.CreationTimestamp.Time, 924 OwnerReferences: obj.OwnerReferences, 925 UID: string(obj.UID), 926 Generation: obj.Generation, 927 }, 928 Spec: obj, 929 } 930 }, 931 gvk.Endpoints: func(r runtime.Object) config.Config { 932 obj := r.(*k8sioapicorev1.Endpoints) 933 return config.Config{ 934 Meta: config.Meta{ 935 GroupVersionKind: gvk.Endpoints, 936 Name: obj.Name, 937 Namespace: obj.Namespace, 938 Labels: obj.Labels, 939 Annotations: obj.Annotations, 940 ResourceVersion: obj.ResourceVersion, 941 CreationTimestamp: obj.CreationTimestamp.Time, 942 OwnerReferences: obj.OwnerReferences, 943 UID: string(obj.UID), 944 Generation: obj.Generation, 945 }, 946 Spec: obj, 947 } 948 }, 949 gvk.EnvoyFilter: func(r runtime.Object) config.Config { 950 obj := r.(*apiistioioapinetworkingv1alpha3.EnvoyFilter) 951 return config.Config{ 952 Meta: config.Meta{ 953 GroupVersionKind: gvk.EnvoyFilter, 954 Name: obj.Name, 955 Namespace: obj.Namespace, 956 Labels: obj.Labels, 957 Annotations: obj.Annotations, 958 ResourceVersion: obj.ResourceVersion, 959 CreationTimestamp: obj.CreationTimestamp.Time, 960 OwnerReferences: obj.OwnerReferences, 961 UID: string(obj.UID), 962 Generation: obj.Generation, 963 }, 964 Spec: &obj.Spec, 965 Status: &obj.Status, 966 } 967 }, 968 gvk.GRPCRoute: func(r runtime.Object) config.Config { 969 obj := r.(*sigsk8siogatewayapiapisv1.GRPCRoute) 970 return config.Config{ 971 Meta: config.Meta{ 972 GroupVersionKind: gvk.GRPCRoute, 973 Name: obj.Name, 974 Namespace: obj.Namespace, 975 Labels: obj.Labels, 976 Annotations: obj.Annotations, 977 ResourceVersion: obj.ResourceVersion, 978 CreationTimestamp: obj.CreationTimestamp.Time, 979 OwnerReferences: obj.OwnerReferences, 980 UID: string(obj.UID), 981 Generation: obj.Generation, 982 }, 983 Spec: &obj.Spec, 984 Status: &obj.Status, 985 } 986 }, 987 gvk.Gateway: func(r runtime.Object) config.Config { 988 obj := r.(*apiistioioapinetworkingv1alpha3.Gateway) 989 return config.Config{ 990 Meta: config.Meta{ 991 GroupVersionKind: gvk.Gateway, 992 Name: obj.Name, 993 Namespace: obj.Namespace, 994 Labels: obj.Labels, 995 Annotations: obj.Annotations, 996 ResourceVersion: obj.ResourceVersion, 997 CreationTimestamp: obj.CreationTimestamp.Time, 998 OwnerReferences: obj.OwnerReferences, 999 UID: string(obj.UID), 1000 Generation: obj.Generation, 1001 }, 1002 Spec: &obj.Spec, 1003 Status: &obj.Status, 1004 } 1005 }, 1006 gvk.GatewayClass: func(r runtime.Object) config.Config { 1007 obj := r.(*sigsk8siogatewayapiapisv1beta1.GatewayClass) 1008 return config.Config{ 1009 Meta: config.Meta{ 1010 GroupVersionKind: gvk.GatewayClass, 1011 Name: obj.Name, 1012 Namespace: obj.Namespace, 1013 Labels: obj.Labels, 1014 Annotations: obj.Annotations, 1015 ResourceVersion: obj.ResourceVersion, 1016 CreationTimestamp: obj.CreationTimestamp.Time, 1017 OwnerReferences: obj.OwnerReferences, 1018 UID: string(obj.UID), 1019 Generation: obj.Generation, 1020 }, 1021 Spec: &obj.Spec, 1022 Status: &obj.Status, 1023 } 1024 }, 1025 gvk.HTTPRoute: func(r runtime.Object) config.Config { 1026 obj := r.(*sigsk8siogatewayapiapisv1beta1.HTTPRoute) 1027 return config.Config{ 1028 Meta: config.Meta{ 1029 GroupVersionKind: gvk.HTTPRoute, 1030 Name: obj.Name, 1031 Namespace: obj.Namespace, 1032 Labels: obj.Labels, 1033 Annotations: obj.Annotations, 1034 ResourceVersion: obj.ResourceVersion, 1035 CreationTimestamp: obj.CreationTimestamp.Time, 1036 OwnerReferences: obj.OwnerReferences, 1037 UID: string(obj.UID), 1038 Generation: obj.Generation, 1039 }, 1040 Spec: &obj.Spec, 1041 Status: &obj.Status, 1042 } 1043 }, 1044 gvk.Ingress: func(r runtime.Object) config.Config { 1045 obj := r.(*k8sioapinetworkingv1.Ingress) 1046 return config.Config{ 1047 Meta: config.Meta{ 1048 GroupVersionKind: gvk.Ingress, 1049 Name: obj.Name, 1050 Namespace: obj.Namespace, 1051 Labels: obj.Labels, 1052 Annotations: obj.Annotations, 1053 ResourceVersion: obj.ResourceVersion, 1054 CreationTimestamp: obj.CreationTimestamp.Time, 1055 OwnerReferences: obj.OwnerReferences, 1056 UID: string(obj.UID), 1057 Generation: obj.Generation, 1058 }, 1059 Spec: &obj.Spec, 1060 Status: &obj.Status, 1061 } 1062 }, 1063 gvk.IngressClass: func(r runtime.Object) config.Config { 1064 obj := r.(*k8sioapinetworkingv1.IngressClass) 1065 return config.Config{ 1066 Meta: config.Meta{ 1067 GroupVersionKind: gvk.IngressClass, 1068 Name: obj.Name, 1069 Namespace: obj.Namespace, 1070 Labels: obj.Labels, 1071 Annotations: obj.Annotations, 1072 ResourceVersion: obj.ResourceVersion, 1073 CreationTimestamp: obj.CreationTimestamp.Time, 1074 OwnerReferences: obj.OwnerReferences, 1075 UID: string(obj.UID), 1076 Generation: obj.Generation, 1077 }, 1078 Spec: &obj.Spec, 1079 } 1080 }, 1081 gvk.KubernetesGateway: func(r runtime.Object) config.Config { 1082 obj := r.(*sigsk8siogatewayapiapisv1beta1.Gateway) 1083 return config.Config{ 1084 Meta: config.Meta{ 1085 GroupVersionKind: gvk.KubernetesGateway, 1086 Name: obj.Name, 1087 Namespace: obj.Namespace, 1088 Labels: obj.Labels, 1089 Annotations: obj.Annotations, 1090 ResourceVersion: obj.ResourceVersion, 1091 CreationTimestamp: obj.CreationTimestamp.Time, 1092 OwnerReferences: obj.OwnerReferences, 1093 UID: string(obj.UID), 1094 Generation: obj.Generation, 1095 }, 1096 Spec: &obj.Spec, 1097 Status: &obj.Status, 1098 } 1099 }, 1100 gvk.Lease: func(r runtime.Object) config.Config { 1101 obj := r.(*k8sioapicoordinationv1.Lease) 1102 return config.Config{ 1103 Meta: config.Meta{ 1104 GroupVersionKind: gvk.Lease, 1105 Name: obj.Name, 1106 Namespace: obj.Namespace, 1107 Labels: obj.Labels, 1108 Annotations: obj.Annotations, 1109 ResourceVersion: obj.ResourceVersion, 1110 CreationTimestamp: obj.CreationTimestamp.Time, 1111 OwnerReferences: obj.OwnerReferences, 1112 UID: string(obj.UID), 1113 Generation: obj.Generation, 1114 }, 1115 Spec: &obj.Spec, 1116 } 1117 }, 1118 gvk.MutatingWebhookConfiguration: func(r runtime.Object) config.Config { 1119 obj := r.(*k8sioapiadmissionregistrationv1.MutatingWebhookConfiguration) 1120 return config.Config{ 1121 Meta: config.Meta{ 1122 GroupVersionKind: gvk.MutatingWebhookConfiguration, 1123 Name: obj.Name, 1124 Namespace: obj.Namespace, 1125 Labels: obj.Labels, 1126 Annotations: obj.Annotations, 1127 ResourceVersion: obj.ResourceVersion, 1128 CreationTimestamp: obj.CreationTimestamp.Time, 1129 OwnerReferences: obj.OwnerReferences, 1130 UID: string(obj.UID), 1131 Generation: obj.Generation, 1132 }, 1133 Spec: obj, 1134 } 1135 }, 1136 gvk.Namespace: func(r runtime.Object) config.Config { 1137 obj := r.(*k8sioapicorev1.Namespace) 1138 return config.Config{ 1139 Meta: config.Meta{ 1140 GroupVersionKind: gvk.Namespace, 1141 Name: obj.Name, 1142 Namespace: obj.Namespace, 1143 Labels: obj.Labels, 1144 Annotations: obj.Annotations, 1145 ResourceVersion: obj.ResourceVersion, 1146 CreationTimestamp: obj.CreationTimestamp.Time, 1147 OwnerReferences: obj.OwnerReferences, 1148 UID: string(obj.UID), 1149 Generation: obj.Generation, 1150 }, 1151 Spec: &obj.Spec, 1152 } 1153 }, 1154 gvk.Node: func(r runtime.Object) config.Config { 1155 obj := r.(*k8sioapicorev1.Node) 1156 return config.Config{ 1157 Meta: config.Meta{ 1158 GroupVersionKind: gvk.Node, 1159 Name: obj.Name, 1160 Namespace: obj.Namespace, 1161 Labels: obj.Labels, 1162 Annotations: obj.Annotations, 1163 ResourceVersion: obj.ResourceVersion, 1164 CreationTimestamp: obj.CreationTimestamp.Time, 1165 OwnerReferences: obj.OwnerReferences, 1166 UID: string(obj.UID), 1167 Generation: obj.Generation, 1168 }, 1169 Spec: &obj.Spec, 1170 } 1171 }, 1172 gvk.PeerAuthentication: func(r runtime.Object) config.Config { 1173 obj := r.(*apiistioioapisecurityv1beta1.PeerAuthentication) 1174 return config.Config{ 1175 Meta: config.Meta{ 1176 GroupVersionKind: gvk.PeerAuthentication, 1177 Name: obj.Name, 1178 Namespace: obj.Namespace, 1179 Labels: obj.Labels, 1180 Annotations: obj.Annotations, 1181 ResourceVersion: obj.ResourceVersion, 1182 CreationTimestamp: obj.CreationTimestamp.Time, 1183 OwnerReferences: obj.OwnerReferences, 1184 UID: string(obj.UID), 1185 Generation: obj.Generation, 1186 }, 1187 Spec: &obj.Spec, 1188 Status: &obj.Status, 1189 } 1190 }, 1191 gvk.Pod: func(r runtime.Object) config.Config { 1192 obj := r.(*k8sioapicorev1.Pod) 1193 return config.Config{ 1194 Meta: config.Meta{ 1195 GroupVersionKind: gvk.Pod, 1196 Name: obj.Name, 1197 Namespace: obj.Namespace, 1198 Labels: obj.Labels, 1199 Annotations: obj.Annotations, 1200 ResourceVersion: obj.ResourceVersion, 1201 CreationTimestamp: obj.CreationTimestamp.Time, 1202 OwnerReferences: obj.OwnerReferences, 1203 UID: string(obj.UID), 1204 Generation: obj.Generation, 1205 }, 1206 Spec: &obj.Spec, 1207 } 1208 }, 1209 gvk.ProxyConfig: func(r runtime.Object) config.Config { 1210 obj := r.(*apiistioioapinetworkingv1beta1.ProxyConfig) 1211 return config.Config{ 1212 Meta: config.Meta{ 1213 GroupVersionKind: gvk.ProxyConfig, 1214 Name: obj.Name, 1215 Namespace: obj.Namespace, 1216 Labels: obj.Labels, 1217 Annotations: obj.Annotations, 1218 ResourceVersion: obj.ResourceVersion, 1219 CreationTimestamp: obj.CreationTimestamp.Time, 1220 OwnerReferences: obj.OwnerReferences, 1221 UID: string(obj.UID), 1222 Generation: obj.Generation, 1223 }, 1224 Spec: &obj.Spec, 1225 Status: &obj.Status, 1226 } 1227 }, 1228 gvk.ReferenceGrant: func(r runtime.Object) config.Config { 1229 obj := r.(*sigsk8siogatewayapiapisv1beta1.ReferenceGrant) 1230 return config.Config{ 1231 Meta: config.Meta{ 1232 GroupVersionKind: gvk.ReferenceGrant, 1233 Name: obj.Name, 1234 Namespace: obj.Namespace, 1235 Labels: obj.Labels, 1236 Annotations: obj.Annotations, 1237 ResourceVersion: obj.ResourceVersion, 1238 CreationTimestamp: obj.CreationTimestamp.Time, 1239 OwnerReferences: obj.OwnerReferences, 1240 UID: string(obj.UID), 1241 Generation: obj.Generation, 1242 }, 1243 Spec: &obj.Spec, 1244 } 1245 }, 1246 gvk.RequestAuthentication: func(r runtime.Object) config.Config { 1247 obj := r.(*apiistioioapisecurityv1beta1.RequestAuthentication) 1248 return config.Config{ 1249 Meta: config.Meta{ 1250 GroupVersionKind: gvk.RequestAuthentication, 1251 Name: obj.Name, 1252 Namespace: obj.Namespace, 1253 Labels: obj.Labels, 1254 Annotations: obj.Annotations, 1255 ResourceVersion: obj.ResourceVersion, 1256 CreationTimestamp: obj.CreationTimestamp.Time, 1257 OwnerReferences: obj.OwnerReferences, 1258 UID: string(obj.UID), 1259 Generation: obj.Generation, 1260 }, 1261 Spec: &obj.Spec, 1262 Status: &obj.Status, 1263 } 1264 }, 1265 gvk.Secret: func(r runtime.Object) config.Config { 1266 obj := r.(*k8sioapicorev1.Secret) 1267 return config.Config{ 1268 Meta: config.Meta{ 1269 GroupVersionKind: gvk.Secret, 1270 Name: obj.Name, 1271 Namespace: obj.Namespace, 1272 Labels: obj.Labels, 1273 Annotations: obj.Annotations, 1274 ResourceVersion: obj.ResourceVersion, 1275 CreationTimestamp: obj.CreationTimestamp.Time, 1276 OwnerReferences: obj.OwnerReferences, 1277 UID: string(obj.UID), 1278 Generation: obj.Generation, 1279 }, 1280 Spec: obj, 1281 } 1282 }, 1283 gvk.Service: func(r runtime.Object) config.Config { 1284 obj := r.(*k8sioapicorev1.Service) 1285 return config.Config{ 1286 Meta: config.Meta{ 1287 GroupVersionKind: gvk.Service, 1288 Name: obj.Name, 1289 Namespace: obj.Namespace, 1290 Labels: obj.Labels, 1291 Annotations: obj.Annotations, 1292 ResourceVersion: obj.ResourceVersion, 1293 CreationTimestamp: obj.CreationTimestamp.Time, 1294 OwnerReferences: obj.OwnerReferences, 1295 UID: string(obj.UID), 1296 Generation: obj.Generation, 1297 }, 1298 Spec: &obj.Spec, 1299 } 1300 }, 1301 gvk.ServiceAccount: func(r runtime.Object) config.Config { 1302 obj := r.(*k8sioapicorev1.ServiceAccount) 1303 return config.Config{ 1304 Meta: config.Meta{ 1305 GroupVersionKind: gvk.ServiceAccount, 1306 Name: obj.Name, 1307 Namespace: obj.Namespace, 1308 Labels: obj.Labels, 1309 Annotations: obj.Annotations, 1310 ResourceVersion: obj.ResourceVersion, 1311 CreationTimestamp: obj.CreationTimestamp.Time, 1312 OwnerReferences: obj.OwnerReferences, 1313 UID: string(obj.UID), 1314 Generation: obj.Generation, 1315 }, 1316 Spec: obj, 1317 } 1318 }, 1319 gvk.ServiceEntry: func(r runtime.Object) config.Config { 1320 obj := r.(*apiistioioapinetworkingv1alpha3.ServiceEntry) 1321 return config.Config{ 1322 Meta: config.Meta{ 1323 GroupVersionKind: gvk.ServiceEntry, 1324 Name: obj.Name, 1325 Namespace: obj.Namespace, 1326 Labels: obj.Labels, 1327 Annotations: obj.Annotations, 1328 ResourceVersion: obj.ResourceVersion, 1329 CreationTimestamp: obj.CreationTimestamp.Time, 1330 OwnerReferences: obj.OwnerReferences, 1331 UID: string(obj.UID), 1332 Generation: obj.Generation, 1333 }, 1334 Spec: &obj.Spec, 1335 Status: &obj.Status, 1336 } 1337 }, 1338 gvk.Sidecar: func(r runtime.Object) config.Config { 1339 obj := r.(*apiistioioapinetworkingv1alpha3.Sidecar) 1340 return config.Config{ 1341 Meta: config.Meta{ 1342 GroupVersionKind: gvk.Sidecar, 1343 Name: obj.Name, 1344 Namespace: obj.Namespace, 1345 Labels: obj.Labels, 1346 Annotations: obj.Annotations, 1347 ResourceVersion: obj.ResourceVersion, 1348 CreationTimestamp: obj.CreationTimestamp.Time, 1349 OwnerReferences: obj.OwnerReferences, 1350 UID: string(obj.UID), 1351 Generation: obj.Generation, 1352 }, 1353 Spec: &obj.Spec, 1354 Status: &obj.Status, 1355 } 1356 }, 1357 gvk.StatefulSet: func(r runtime.Object) config.Config { 1358 obj := r.(*k8sioapiappsv1.StatefulSet) 1359 return config.Config{ 1360 Meta: config.Meta{ 1361 GroupVersionKind: gvk.StatefulSet, 1362 Name: obj.Name, 1363 Namespace: obj.Namespace, 1364 Labels: obj.Labels, 1365 Annotations: obj.Annotations, 1366 ResourceVersion: obj.ResourceVersion, 1367 CreationTimestamp: obj.CreationTimestamp.Time, 1368 OwnerReferences: obj.OwnerReferences, 1369 UID: string(obj.UID), 1370 Generation: obj.Generation, 1371 }, 1372 Spec: &obj.Spec, 1373 } 1374 }, 1375 gvk.TCPRoute: func(r runtime.Object) config.Config { 1376 obj := r.(*sigsk8siogatewayapiapisv1alpha2.TCPRoute) 1377 return config.Config{ 1378 Meta: config.Meta{ 1379 GroupVersionKind: gvk.TCPRoute, 1380 Name: obj.Name, 1381 Namespace: obj.Namespace, 1382 Labels: obj.Labels, 1383 Annotations: obj.Annotations, 1384 ResourceVersion: obj.ResourceVersion, 1385 CreationTimestamp: obj.CreationTimestamp.Time, 1386 OwnerReferences: obj.OwnerReferences, 1387 UID: string(obj.UID), 1388 Generation: obj.Generation, 1389 }, 1390 Spec: &obj.Spec, 1391 Status: &obj.Status, 1392 } 1393 }, 1394 gvk.TLSRoute: func(r runtime.Object) config.Config { 1395 obj := r.(*sigsk8siogatewayapiapisv1alpha2.TLSRoute) 1396 return config.Config{ 1397 Meta: config.Meta{ 1398 GroupVersionKind: gvk.TLSRoute, 1399 Name: obj.Name, 1400 Namespace: obj.Namespace, 1401 Labels: obj.Labels, 1402 Annotations: obj.Annotations, 1403 ResourceVersion: obj.ResourceVersion, 1404 CreationTimestamp: obj.CreationTimestamp.Time, 1405 OwnerReferences: obj.OwnerReferences, 1406 UID: string(obj.UID), 1407 Generation: obj.Generation, 1408 }, 1409 Spec: &obj.Spec, 1410 Status: &obj.Status, 1411 } 1412 }, 1413 gvk.Telemetry: func(r runtime.Object) config.Config { 1414 obj := r.(*apiistioioapitelemetryv1alpha1.Telemetry) 1415 return config.Config{ 1416 Meta: config.Meta{ 1417 GroupVersionKind: gvk.Telemetry, 1418 Name: obj.Name, 1419 Namespace: obj.Namespace, 1420 Labels: obj.Labels, 1421 Annotations: obj.Annotations, 1422 ResourceVersion: obj.ResourceVersion, 1423 CreationTimestamp: obj.CreationTimestamp.Time, 1424 OwnerReferences: obj.OwnerReferences, 1425 UID: string(obj.UID), 1426 Generation: obj.Generation, 1427 }, 1428 Spec: &obj.Spec, 1429 Status: &obj.Status, 1430 } 1431 }, 1432 gvk.UDPRoute: func(r runtime.Object) config.Config { 1433 obj := r.(*sigsk8siogatewayapiapisv1alpha2.UDPRoute) 1434 return config.Config{ 1435 Meta: config.Meta{ 1436 GroupVersionKind: gvk.UDPRoute, 1437 Name: obj.Name, 1438 Namespace: obj.Namespace, 1439 Labels: obj.Labels, 1440 Annotations: obj.Annotations, 1441 ResourceVersion: obj.ResourceVersion, 1442 CreationTimestamp: obj.CreationTimestamp.Time, 1443 OwnerReferences: obj.OwnerReferences, 1444 UID: string(obj.UID), 1445 Generation: obj.Generation, 1446 }, 1447 Spec: &obj.Spec, 1448 Status: &obj.Status, 1449 } 1450 }, 1451 gvk.ValidatingWebhookConfiguration: func(r runtime.Object) config.Config { 1452 obj := r.(*k8sioapiadmissionregistrationv1.ValidatingWebhookConfiguration) 1453 return config.Config{ 1454 Meta: config.Meta{ 1455 GroupVersionKind: gvk.ValidatingWebhookConfiguration, 1456 Name: obj.Name, 1457 Namespace: obj.Namespace, 1458 Labels: obj.Labels, 1459 Annotations: obj.Annotations, 1460 ResourceVersion: obj.ResourceVersion, 1461 CreationTimestamp: obj.CreationTimestamp.Time, 1462 OwnerReferences: obj.OwnerReferences, 1463 UID: string(obj.UID), 1464 Generation: obj.Generation, 1465 }, 1466 Spec: obj, 1467 } 1468 }, 1469 gvk.VirtualService: func(r runtime.Object) config.Config { 1470 obj := r.(*apiistioioapinetworkingv1alpha3.VirtualService) 1471 return config.Config{ 1472 Meta: config.Meta{ 1473 GroupVersionKind: gvk.VirtualService, 1474 Name: obj.Name, 1475 Namespace: obj.Namespace, 1476 Labels: obj.Labels, 1477 Annotations: obj.Annotations, 1478 ResourceVersion: obj.ResourceVersion, 1479 CreationTimestamp: obj.CreationTimestamp.Time, 1480 OwnerReferences: obj.OwnerReferences, 1481 UID: string(obj.UID), 1482 Generation: obj.Generation, 1483 }, 1484 Spec: &obj.Spec, 1485 Status: &obj.Status, 1486 } 1487 }, 1488 gvk.WasmPlugin: func(r runtime.Object) config.Config { 1489 obj := r.(*apiistioioapiextensionsv1alpha1.WasmPlugin) 1490 return config.Config{ 1491 Meta: config.Meta{ 1492 GroupVersionKind: gvk.WasmPlugin, 1493 Name: obj.Name, 1494 Namespace: obj.Namespace, 1495 Labels: obj.Labels, 1496 Annotations: obj.Annotations, 1497 ResourceVersion: obj.ResourceVersion, 1498 CreationTimestamp: obj.CreationTimestamp.Time, 1499 OwnerReferences: obj.OwnerReferences, 1500 UID: string(obj.UID), 1501 Generation: obj.Generation, 1502 }, 1503 Spec: &obj.Spec, 1504 Status: &obj.Status, 1505 } 1506 }, 1507 gvk.WorkloadEntry: func(r runtime.Object) config.Config { 1508 obj := r.(*apiistioioapinetworkingv1alpha3.WorkloadEntry) 1509 return config.Config{ 1510 Meta: config.Meta{ 1511 GroupVersionKind: gvk.WorkloadEntry, 1512 Name: obj.Name, 1513 Namespace: obj.Namespace, 1514 Labels: obj.Labels, 1515 Annotations: obj.Annotations, 1516 ResourceVersion: obj.ResourceVersion, 1517 CreationTimestamp: obj.CreationTimestamp.Time, 1518 OwnerReferences: obj.OwnerReferences, 1519 UID: string(obj.UID), 1520 Generation: obj.Generation, 1521 }, 1522 Spec: &obj.Spec, 1523 Status: &obj.Status, 1524 } 1525 }, 1526 gvk.WorkloadGroup: func(r runtime.Object) config.Config { 1527 obj := r.(*apiistioioapinetworkingv1alpha3.WorkloadGroup) 1528 return config.Config{ 1529 Meta: config.Meta{ 1530 GroupVersionKind: gvk.WorkloadGroup, 1531 Name: obj.Name, 1532 Namespace: obj.Namespace, 1533 Labels: obj.Labels, 1534 Annotations: obj.Annotations, 1535 ResourceVersion: obj.ResourceVersion, 1536 CreationTimestamp: obj.CreationTimestamp.Time, 1537 OwnerReferences: obj.OwnerReferences, 1538 UID: string(obj.UID), 1539 Generation: obj.Generation, 1540 }, 1541 Spec: &obj.Spec, 1542 Status: &obj.Status, 1543 } 1544 }, 1545 }