in pkg/firebase/apphostingschema/vpcaccess.go [27:55]
func ValidateVpcAccess(vpcAccess *VpcAccess) error {
if vpcAccess == nil {
return nil
}
if vpcAccess.Egress != "" && !slices.Contains(validEgress, vpcAccess.Egress) {
return fmt.Errorf("egress must be one of %v, got: %q", validEgress, vpcAccess.Egress)
}
if vpcAccess.Connector != "" && !fullyQualifiedConnector.MatchString(vpcAccess.Connector) && !resourceID.MatchString(vpcAccess.Connector) {
return fmt.Errorf("connector must be fully qualified or an ID, got: %q", vpcAccess.Connector)
}
if vpcAccess.Connector == "" && len(vpcAccess.NetworkInterfaces) == 0 {
return fmt.Errorf("one of connector or networkInterfaces must be set")
}
if vpcAccess.Connector != "" && len(vpcAccess.NetworkInterfaces) > 0 {
return fmt.Errorf("connector and networkInterfaces cannot be set at the same time")
}
for _, ni := range vpcAccess.NetworkInterfaces {
if ni.Network == "" && ni.Subnetwork == "" {
return fmt.Errorf("at least one of network or subnetwork is required")
}
if ni.Network != "" && !fullyQualifiedNetwork.MatchString(ni.Network) && !resourceID.MatchString(ni.Network) {
return fmt.Errorf("network must be fully qualified or an ID, got: %q", ni.Network)
}
if ni.Subnetwork != "" && !fullyQualifiedSubnetwork.MatchString(ni.Subnetwork) && !resourceID.MatchString(ni.Subnetwork) {
return fmt.Errorf("subnetwork must be fully qualified or an ID, got: %q", ni.Subnetwork)
}
}
return nil
}