Bug 1255236 - Balrog ReleaseSubmitter should merge partials r=bhearsum draft
authorRail Aliiev <rail@mozilla.com>
Wed, 09 Mar 2016 20:03:18 -0500
changeset 6637 b42cc6c22150a5167a13e6bd5b85486b25e69177
parent 6636 f46262d5ecfc9eef54efaf5a23d1e64ad2abdf2c
push id29
push userbmo:rail@mozilla.com
push dateThu, 10 Mar 2016 01:03:24 +0000
reviewersbhearsum
bugs1255236
Bug 1255236 - Balrog ReleaseSubmitter should merge partials r=bhearsum MozReview-Commit-ID: 58wZ3C8o1JD
lib/python/balrog/submitter/cli.py
lib/python/balrog/submitter/updates.py
--- a/lib/python/balrog/submitter/cli.py
+++ b/lib/python/balrog/submitter/cli.py
@@ -405,23 +405,25 @@ class ReleaseSubmitterBase(object):
             'appVersion': appVersion,
             'platformVersion': extVersion,
             'displayVersion': getPrettyVersion(version)
         }
 
         data.update(self._get_update_data(productName, version, build_number,
                                           **updateKwargs))
 
-        data = json.dumps(data)
         api = SingleLocale(name=name, build_target=build_target, locale=locale,
                            auth=self.auth, api_root=self.api_root)
         schemaVersion = json.dumps(schemaVersion)
+        current_data, data_version = api.get_data()
         api.update_build(
+            data_version=data_version,
             product=productName, hashFunction=hashFunction,
-            buildData=data, schemaVersion=schemaVersion)
+            buildData=json.dumps(merge_partial_updates(current_data, data)),
+            schemaVersion=schemaVersion)
 
 
 class MultipleUpdatesReleaseMixin(object):
     def _get_update_data(self, productName, version, build_number,
                          completeInfo=None, partialInfo=None):
         data = {}
 
         if completeInfo:
--- a/lib/python/balrog/submitter/updates.py
+++ b/lib/python/balrog/submitter/updates.py
@@ -4,17 +4,17 @@ import os
 site.addsitedir(os.path.join(os.path.dirname(__file__), "..", ".."))
 import jsonmerge
 
 
 def merge_partial_updates(base_obj, new_obj):
     """Merges 2 update objects, merging partials and replacing completes"""
     schema = {
         "properties": {
-            # Merge partials using fileUrl as an identifier field
+            # Merge partials using "from" as an identifier field
             "partials": {
                 "mergeStrategy": "arrayMergeById",
                 "mergeOptions": {
                     "idRef": "from"
                 }
             },
             # Replace completes - we don't usually have more than one
             "completes": {