bug 1105485: Fix up submission of release blobs so they can be used for beta builds. r=rail
authorBen Hearsum <bhearsum@mozilla.com>
Tue, 06 Jan 2015 16:14:32 -0500 (2015-01-06)
changeset 3512 8fdc588036c269f37c46d6370aa128d6787ba213
parent 3511 774932288f08f219e30a2dfad2f7f70d228c311a
child 3514 3e1c630025bb35eae194cd4d71e91431957fcb47
push id2733
push userbhearsum@mozilla.com
push dateTue, 06 Jan 2015 21:14:40 +0000 (2015-01-06)
reviewersrail
bugs1105485
bug 1105485: Fix up submission of release blobs so they can be used for beta builds. r=rail
configs/releases/bouncer_firefox_beta.py
configs/releases/bouncer_firefox_esr.py
configs/releases/bouncer_firefox_release.py
configs/releases/bouncer_thunderbird.py
scripts/bouncer_submitter.py
--- a/configs/releases/bouncer_firefox_beta.py
+++ b/configs/releases/bouncer_firefox_beta.py
@@ -79,31 +79,33 @@ config = {
                 "win32": {
                     "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(version)s.complete.mar",
                     "bouncer-platform": "win",
                 },
             },
         },
     },
     "partials": {
-        "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
-        "ssl-only": False,
-        "add-locales": True,
-        "paths": {
-            "linux": {
-                "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux",
-            },
-            "linux64": {
-                "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux64",
-            },
-            "macosx64": {
-                "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "osx",
-            },
-            "win32": {
-                "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "win",
+        "releases-dir": {
+            "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "win",
+                },
             },
         },
     },
 }
--- a/configs/releases/bouncer_firefox_esr.py
+++ b/configs/releases/bouncer_firefox_esr.py
@@ -127,47 +127,49 @@ config = {
                 "solaris-sparc": {
                     "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(version)s.en-US.solaris-sparc.complete.mar",
                     "bouncer-platform": "solaris-sparc",
                 },
             },
         },
     },
     "partials": {
-        "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
-        "ssl-only": False,
-        "add-locales": True,
-        "paths": {
-            "linux": {
-                "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux",
-            },
-            "linux64": {
-                "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux64",
-            },
-            "macosx64": {
-                "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "osx",
-            },
-            "win32": {
-                "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "win",
-            },
-            "opensolaris-i386": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
-                "bouncer-platform": "opensolaris-i386",
-            },
-            "opensolaris-sparc": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
-                "bouncer-platform": "opensolaris-sparc",
-            },
-            "solaris-i386": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
-                "bouncer-platform": "solaris-i386",
-            },
-            "solaris-sparc": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
-                "bouncer-platform": "solaris-sparc",
+        "releases-dir": {
+            "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "win",
+                },
+                "opensolaris-i386": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
+                    "bouncer-platform": "opensolaris-i386",
+                },
+                "opensolaris-sparc": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
+                    "bouncer-platform": "opensolaris-sparc",
+                },
+                "solaris-i386": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
+                    "bouncer-platform": "solaris-i386",
+                },
+                "solaris-sparc": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
+                    "bouncer-platform": "solaris-sparc",
+                },
             },
         },
     },
 }
--- a/configs/releases/bouncer_firefox_release.py
+++ b/configs/releases/bouncer_firefox_release.py
@@ -125,60 +125,108 @@ config = {
                     "bouncer-platform": "solaris-i386",
                 },
                 "solaris-sparc": {
                     "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(version)s.en-US.solaris-sparc.complete.mar",
                     "bouncer-platform": "solaris-sparc",
                 },
             },
         },
