add GS URL constructors

Yes, this code isn't that complicated, but I think the little bit of
magic that it performs in abstracting away buckets/constant names is
an improvement.

This also adds a simple shim over the SDK info as we want this URL in
the buildbot stages too, so move it to a common location.

BUG=chromium-os:36453
TEST=`buildbot/run_tests` worked
TEST=`cros_sdk --chroot=new` worked

Change-Id: I9450d2359240e1542d9f982c967e1a397590ef85
Reviewed-on: https://gerrit.chromium.org/gerrit/41539
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_sdk.py b/scripts/cros_sdk.py
index 02e49f3..ebeda08 100644
--- a/scripts/cros_sdk.py
+++ b/scripts/cros_sdk.py
@@ -14,14 +14,13 @@
 from chromite.lib import cgroups
 from chromite.lib import commandline
 from chromite.lib import cros_build_lib
-from chromite.lib import gs
 from chromite.lib import locking
 from chromite.lib import osutils
+from chromite.lib import toolchain
 
 cros_build_lib.STRICT_SUDO = True
 
 
-DEFAULT_URL = gs.PUBLIC_BASE_HTTPS_URL + 'chromiumos-sdk'
 COMPRESSION_PREFERENCE = ('xz', 'bz2')
 
 # TODO(zbehan): Remove the dependency on these, reimplement them in python
@@ -37,13 +36,13 @@
 def GetArchStageTarballs(version):
   """Returns the URL for a given arch/version"""
   extension = {'bz2':'tbz2', 'xz':'tar.xz'}
-  return ['%s/cros-sdk-%s.%s'
-          % (DEFAULT_URL, version, extension[compressor])
+  return [toolchain.GetSdkURL(suburl='cros-sdk-%s.%s'
+                              % (version, extension[compressor]))
           for compressor in COMPRESSION_PREFERENCE]
 
 
 def GetStage3Urls(version):
-  return ['%s/stage3-amd64-%s.tar.%s' % (DEFAULT_URL, version, ext)
+  return [toolchain.GetSdkURL(suburl='stage3-amd64-%s.tar.%s' % (version, ext))
           for ext in COMPRESSION_PREFERENCE]
 
 
diff --git a/scripts/upload_prebuilts.py b/scripts/upload_prebuilts.py
index 1da2998..393acfd 100644
--- a/scripts/upload_prebuilts.py
+++ b/scripts/upload_prebuilts.py
@@ -33,6 +33,7 @@
 from chromite.lib import gs
 from chromite.lib import osutils
 from chromite.lib import parallel
+from chromite.lib import toolchain
 
 # How many times to retry uploads.
 _RETRIES = 10
@@ -48,7 +49,6 @@
 _BOARD_PATH = 'chroot/build/%(board)s'
 _REL_BOARD_PATH = 'board/%(target)s/%(version)s'
 _REL_HOST_PATH = 'host/%(host_arch)s/%(target)s/%(version)s'
-_SDK_GS_BUCKET = 'gs://chromiumos-sdk'
 # Private overlays to look at for builds to filter
 # relative to build path
 _PRIVATE_OVERLAY_DIR = 'src/private-overlays'
@@ -403,8 +403,8 @@
     assert prepackaged is not None
 
     version_str = version[len('chroot-'):]
-    remote_tarfile = \
-        '%s/cros-sdk-%s.tar.xz' % (_SDK_GS_BUCKET, version_str)
+    remote_tarfile = toolchain.GetSdkURL(
+        for_gsutil=True, suburl='cros-sdk-%s.tar.xz' % (version_str,))
     # For SDK, also upload the manifest which is guaranteed to exist
     # by the builderstage.
     _GsUpload(prepackaged + '.Manifest', remote_tarfile + '.Manifest',
@@ -415,7 +415,8 @@
     # scripts rely.
     with osutils.TempDirContextManager() as tmpdir:
       pointerfile = os.path.join(tmpdir, 'cros-sdk-latest.conf')
-      remote_pointerfile = '%s/cros-sdk-latest.conf' % _SDK_GS_BUCKET
+      remote_pointerfile = toolchain.GetSdkURL(for_gsutil=True,
+                                               suburl='cros-sdk-latest.conf')
       osutils.WriteFile(pointerfile, 'LATEST_SDK="%s"' % version_str)
       _GsUpload(pointerfile, remote_pointerfile, self._acl)