in pkg/cloud/rgraph/testing/ez/factories.go [158:200]
func (f backendServiceFactory) builder(g *Graph, n *Node) rnode.Builder {
id := f.id(g, n)
b := backendservice.NewBuilder(id)
setCommonOptions(n, b)
if b.State() == rnode.NodeExists {
ma := backendservice.NewMutableBackendService(id.ProjectID, id.Key)
err := ma.Access(func(x *compute.BackendService) {
for _, ref := range n.Refs {
switch ref.Field {
case "Backends.Group":
backend := &compute.Backend{
Group: g.ids.selfLink(ref.To),
}
x.Backends = append(x.Backends, backend)
case "Healthchecks":
x.HealthChecks = append(x.HealthChecks, g.ids.selfLink(ref.To))
default:
panicf("invalid Ref Field: %q (must be one of [Backends.Group, HealthChecks])", ref.Field)
}
}
if n.SetupFunc != nil {
sf, ok := n.SetupFunc.(func(x *compute.BackendService))
if !ok {
panicf("invalid type for SetupFunc: %T", n.SetupFunc)
}
sf(x)
}
})
if g.Options&PanicOnAccessErr != 0 && err != nil {
panicf("backendServiceFactory %s: Access: %v", id, err)
}
r, err := ma.Freeze()
if err != nil {
panic(err)
}
err = b.SetResource(r)
if err != nil {
panic(err)
}
}
return b
}