+        "complete-mar-candidates": {
+            "product-name": "Firefox-%(version)sbuild%(build_number)s-Complete",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/linux-i686/:lang/firefox-%(version)s.complete.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/linux-x86_64/:lang/firefox-%(version)s.complete.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/mac/:lang/firefox-%(version)s.complete.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/win32/:lang/firefox-%(version)s.complete.mar",
+                    "bouncer-platform": "win",
+                },
+            },
+        },
         "EUballot-installer": {
             "product-name": "Firefox-%(version)s-EUballot",
             "add-locales": False,
             "ssl-only": False,
             "paths": {
                 "win32": {
                     "path": "/firefox/releases/%(version)s/win32-EUballot/:lang/Firefox%%20Setup%%20%(version)s.exe",
                     "bouncer-platform": "win",
                 },
             },
         },
     },
     "partials": {
-        "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
-        "ssl-only": False,
-        "add-locales": True,
-        "paths": {
-            "linux": {
-                "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux",
-            },
-            "linux64": {
-                "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux64",
-            },
-            "macosx64": {
-                "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "osx",
+        "releases-dir": {
+            "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/firefox/releases/%(version)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/firefox/releases/%(version)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/firefox/releases/%(version)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "win",
+                },
+                "opensolaris-i386": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
+                    "bouncer-platform": "opensolaris-i386",
+                },
+                "opensolaris-sparc": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
+                    "bouncer-platform": "opensolaris-sparc",
+                },
+                "solaris-i386": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
+                    "bouncer-platform": "solaris-i386",
+                },
+                "solaris-sparc": {
+                    "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
+                    "bouncer-platform": "solaris-sparc",
+                },
             },
-            "win32": {
-                "path": "/firefox/releases/%(version)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "win",
-            },
-            "opensolaris-i386": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
-                "bouncer-platform": "opensolaris-i386",
-            },
-            "opensolaris-sparc": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
-                "bouncer-platform": "opensolaris-sparc",
-            },
-            "solaris-i386": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
-                "bouncer-platform": "solaris-i386",
-            },
-            "solaris-sparc": {
-                "path": "/firefox/releases/%(version)s/contrib/solaris_tarball/firefox-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
-                "bouncer-platform": "solaris-sparc",
+        },
+        "candidates-dir": {
+            "product-name": "Firefox-%(version)sbuild%(build_number)s-Partial-%(prev_version)s",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/linux-i686/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/linux-x86_64/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/mac/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/firefox/candidates/%(version)s-candidates/build%(build_number)s/update/win32/:lang/firefox-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "win",
+                },
             },
         },
     },
 }
--- a/configs/releases/bouncer_thunderbird.py
+++ b/configs/releases/bouncer_thunderbird.py
@@ -116,47 +116,49 @@ config = {
                 "solaris-sparc": {
                     "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(version)s.en-US.solaris-sparc.complete.mar",
                     "bouncer-platform": "solaris-sparc",
                 },
             },
         },
     },
     "partials": {
-        "product-name": "Thunderbird-%(version)s-Partial-%(prev_version)s",
-        "ssl-only": False,
-        "add-locales": True,
-        "paths": {
-            "linux": {
-                "path": "/thunderbird/releases/%(version)s/update/linux-i686/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux",
-            },
-            "linux64": {
-                "path": "/thunderbird/releases/%(version)s/update/linux-x86_64/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "linux64",
-            },
-            "macosx64": {
-                "path": "/thunderbird/releases/%(version)s/update/mac/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "osx",
-            },
-            "win32": {
-                "path": "/thunderbird/releases/%(version)s/update/win32/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
-                "bouncer-platform": "win",
-            },
-            "opensolaris-i386": {
-                "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
-                "bouncer-platform": "opensolaris-i386",
-            },
-            "opensolaris-sparc": {
-                "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
-                "bouncer-platform": "opensolaris-sparc",
-            },
-            "solaris-i386": {
-                "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
-                "bouncer-platform": "solaris-i386",
-            },
-            "solaris-sparc": {
-                "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
-                "bouncer-platform": "solaris-sparc",
+        "releases-dir": {
+            "product-name": "Thunderbird-%(version)s-Partial-%(prev_version)s",
+            "ssl-only": False,
+            "add-locales": True,
+            "paths": {
+                "linux": {
+                    "path": "/thunderbird/releases/%(version)s/update/linux-i686/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux",
+                },
+                "linux64": {
+                    "path": "/thunderbird/releases/%(version)s/update/linux-x86_64/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "linux64",
+                },
+                "macosx64": {
+                    "path": "/thunderbird/releases/%(version)s/update/mac/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "osx",
+                },
+                "win32": {
+                    "path": "/thunderbird/releases/%(version)s/update/win32/:lang/thunderbird-%(prev_version)s-%(version)s.partial.mar",
+                    "bouncer-platform": "win",
+                },
+                "opensolaris-i386": {
+                    "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.opensolaris-i386.partial.mar",
+                    "bouncer-platform": "opensolaris-i386",
+                },
+                "opensolaris-sparc": {
+                    "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.opensolaris-sparc.partial.mar",
+                    "bouncer-platform": "opensolaris-sparc",
+                },
+                "solaris-i386": {
+                    "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.solaris-i386.partial.mar",
+                    "bouncer-platform": "solaris-i386",
+                },
+                "solaris-sparc": {
+                    "path": "/thunderbird/releases/%(version)s/contrib/solaris_tarball/thunderbird-%(prev_version)s-%(version)s.en-US.solaris-sparc.partial.mar",
+                    "bouncer-platform": "solaris-sparc",
+                },
             },
         },
     },
 }
--- a/scripts/bouncer_submitter.py
+++ b/scripts/bouncer_submitter.py
@@ -27,16 +27,20 @@ class BouncerSubmitter(BaseScript, Purge
             "dest": "version",
             "help": "Current version",
         }],
         [["--previous-version"], {
             "dest": "prev_versions",
             "action": "extend",
             "help": "Previous version(s)",
         }],
+        [["--build-number"], {
+            "dest": "build_number",
+            "help": "Build number of version",
+        }],
         [["--bouncer-api-prefix"], {
             "dest": "bouncer-api-prefix",
             "help": "Bouncer admin API URL prefix",
         }],
         [["--credentials-file"], {
             "dest": "credentials_file",
             "help": "File containing Bouncer credentials",
         }],
@@ -104,51 +108,59 @@ class BouncerSubmitter(BaseScript, Purge
         for line in content.splitlines():
             locale = line.split()[0]
             if locale:
                 locales.append(locale)
         self.locales = locales
         return self.locales
 
     def submit(self):
-        version = self.config["version"]
+        subs = {
+            "version": self.config["version"]
+        }
+        if self.config.get("build_number"):
+            subs["build_number"] = self.config["build_number"]
+
         for product, pr_config in sorted(self.config["products"].items()):
             self.info("Adding %s..." % product)
-            product_name = pr_config["product-name"] % dict(version=version)
+            product_name = pr_config["product-name"] % subs
             self.api_add_product(
                 product_name=product_name,
                 add_locales=pr_config.get("add-locales"),
                 ssl_only=pr_config.get("ssl-only"))
             self.info("Adding paths...")
             for platform, pl_config in sorted(pr_config["paths"].items()):
                 bouncer_platform = pl_config["bouncer-platform"]
-                path = pl_config["path"] % dict(version=version)
+                path = pl_config["path"] % subs
                 self.info("%s (%s): %s" % (platform, bouncer_platform, path))
                 self.api_add_location(product_name, bouncer_platform, path)
 
         # Add partial updates
         if "partials" in self.config and self.config.get("prev_versions"):
             self.submit_partials()
 
     def submit_partials(self):
-        part_config = self.config["partials"]
-        product_name_tmpl = part_config["product-name"]
-        version = self.config["version"]
+        subs = {
+            "version": self.config["version"]
+        }
+        if self.config.get("build_number"):
+            subs["build_number"] = self.config["build_number"]
         prev_versions = self.config.get("prev_versions")
-        for prev_version in prev_versions:
-            product_name = product_name_tmpl % dict(version=version,
-                                                    prev_version=prev_version)
-            self.info("Adding partial updates for %s" % product_name)
-            self.api_add_product(
-                product_name=product_name,
-                add_locales=part_config.get("add-locales"),
-                ssl_only=part_config.get("ssl-only"))
-            for platform, pl_config in sorted(part_config["paths"].items()):
-                bouncer_platform = pl_config["bouncer-platform"]
-                path = pl_config["path"] % dict(version=version,
-                                                prev_version=prev_version)
-                self.info("%s (%s): %s" % (platform, bouncer_platform, path))
-                self.api_add_location(product_name, bouncer_platform, path)
+        for product, part_config in sorted(self.config["partials"].items()):
+            product_name_tmpl = part_config["product-name"]
+            for prev_version in prev_versions:
+                subs["prev_version"] = prev_version
+                product_name = product_name_tmpl % subs
+                self.info("Adding partial updates for %s" % product_name)
+                self.api_add_product(
+                    product_name=product_name,
+                    add_locales=part_config.get("add-locales"),
+                    ssl_only=part_config.get("ssl-only"))
+                for platform, pl_config in sorted(part_config["paths"].items()):
+                    bouncer_platform = pl_config["bouncer-platform"]
+                    path = pl_config["path"] % subs
+                    self.info("%s (%s): %s" % (platform, bouncer_platform, path))
+                    self.api_add_location(product_name, bouncer_platform, path)
 
 
 if __name__ == '__main__':
     myScript = BouncerSubmitter()
     myScript.run_and_exit()