func resolveDependencies()

in pkg/controller/direct/compute/forwardingrule/forwardingrule_controller.go [547:661]


func resolveDependencies(ctx context.Context, reader client.Reader, obj *krm.ComputeForwardingRule) error {
	// Get network
	if obj.Spec.NetworkRef != nil {
		networkRef, err := ResolveComputeNetwork(ctx, reader, obj, obj.Spec.NetworkRef)
		if err != nil {
			return err

		}
		obj.Spec.NetworkRef.External = networkRef.External
	}

	// Get subnetwork
	if obj.Spec.SubnetworkRef != nil {
		subnetworkRef, err := ResolveComputeSubnetwork(ctx, reader, obj, obj.Spec.SubnetworkRef)
		if err != nil {
			return err

		}
		obj.Spec.SubnetworkRef.External = subnetworkRef.External
	}

	// Get backend service
	if obj.Spec.BackendServiceRef != nil {
		normalizedExternal, err := obj.Spec.BackendServiceRef.NormalizedExternal(ctx, reader, obj.GetNamespace())
		if err != nil {
			return err

		}
		obj.Spec.BackendServiceRef.External = normalizedExternal
	}

	// Get ip address, ip address is optional
	if obj.Spec.IpAddress != nil && obj.Spec.IpAddress.AddressRef != nil {
		computeAddressRef, err := ResolveComputeAddress(ctx, reader, obj, obj.Spec.IpAddress.AddressRef)
		if err != nil {
			return err

		}
		obj.Spec.IpAddress.AddressRef.External = computeAddressRef.External
	}

	// Get target, target is optional
	if obj.Spec.Target != nil {
		// Get target ServiceAttachment
		if obj.Spec.Target.ServiceAttachmentRef != nil {
			serviceAttachmentRef, err := ResolveComputeServiceAttachment(ctx, reader, obj, obj.Spec.Target.ServiceAttachmentRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.ServiceAttachmentRef.External = serviceAttachmentRef.External
		}

		// Get target ComputeTargetGRPCProxyRef
		if obj.Spec.Target.TargetGRPCProxyRef != nil {
			targetGRPCProxyRef, err := ResolveComputeTargetGrpcProxy(ctx, reader, obj, obj.Spec.Target.TargetGRPCProxyRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetGRPCProxyRef.External = targetGRPCProxyRef.External
		}

		// Get target ComputeTargetHTTPProxy
		if obj.Spec.Target.TargetHTTPProxyRef != nil {
			targetHTTPProxyRef, err := ResolveComputeTargetHTTPProxy(ctx, reader, obj, obj.Spec.Target.TargetHTTPProxyRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetHTTPProxyRef.External = targetHTTPProxyRef.External
		}

		// Get target ComputeTargetHTTPSProxy
		if obj.Spec.Target.TargetHTTPSProxyRef != nil {
			targetHTTPSProxyRef, err := ResolveComputeTargetHTTPSProxy(ctx, reader, obj, obj.Spec.Target.TargetHTTPSProxyRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetHTTPSProxyRef.External = targetHTTPSProxyRef.External
		}

		// Get target TargetVPNGateway
		if obj.Spec.Target.TargetVPNGatewayRef != nil {
			targetVPNGatewayRef, err := ResolveComputeTargetVPNGateway(ctx, reader, obj, obj.Spec.Target.TargetVPNGatewayRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetVPNGatewayRef.External = targetVPNGatewayRef.External
		}

		// Get target SSLProxy
		if obj.Spec.Target.TargetSSLProxyRef != nil {
			targetSSLProxyRef, err := ResolveComputeTargetSSLProxy(ctx, reader, obj, obj.Spec.Target.TargetSSLProxyRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetSSLProxyRef.External = targetSSLProxyRef.External
		}

		// Get target TCPProxy
		if obj.Spec.Target.TargetTCPProxyRef != nil {
			targetTCPProxyRef, err := ResolveComputeTargetTCPProxy(ctx, reader, obj, obj.Spec.Target.TargetTCPProxyRef)
			if err != nil {
				return err

			}
			obj.Spec.Target.TargetTCPProxyRef.External = targetTCPProxyRef.External
		}
	}
	return nil
}