scripts: cros_sdk: Skip chroot download when it exists

Avoid downloading the chroot when creating a chroot and a chroot
already exists.

BUG=None
TEST=./run_tests

Change-Id: I797d96ed65b31723a242b3ec0f2d5deda92267d1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4031931
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Sergey Frolov <sfrolov@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/scripts/cros_sdk.py b/scripts/cros_sdk.py
index d828e2b..b3c9af2 100644
--- a/scripts/cros_sdk.py
+++ b/scripts/cros_sdk.py
@@ -923,8 +923,8 @@
         "--create",
         action="store_true",
         default=False,
-        help="Create the chroot only if it does not already exist.  "
-        "Implies --download.",
+        help="Create the chroot only if it does not already exist. Downloads "
+        "the SDK only if needed, even if --download explicitly passed.",
     )
     group.add_argument(
         "--bootstrap",
@@ -1418,6 +1418,7 @@
         cbuildbot_alerts.PrintBuildbotStepText(sdk_version)
 
     # Based on selections, determine the tarball to fetch.
+    urls = []
     if options.download:
         if options.sdk_url:
             urls = [options.sdk_url]
@@ -1458,10 +1459,6 @@
                 # Wipe and continue.
                 osutils.RmDir(src)
 
-        if options.download:
-            lock.write_lock()
-            sdk_tarball = FetchRemoteTarballs(sdk_cache, urls)
-
         mounted = False
         if options.create:
             lock.write_lock()
@@ -1471,6 +1468,7 @@
             if cros_sdk_lib.IsChrootReady(options.chroot):
                 logging.debug("Chroot already exists.  Skipping creation.")
             else:
+                sdk_tarball = FetchRemoteTarballs(sdk_cache, urls)
                 cros_sdk_lib.CreateChroot(
                     Path(options.chroot),
                     Path(sdk_tarball),
@@ -1479,6 +1477,10 @@
                     chroot_upgrade=options.chroot_upgrade,
                 )
                 mounted = True
+        elif options.download:
+            # Allow downloading only.
+            lock.write_lock()
+            FetchRemoteTarballs(sdk_cache, urls)
 
         if options.enter:
             lock.read_lock()