dashboard, cmd/coordinator: sharded ARM trybot-only builders

This is a quick & hacky version of our eventual sharding plan.  Later
we want to run make.bash once, snapshot it, and then intelligently
schedule all the tests out over N machines (starting with the built
snapshot), giving each the next test to run as they become idle.
And then we want to stitch together all of their output.

But this CL just makes 6 ARM builders, each of which runs make.bash (4
minutes) and then each which runs a statically-configured subset of
the tests. Based on measurements, each should run between 8.2 and 10.6
minutes. We can break up some of the larger test cases later into more
shardable pieces (in particular: "test").

Update golang/go#10029

Change-Id: Ib3e008b61ce6f28d799ae298c8467bf62d89e5d4
Reviewed-on: https://go-review.googlesource.com/10056
Reviewed-by: Andrew Gerrand <adg@golang.org>
diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index 52f4f56..bcc6361 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -92,6 +92,12 @@
 		"plan9-386-gcepartial",
 		"nacl-386",
 		"nacl-amd64p32",
+		"linux-arm-shard_test",
+		"linux-arm-shard_std_am",
+		"linux-arm-shard_std_nz",
+		"linux-arm-shard_runtimecpu",
+		"linux-arm-shard_cgotest",
+		"linux-arm-shard_misc",
 	}
 	for _, bname := range tryList {
 		conf, ok := dashboard.Builders[bname]
@@ -935,12 +941,20 @@
 }
 
 func (st *buildStatus) build() (retErr error) {
-	pool, err := poolForConf(st.conf)
+	buildletType := st.conf.BuildletType
+	if buildletType == "" {
+		buildletType = st.conf.Name
+	}
+	bconf, ok := dashboard.Builders[buildletType]
+	if !ok {
+		return fmt.Errorf("invalid BuildletType %q for %q", buildletType, st.conf.Name)
+	}
+	pool, err := poolForConf(bconf)
 	if err != nil {
 		return err
 	}
 	st.logEventTime("get_buildlet")
-	bc, err := pool.GetBuildlet(st.conf.Name, st.rev, st)
+	bc, err := pool.GetBuildlet(buildletType, st.rev, st)
 	if err != nil {
 		return fmt.Errorf("failed to get a buildlet: %v", err)
 	}