func()

in pkg/cloud/rgraph/testing/ez/factories.go [500:548]


func (f tcpRouteFactory) builder(g *Graph, n *Node) rnode.Builder {
	id := f.id(g, n)
	b := tcproute.NewBuilder(id)
	setCommonOptions(n, b)

	if b.State() == rnode.NodeExists {
		ma := tcproute.NewMutableTcpRoute(id.ProjectID, id.Key)
		err := ma.Access(func(x *networkservices.TcpRoute) {
			for _, ref := range n.Refs {
				switch ref.Field {
				case "Rules.Action.Destinations.ServiceName":
					if len(x.Rules) == 0 || x.Rules[0] == nil {
						trrr := &networkservices.TcpRouteRouteRule{
							Action: &networkservices.TcpRouteRouteAction{},
						}
						x.Rules = []*networkservices.TcpRouteRouteRule{trrr}
					}
					dst := &networkservices.TcpRouteRouteDestination{
						ServiceName: g.ids.legacySelfLink(ref.To),
					}
					x.Rules[0].Action.Destinations = append(x.Rules[0].Action.Destinations, dst)

				default:
					panicf("invalid Ref Field: %q (must be one of [Rules.Destinations.ServiceName])", ref.Field)
				}
			}

			if n.SetupFunc != nil {
				sf, ok := n.SetupFunc.(func(x *networkservices.TcpRoute))
				if !ok {
					panicf("invalid type for SetupFunc: %T", n.SetupFunc)
				}
				sf(x)
			}
		})
		if g.Options&PanicOnAccessErr != 0 && err != nil {
			panicf("tcpRouteFactory %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
}