Update GPU testing docs on machine allocation.

The new machine provider APIs require new steps.

Bug: 822310
Change-Id: I4677328ceaee9532c3557fed1db1bff163ebdbf3
Reviewed-on: https://chromium-review.googlesource.com/c/1395947
Commit-Queue: Jamie Madill <[email protected]>
Reviewed-by: Kenneth Russell <[email protected]>
Cr-Commit-Position: refs/heads/master@{#621139}
diff --git a/docs/gpu/gpu_testing_bot_details.md b/docs/gpu/gpu_testing_bot_details.md
index d36881f1..3327de0 100644
--- a/docs/gpu/gpu_testing_bot_details.md
+++ b/docs/gpu/gpu_testing_bot_details.md
@@ -240,6 +240,41 @@
 
 [Adding new tests to the GPU bots]: https://www.chromium.org/developers/testing/gpu-testing/#TOC-Adding-New-Tests-to-the-GPU-Bots
 
+### How to set up new virtual machine instances
+
+The tests use virtual machines to build binaries and to trigger tests on
+physical hardware. VMs don't run any tests themselves. Nevertheless the OS
+of the VM must match the OS of the physical hardware. Android uses Linux VMs
+for the hosts.
+
+1. If you need a Mac VM:
+
+    1.  File a Chrome Infrastructure Labs ticket requesting 2 virtual machines
+        for the testers. See this [example ticket](http://crbug.com/838975).
+
+1. If you need a non-Mac VM, VMs are allocated using the Machine Provider APIs:
+
+    1.  Create a CL in the [`infradata/config`][infradata/config] (Google
+        internal) workspace which does the following. Git configure your
+        user.email to @google.com if necessary. See
+        [example CL](https://chrome-internal-review.googlesource.com/718221)
+        for relevant Linux sections and
+        [example CL](https://chrome-internal-review.googlesource.com/715834)
+        for Windows.
+    1.  Adds a new "bot_group" block in the Chromium GPU FYI section of
+        [`configs/chromium-swarm/bots.cfg`][bots.cfg]. If setting up a Release/
+        Debug bot pair, you would add two separate bot_group blocks. If
+        setting up a new optional tryserver, for example, you would add one
+        new bot_group block. Copy the closest configuration you can find
+        -- for example, Windows, Android, etc.
+    1.  In [`configs/gce-backend/managers.cfg`][managers.cfg], choose a zone
+        in which to allocate the VMs. Make sure that you choose one with the
+        correct configuration (either gce-trusty or win10) and find a zone
+        which hasn't yet reached its maximum allocation. Increase the
+        maximum_size by the number of VMs being allocated.
+    1.  Get this reviewed and landed. This step associates the VM with the
+        bot's name on the waterfall.
+
 ### How to add a new tester bot to the chromium.gpu.fyi waterfall
 
 When deploying a new GPU configuration, it should be added to the
@@ -274,23 +309,8 @@
         user.email to @google.com if necessary. Here is an [example
         CL](https://chrome-internal-review.googlesource.com/524420).
 
-1.  File a Chrome Infrastructure Labs ticket requesting 2 virtual machines for
-    the testers. These need to match the OS of the physical machines and
-    builders. For example, if you're adding a "Windows 7 CoolNewGPUType" tester,
-    you'll need 2 Windows VMs. See this [example
-    ticket](http://crbug.com/838975).
-
-1.  Once the VMs are ready, create a CL in the
-    [`infradata/config`][infradata/config] (Google internal) workspace which
-    does the following. Git configure your user.email to @google.com if
-    necessary. Here's an [example
-    CL](https://chrome-internal-review.googlesource.com/619497).
-    1.  Adds two new "bot_group" blocks in the Chromium GPU FYI section of
-        [`configs/chromium-swarm/bots.cfg`][bots.cfg], one for the Release bot
-        and one for the Debug bot. Copy the closest configuration you can find
-        -- for example, Windows, Android, etc.
-    1.  Get this reviewed and landed. This step associates the VM with the bot's
-        name on the waterfall.
+1.  Allocate new virtual machines for the bots as described in
+    [How to set up new virtual machine instances].
 
 1.  Create a CL in the Chromium workspace which does the following. Here's an
     [example CL](https://chromium-review.googlesource.com/1041164).
@@ -421,25 +441,10 @@
 trybot for the Win7 NVIDIA GPUs in Release mode. We will call the new bot
 `gpu_manual_try_win7_nvidia_rel`.
 
-1.  File a Chrome Infrastructure Labs ticket requesting ~3 virtual
-    machines. These will do builds and trigger jobs on the physical hardware,
-    and need to match the OS of the physical machines. See this [example
-    ticket](http://crbug.com/839216).
-
-1.  Once the VMs are ready, create a CL in the
-    [`infradata/config`][infradata/config] (Google internal) workspace which
-    does the following. Git configure your user.email to @google.com if
-    necessary. Here's an [example
-    CL](https://chrome-internal-review.googlesource.com/620773).
-    1.  Adds a new "bot_group" block in the "manually-triggered GPU trybots"
-        section of [`configs/chromium-swarm/bots.cfg`][bots.cfg]. Look in the
-        optional GPU tryserver section for the closest configuration you can
-        find to copy from -- for example, Windows, Android,
-        etc. (win_optional_gpu_tests_rel, android_optional_gpu_tests_rel). The
-        "dimensions" tag contains the name of the trybot,
-        e.g. "builder:gpu_manual_try_win7_nvidia_rel".
-    1.  Get this reviewed and landed. This step makes these machines the ones
-        which perform the builds for this new trybot.
+1.  Allocate new virtual machines for the bots as described in
+    [How to set up new virtual machine instances]. The "dimensions" tag in the
+    new bot_group block contains the name of the trybot, e.g.:
+    "builder:gpu_manual_try_win7_nvidia_rel".
 
 1.  Create a CL in the Chromium workspace which does the following. Here's an
     [example CL](https://chromium-review.googlesource.com/1044767).
@@ -532,7 +537,7 @@
         [waterfalls.pyl]. (Note, this is a bad example: the
         "optional" bots have special semantics in this script. You'd probably
         want to define some new category of bot if you didn't intend to add
-        this to `win_optional_gpu_tests_rel`.) 
+        this to `win_optional_gpu_tests_rel`.)
     1.  Re-run the script to regenerate the JSON files.
 1.  Land the above CL.
 1.  Create a CL in the tools/build workspace: