--- a/lib/python/balrog/submitter/cli.py
+++ b/lib/python/balrog/submitter/cli.py
@@ -38,18 +38,22 @@ class ReleaseCreatorBase(object):
self.auth = auth
self.dummy = dummy
def generate_data(self, appVersion, productName, version, buildNumber,
updateChannels, ftpServer, bouncerServer,
enUSPlatforms, schemaVersion, openURL=None,
**updateKwargs):
assert schemaVersion in (3, 4), 'Unhandled schema version %s' % schemaVersion
+ details_product = productName.lower()
+ if details_product == "devedition":
+ details_product = "firefox"
+
data = {
- 'detailsUrl': getProductDetails(productName.lower(), appVersion),
+ 'detailsUrl': getProductDetails(details_product, appVersion),
'platforms': {},
'fileUrls': {},
'appVersion': appVersion,
'platformVersion': appVersion,
'displayVersion': getPrettyVersion(version)
}
actions = []
@@ -128,37 +132,41 @@ class ReleaseCreatorV3(ReleaseCreatorBas
data["fileUrls"][channel] = '%supdate/%%OS_FTP%%/%%LOCALE%%/%%FILENAME%%' % dir_
else:
url = 'http://%s/?product=%%PRODUCT%%&os=%%OS_BOUNCER%%&lang=%%LOCALE%%' % bouncerServer
data["fileUrls"][channel] = url
return data
def _get_update_data(self, productName, version, partialUpdates):
+ file_prefix = productName.lower()
+ if file_prefix == "devedition":
+ file_prefix = "firefox"
+
data = {
"ftpFilenames": {
"completes": {
- "*": "%s-%s.complete.mar" % (productName.lower(), version),
+ "*": "%s-%s.complete.mar" % (file_prefix, version),
}
},
"bouncerProducts": {
"completes": {
- "*": "%s-%s-complete" % (productName.lower(), version),
+ "*": "%s-%s-complete" % (file_prefix, version),
}
}
}
if partialUpdates:
data["ftpFilenames"]["partials"] = {}
data["bouncerProducts"]["partials"] = {}
for previousVersion, previousInfo in partialUpdates.iteritems():
from_ = get_release_blob_name(productName, previousVersion,
previousInfo["buildNumber"],
self.dummy)
- filename = "%s-%s-%s.partial.mar" % (productName.lower(), previousVersion, version)
+ filename = "%s-%s-%s.partial.mar" % (file_prefix, previousVersion, version)
bouncerProduct = "%s-%s-partial-%s" % (productName.lower(), version, previousVersion)
data["ftpFilenames"]["partials"][from_] = filename
data["bouncerProducts"]["partials"][from_] = bouncerProduct
return data
class ReleaseCreatorV4(ReleaseCreatorBase):
@@ -168,16 +176,20 @@ class ReleaseCreatorV4(ReleaseCreatorBas
# Replaced by _get_fileUrls
def _get_update_data(self, *args, **kwargs):
return None
def _getFileUrls(self, productName, version, buildNumber, updateChannels,
ftpServer, bouncerServer, partialUpdates,
requiresMirrors=True):
data = {"fileUrls": {}}
+ file_prefix = productName.lower()
+ if file_prefix == "devedition":
+ file_prefix = "firefox"
+
# "*" is for the default set of fileUrls, which generally points at
# bouncer. It's helpful to have this to reduce duplication between
# the live channel and the cdntest channel (which eliminates the
# possibility that those two channels serve different contents).
uniqueChannels = ["*"]
for c in updateChannels:
# localtest channels are different than the default because they
@@ -195,17 +207,17 @@ class ReleaseCreatorV4(ReleaseCreatorBas
for channel in uniqueChannels:
data["fileUrls"][channel] = {
"completes": {}
}
if "localtest" in channel:
dir_ = makeCandidatesDir(productName.lower(), version,
buildNumber, server=ftpServer,
protocol='http')
- filename = "%s-%s.complete.mar" % (productName.lower(), version)
+ filename = "%s-%s.complete.mar" % (file_prefix, version)
data["fileUrls"][channel]["completes"]["*"] = "%supdate/%%OS_FTP%%/%%LOCALE%%/%s" % (dir_, filename)
else:
# See comment above about these channels for explanation.
if not requiresMirrors and channel in ("beta", "beta-cdntest", "beta-dev", "beta-dev-cdntest"):
bouncerProduct = "%s-%sbuild%s-complete" % (productName.lower(), version, buildNumber)
else:
if productName.lower() == "fennec":
bouncerProduct = "%s-%s" % (productName.lower(), version)
@@ -222,17 +234,17 @@ class ReleaseCreatorV4(ReleaseCreatorBas
for previousVersion, previousInfo in partialUpdates.iteritems():
from_ = get_release_blob_name(productName, previousVersion,
previousInfo["buildNumber"],
self.dummy)
if "localtest" in channel:
dir_ = makeCandidatesDir(productName.lower(), version,
buildNumber, server=ftpServer,
protocol='http')
- filename = "%s-%s-%s.partial.mar" % (productName.lower(), previousVersion, version)
+ filename = "%s-%s-%s.partial.mar" % (file_prefix, previousVersion, version)
data["fileUrls"][channel]["partials"][from_] = "%supdate/%%OS_FTP%%/%%LOCALE%%/%s" % (dir_, filename)
else:
# See comment above about these channels for explanation.
if not requiresMirrors and channel in ("beta", "beta-cdntest", "beta-dev", "beta-dev-cdntest"):
bouncerProduct = "%s-%sbuild%s-partial-%sbuild%s" % (productName.lower(), version, buildNumber, previousVersion, previousInfo["buildNumber"])
else:
bouncerProduct = "%s-%s-partial-%s" % (productName.lower(), version, previousVersion)
url = 'http://%s/?product=%s&os=%%OS_BOUNCER%%&lang=%%LOCALE%%' % (bouncerServer, bouncerProduct)
@@ -520,9 +532,8 @@ class BlobTweaker(object):
api = Release(name=name, auth=self.auth, api_root=self.api_root)
current_data, data_version = api.get_data()
data = recursive_update(current_data, data)
api.update_release(
product=name.split('-')[0],
hashFunction=data['hashFunction'], releaseData=json.dumps(data),
data_version=data_version,
schemaVersion=current_data['schema_version'])
-