Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug 1310213 - enable scheduled deletions #182

Merged
merged 41 commits into from
Dec 20, 2016
Merged

Bug 1310213 - enable scheduled deletions #182

merged 41 commits into from
Dec 20, 2016

Conversation

NinadBhat
Copy link
Contributor

No description provided.

Copy link
Contributor

@bhearsum bhearsum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to do a bit more testing of this next week, but I wanted to leave some initial feedback.

Overall, things look good, but you need better test coverage. I'm pleased with how little needs to be changed in db.py, but I think there may be one or two other changes needed in insert(), update(), or delete() after you add some additional tests.

@@ -975,13 +976,15 @@ def select(self, where=None, transaction=None, **kwargs):
ret.append(row)
return ret

def insert(self, changed_by, transaction=None, dryrun=False, **columns):
def insert(self, changed_by, transaction=None, dryrun=False, change_type=None, **columns):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, you'll have to look this up in "columns" instead of adding it its own argument. This method overrides a base class one, so the interface needs to be kept the same. You can see a similar example at https://github.com/mozilla/balrog/blob/master/auslib/db.py#L1501. This probably means you don't need to add it to base_columns yourself either.

@@ -834,6 +834,7 @@ def __init__(self, db, dialect, metadata, baseTable, conditions=("time", "uptake
Column("sc_id", Integer, primary_key=True, autoincrement=True),
Column("scheduled_by", String(100), nullable=False),
Column("complete", Boolean, default=False),
Column("change_type", String(50)),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Best to make this nullable=False if we're making decisions on it.

@@ -678,22 +678,22 @@ def setUp(self):
super(TestRuleScheduledChanges, self).setUp()
dbo.rules.scheduled_changes.t.insert().execute(
sc_id=1, scheduled_by="bill", data_version=1, base_rule_id=1, base_priority=100, base_version="3.5", base_buildTarget="d",
base_backgroundRate=100, base_mapping="b", base_update_type="minor", base_data_version=1,
base_backgroundRate=100, base_mapping="b", base_update_type="minor", base_data_version=1, change_type="update",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know it's a pain in the butt, but please add change_type to all of the history tables as well - otherwise this test data is not quite representative of production.

@@ -1109,6 +1113,11 @@ def testEnactChangeExistingRow(self):
self.assertEquals(history_row.data_version, 2)
self.assertEquals(sc_row.complete, True)

def testEnactChangeForDeletingExistingRow(self):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've got a good start on the tests here, but you need to add some to verify that things work correctly when inserting, updating, and deleting scheduled changes. I'm particularly concerned that it might currently be possible to insert a scheduled change that asks for a deletion, but with no primary key defined.

You also need to update testTablesHaveCorrectColumns to check for the new column.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see you've added a few new tests, but it looks like you're still missing one that verifies that creating a new scheduled change that deletes an existing row will work, unless I'm missing something?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on the tests so far. Just one more to add still: something that tests mergeUpdate for a scheduled deletion.

Copy link
Contributor

@bhearsum bhearsum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are making excellent progress on this, and this is pretty close to being mergable.

I still need to do a more in depth review & testing of this, but there's a few things I noticed in the meantime.

if request.json.get("change_type") != "delete":
if request.json and request.json.get("change_type") == "update":
form = ScheduledChangeExistingRuleForm()
elif request.json.get("change_type") == "new":
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: "insert" would be better than "new", since we're naming the other two (update/delete) like database operations.

@@ -1074,7 +1083,12 @@ def enactChange(self, sc_id, enacted_by, transaction=None):

# If the scheduled change had a data version, it means the row already
# exists, and we need to use update() to enact it.
if what["data_version"]:
if change_type == "delete":
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WHERE
base_data_version!=NULL
""")

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How much testing have you done already this? It's very difficult to recover from any mistakes in migration scripts, so I want to be very confident this will work.

@@ -1109,6 +1113,11 @@ def testEnactChangeExistingRow(self):
self.assertEquals(history_row.data_version, 2)
self.assertEquals(sc_row.complete, True)

def testEnactChangeForDeletingExistingRow(self):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see you've added a few new tests, but it looks like you're still missing one that verifies that creating a new scheduled change that deletes an existing row will work, unless I'm missing something?

@@ -674,6 +679,7 @@ def testAllTablesCreated(self):

def testTablesHaveCorrectColumns(self):
sc_columns = [c.name for c in self.sc_table.t.get_children()]
self.assertEquals(len(sc_columns), 9)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great enhancement, thank you!

@@ -978,10 +979,17 @@ def select(self, where=None, transaction=None, **kwargs):
def insert(self, changed_by, transaction=None, dryrun=False, **columns):
base_columns, condition_columns = self._splitColumns(columns)

if base_columns["change_type"] == "delete":
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, at this level you can't assume that "change_type" will be present in columns. It certainly should be in all existing uses of it, but we don't know what will happen in the future. Your best bet is to explicitly check for it before this, and raise a ValueError if it's not present. You can see something similar at https://github.com/mozilla/balrog/blob/37b499a7d0c3d117186e3341eec7e2ea8f6e972d/auslib/db.py#L1501.

UPDATE "rules_scheduled_changes"
SET change_type = "new"
WHERE
base_data_version==NULL
Copy link
Contributor

@bhearsum bhearsum Nov 30, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should probably is "is NULL" and "is not NULL" for these instead, too. This is not valid syntax AFAICT:
balrogadmin_1 | sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"rules_scheduled_changes"\n SET change_type = "new"\n WHERE\n ' at line 1') '\n UPDATE "rules_scheduled_changes"\n SET change_type = "new"\n WHERE\n base_data_version==NULL\n ' ()

SET change_type = "update"
WHERE
base_mapping!=NULL AND
base_data_version==NULL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is base_mapping part of the WHERE clause here? And why do both queries have the same conditions?

Copy link
Contributor

@bhearsum bhearsum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies, but during my hands-on testing of this I realized that the UI actually does need to be included in this pull request, because change_type is now required (and the current UI doesn't send it).

There's a few more comments below about a few edge cases and nits to make things easier to read. It looks to me like this is fully functional though!

if request.json and request.json.get("change_type") == "update":
form = ScheduledChangeExistingRuleForm()
elif request.json.get("change_type") == "insert":
form = ScheduledChangeNewRuleForm()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Careful with this block - if change_type is set to something other than "update" or "insert", this will raise an Exception. You should probably return a 400 in an else block here.

@@ -144,6 +144,7 @@ class ScheduledChangeForm(Form):
telemetry_channel = NullableStringField("Telemetry Channel")
telemetry_uptake = NullableStringField("Telemetry Uptake")
when = IntegerField("When", validators=[Optional(), not_in_the_past()])
change_type = StringField("Change Type")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can change_type be changed when modifying an existing Scheduled Change? If not, this should only be in the forms for new Scheduled Changes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, did you try using a SelectField for this? There's only a few valid values, so it would be good to enforce that. See "update_type" for an example.

class ScheduledChangeDeleteRuleForm(ScheduledChangeForm):
"""
ScheduledChangeDeletionForm includes all the PK columns and ScheduledChangeForm columns
"""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment needs an update - data_version is neither a ScheduledChangeForm column nor a PK.

form = ScheduledChangeExistingRuleForm()
else:
form = ScheduledChangeNewRuleForm()
if request.json.get("change_type") != "delete":
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think change_type need to be a required parameter. The way this is written now, if it's not specified we assume it's a Scheduled Deletion, which seems like a bad assumption to make. You should probably adjust the Form to give it a Required() Validator. This should be easier if change_type is only present in the Forms for new Scheduled Changes.

And a small nit: It would be a bit easier to read this if you used == here, and put update/insert in the else block.

self.baseTable.insert(changed_by, transaction=transaction, dryrun=True, **new_row)
elif new_row.get("change_type") == "delete":
self.baseTable.delete(base_table_where, changed_by, new_row["data_version"], transaction=transaction, dryrun=True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Best to be on the safe side and raise a ValueError in an else block here. If somehow we managed to get a Scheduled Change with an unknown change_type, we definitely don't want it to get into the database.

if pk not in base_columns:
raise ValueError("Missing primary key column %s. PK values needed for deletion" % (pk))
if base_columns[pk] is None:
raise ValueError("%s value found to be None. PK value can not be None for deletion" % (pk))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these checks need to happen in update() as well - we wouldn't want an existing scheduled deletion to have its PK removed. If you can, moving these to validate() is probably the best thing to do.

@@ -1014,7 +1030,7 @@ def update(self, where, what, changed_by, old_data_version, transaction=None, dr
base_columns[base_col] = base_what[base_col]
elif sc_columns.get(col):
base_columns[base_col] = sc_columns[col]

base_columns["change_type"] = sc_columns["change_type"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this necessary? I'm surprised that it doesn't happen as part of the if/elif block above.

I see you're doing it in update/delete/enactChange as well. Can you add a comment explaining why? It looks a bit odd to be copying one specific column after copying a bunch of others in a loop or comprehension.

@@ -1109,6 +1113,11 @@ def testEnactChangeExistingRow(self):
self.assertEquals(history_row.data_version, 2)
self.assertEquals(sc_row.complete, True)

def testEnactChangeForDeletingExistingRow(self):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on the tests so far. Just one more to add still: something that tests mergeUpdate for a scheduled deletion.

WHERE base_data_version is not NULL;
""")
rules_scheduled_changes = Table("rules_scheduled_changes", metadata, autoload=True)
rules_scheduled_changes.c.base_update_type.alter(nullable=True)
Copy link
Contributor

@bhearsum bhearsum Dec 2, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just noticed this is referencing base_update_type while merging this into one my own branches. Shouldn't this be change_type?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope I made base_update_type nullable as deletion does not require input of update_type

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thats why I added testAddScheduledChangeNewRuleWithoutUpdateType to check that for new SC of insertion and update require base_update_type. I guess we discussed this at IRC.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, that's right! Carry on.

@NinadBhat
Copy link
Contributor Author

Delete change UI working now.
The following problems
delete
It does not show product and channel
I tried to pass product and channel as hidden attributes
like https://github.com/mozilla/balrog/blob/master/ui/app/templates/rule_scheduled_change_modal.html#L219
but still got the same result
I think is is because in DB product column is null.

@bhearsum
Copy link
Contributor

bhearsum commented Dec 9, 2016

I suspect the UI issue is because the UI is built based on the scheduled changes table. For deletes, that table has no value for anything except PK and data version. I think it's OK not to worry about fixing this as part of this PR. It actually highlights a more overarching issue with the Scheduled Changes UI -- the fact that it only shows the new version of the data instead of highlight what will change. We should probably fix that more generally.

@bhearsum
Copy link
Contributor

bhearsum commented Dec 9, 2016

Something else I noticed in the UI there - it looks like there's two deletions scheduled for the same Rule? That's not something that should be possible...the second one would always fail.

@bhearsum
Copy link
Contributor

Small issue I just noticed with the UI: it shows the "View" link for mapping, even though mapping is null. Can you fix that up as well?

Copy link
Contributor

@bhearsum bhearsum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great now, let's get it merged!

@bhearsum bhearsum merged commit 65b8d22 into mozilla-releng:master Dec 20, 2016
leonidcliqz added a commit to cliqz/balrog that referenced this pull request Jul 14, 2017
* [balrog-ui] bug 1281912: Rules pagination bad wrapping (mozilla-releng#36). r=bhearsum

* [balrog-ui] Build latest UI.

* Pick up latest UI.

* bug 1248475: Rate changes and rule ids not shown on rule history (fixes mozilla-releng#113). r=bhearsum

* [balrog-ui] Use larger modal for rule duplication (follow-up from bug 1296683).

* Update sample data to include new-style GMP rules and releases. (mozilla-releng#118)

* Pick up latest UI.

* [balrog-ui] Update api proxy port to use the default admin api port.

* [balrog-ui] bug 1246675: UI for Scheduled Rule Changes (mozilla-releng#30). r=nthomas

* Pick up latest version of UI.

* Bug 1299203: Part 1, remove ui submodule

* bug 1246675: Don't allow changes in the past to be scheduled (mozilla-releng#119). r=nthomas

* Bug 1299203: Part 3, Make UI tests run in the docker image

* Add PhantomJS in PATH thanks to node package
* Add testem to node_modules binaries

* Bug 1299213 - Clean up ui/* now that no submodule is used (mozilla-releng#115). r=bhearsum

* bug 1270827: support substitution in DesupportBlob urls (mozilla-releng#122). r=bhearsum

* Switch to more compact form of mock.

* Version bump for next release.

* Add test to ensure that changes cannot be scheduled for the same row at the same time.

* Don't allow multiple scheduled changes for the same PK.

* Bug 1278543: history field view doesn't work on integer columns (mozilla-releng#124). r=bhearsum

* Bug 1041584 - move balrog whitelist checks out of AUSDatabase (mozilla-releng#121). r=bhearsum

* Bug 1303057 - docker-compose up should build ui (mozilla-releng#125). r=bhearsum

* Add LICENSE.

* Add IRC notifications to CI jobs.

* Backout IRC notifications because they broke CI.

* Bug 1112628: disallow deletion of releases that have a rule.mapping or rule.whitelist pointing at them (mozilla-releng#126). r=bhearsum

* Version bump for 2.9

* bug 1270827: support substitution of %OS% in DesupportBlob urls (mozilla-releng#127). r=bhearsum

* bug 1296685: Added an optional attribute "product" to all blob schemas (mozilla-releng#129). r=bhearsum

* bug 1304101: Switch to 2.7-slim docker image. (mozilla-releng#128). r=jlorenzo

* bug 1296685: remove dead attributes from apprelease blobs (mozilla-releng#130). r=bhearsum

* Version bump for 2.10

* bug 1305980: Remove whitelist checks from desupport blobs. (mozilla-releng#133). r=vjoshi

* Version bump for 2.10.1

* Bug 1284481: script to extract "active" data from balrog (mozilla-releng#132). r=bhearsum

* Further reduce releases_history limit in active data extraction query; update sample data.

* Revert sample data because of issues.

* Use /bin/bash instead of run.sh as our ENTRYPOINT to workaround volume mount issues on Windows (mozilla-releng#136). r=bhearsum

* Add .gitattributes file (mozilla-releng#134). r=bhearsum

* bug 1284481: script to extract "active" data from balrog (mozilla-releng#139). r=bhearsum

* Update sample data with a dump from production.

* bug 1304101: Split Dockerfile into dev+prod version (mozilla-releng#131). r=rail,jlorenzo

* Add a horrible hack to greatly reduce CPU usage of balrogui container. (mozilla-releng#140). r=jlorenzo,nthomas

* Copy in requirements files early again (mozilla-releng#141). r=jlorenzo

* bug 1170919: Raise value error of channel not in 'fileUrls' (mozilla-releng#138). r=bhearsum

* bug 1304082: fix issues with change notifier in production (mozilla-releng#142). r=rail

* Use volume mount when running tests in local dev, but not in Taskcluster. (mozilla-releng#147). r=jlorenzo

* bug 1302838: Reinstated Sentry logging (mozilla-releng#144). r=bhearsum

* Version bump for latest release.

* Add run.sh to the prod container.

* Reduce docker container from 776.9MB to 246.6MB (uncompressed) (mozilla-releng#153). r=bhearsum

Each command in a Dockerfile creates a new layer. To keep the final
docker image small build dependencies must be removed in the same
Dockerfile command. Removing data in separate commands does not make
the final image smaller.

This commit uses the above technique for adding and building with pip+gcc
and node+npm dependencies. It also adds a few extra cleanup commands for
files in /root/cache/.pip, /root/.npm and /tmp/phantomjs.

* Bug 1282898: allow multifile updates that point directly to blobs instead of product names (mozilla-releng#145). r=bhearsum

* manage-db: Prevent using socket when connecting to localhost

Mysql client fails when port forwarding is done between docker and host machine.
It also allows port to defined in URI.

* manage-db: Extract common default command

* manage-db: Make port not required

* Add extract command to run.sh (mozilla-releng#154). r=jlorenzo

* Bug 1309660 - add support for backgroundInterval (mozilla-releng#158). r=bhearsum

* Migrate balrog.submitter.api to balrogclient (mozilla-releng#159). r=bhearsum

* Bug 1282891: support fallback mappings when background rate roll fails (mozilla-releng#160). r=bhearsum

* bug 1311730: Gracefully handle missing addons section (mozilla-releng#162). r=rail

* Bump version for next release.

* bug 1301066: autocomplete release name by peeking into blob (mozilla-releng#152). r=bhearsum

* bug 1311705: Add change notifier for scheduled rule changes (mozilla-releng#155) r=nthomas

* bug 1282569: handle requests that don't substitute %PRODUCT%, et. al. (mozilla-releng#161). r=bhearsum

* bug 1311763: Don't dump permissions or permissions history. (mozilla-releng#156). r=nthomas

* Bug 1313732: add fallback mapping to scheduled changes ui (mozilla-releng#164). r=bhearsum

* Version bump for next release.

* Fix db creation when sample data doesn't match current schema version. (mozilla-releng#168). r=rail

* Bump cache control to 90s. (mozilla-releng#170). r=mostlygeek

* bug 1170797: "unhang" release upload screen if no file provided (mozilla-releng#163). r=bhearsum

* bug 1312562: Don't raise exception when fileUrl can't be found for partial update (mozilla-releng#171). r=rail

* Forward SMTP_TLS to balrogadmin to match other env vars

* Separate changing values from unchanged in email notifications

* Add support for conditions to getOrderedRules.

* Support filtering by product when retrieving rules.

* bug 1310218: create User Roles table and web APIs (mozilla-releng#167). r=nthomas,jlorenzo

* bug 1310187: Move Scheduled Changes conditions to their own table (mozilla-releng#165). r=nthomas,jlorenzo

* Version bump for next release.

* Bug 1316929 - temporarily whitelist stage bucket to allow testing of … (mozilla-releng#176)

* Bug 1316929 - temporarily whitelist stage bucket to allow testing of nightlies Tier-2. r=bhearsum, r=Callek

* Backout stage bucket whitelisting from bug 1316929 (mozilla-releng#176) because it is no longer necessary.

* bug 1315335: JSON parse errors should be exposed in New Release UI (mozilla-releng#177). r=bhearsum

* bug 1315365: Add mysql-client so that mysqldump will be available. (mozilla-releng#179). r=mostlygeek

* bug 1287593: Add create-db command to run.sh (mozilla-releng#180). r=bhearsum

* bug 1310187: Make Scheduled Changes conditions configurable (mozilla-releng#151). r=jlorenzo,nthomas

* bug 1279231: move balrog docs into the repo (mozilla-releng#166). r=bhearsum

* Version bump

* Add link to RTD (mozilla-releng#183). r=bhearsum

* bug 1310209: Implement SignoffsTable and web apis for it. (mozilla-releng#181). r=nthomas,jlorenzo

* bug 1170797: "unhang" release upload screen if no file provided (mozilla-releng#186). r=bhearsum

* Link change (mozilla-releng#191). r=bhearsum

* bug 1285975: product/channel filter not updated after adding/editting (mozilla-releng#188). r=bhearsum

* bug 1310188: Use custom column types for JSON columns (mozilla-releng#184). r=nthomas,jlorenzo

* bug 1301067: don't close modals without confirmation when clicking outside of them (mozilla-releng#193). r=bhearsum

* bug 1282841: can't set background rate to 0 for new rules (mozilla-releng#189). r=bhearsum

* Bug 1310213 - enable scheduled deletions (mozilla-releng#182). r=bhearsum

* bug 1310220: Return empty list when user has no roles (mozilla-releng#195). r=bhearsum

* Version bump for next release.

* Build Docker Images in response to Release events.

* Switch to create event for docker images.

* bug 1308067 - Fixed 'DeprecationWarning: Required is going away in WTForms 3.0' warnings (mozilla-releng#197). r=bhearsum

* bug 1315369: pull latest balrogdb from hosted location when rebuilding local db (mozilla-releng#192). r=bhearsum

* bug 1281459: stop eating exceptions (mozilla-releng#194). r=bhearsum

* bug 1310213: Correcting UI and backend for Delete Scheduled change update button (mozilla-releng#198). r=bhearsum

* bug 1312560: handling unparsable versions as BadDataError (mozilla-releng#199). r=bhearsum

* changing Required to InputRequired

* bug 1325460: rule history ui broken by bug 1285975 (mozilla-releng#201). r=ninadbhat

* Version bump for next release.

* Turn off signal registration in Sentry to avoid submitting unwanted exceptions to Sentry.

* Send 400 for BadDataError. (mozilla-releng#202). r=rail

* Version bump for next release. (mozilla-releng#203). r=rail

* Update active data extraction to include new Scheduled Changes tables. (mozilla-releng#204). r=rail

* Bug 1313719 : History view for scheduled rules (mozilla-releng#207). r=bhearsum

* Try new way of enabling release events. (mozilla-releng#209). r=rail,owlish

* bug 1310188: Enable Scheduled Changes for Releases and Permissions (mozilla-releng#196). r=nthomas

* Version bump for next release. (mozilla-releng#212). r=jlorenzo

* Add initial version of contract tests (mozilla-releng#210). r=bhearsum

* bug 1310210: Implement Required Signoffs tables (mozilla-releng#208). r=nthomas,jlorenzo

* bug 1310220: UI for User Roles (mozilla-releng#206). r=bhearsum

* bug 1310217: Make Agent Aware of Release and Permissions Scheduled Changes (mozilla-releng#214). r=bhearsum

* bug 1310214: UI for scheduled changes of Releases (mozilla-releng#205). r=bhearsum

* Update docs with new bug links. (mozilla-releng#216) r=jlorenzo

* Improve text on button for creating new objects with a Scheduled Change. (mozilla-releng#220). r=mtabara

* Configure logging before using it in public.wsgi (mozilla-releng#219) r=bhearsum

* Bug 1308625 - improve active data extraction script to grab referenced partials (mozilla-releng#211). r=bhearsum

* Bug 1308625 : Adding extra arguments to skip dropping and recreating the table again (mozilla-releng#221). r=bhearsum

* Backout bug 1308625 for now, because it's not working well enough yet. (mozilla-releng#222)

* bug 1326074  - Make destrucive buttons more visible (mozilla-releng#224). r=bhearsum

* Bug 1308625 : Preventing same release row data from getting inserted twice in the sql dump file (mozilla-releng#226). r=bhearsum

* bug 1332829: Improve some security related headers on public app (mozilla-releng#228). r=jlorenzo,april

* bug 1321036: verify column attributes (mozilla-releng#215). r=bhearsum

* Bug 1257298 - support a list of values in rules' version field (mozilla-releng#217). r=bhearsum

* Bump version for next release. (mozilla-releng#231)

* Fixed error with multiple changes at one endpoint (mozilla-releng#234). r=bhearsum

* bug 1310214: Ui for scheduled permission (mozilla-releng#225). r=bhearsum

* Bug 1333095 - reset signoffs when a scheduled change is updated (mozilla-releng#229). r=bhearsum

* Bug 1324799 - Able to set priority to 0 for new rules (mozilla-releng#235). r=bhearsum

* Bug 1304375 - no error in UI when release cannot be deleted (mozilla-releng#213). r=bhearsum,aksareen

* Bug 1257298 : Altering rules.version field's length from 10 to 75 (mozilla-releng#233). r=bhearsum

* bug 1302164: add contribute.json (mozilla-releng#237). r=bhearsum

* Bug 1333875 - don't update "scheduled_by" field when merging in update of base table (mozilla-releng#238). r=bhearsum,aksareen

* Bug 1337353: Set HSTS header in balrog responses (mozilla-releng#240). r=bhearsum

* Version bump for next release. (mozilla-releng#241). r=jlorenzo

* bug 1301040: persist drop down filter state on Rules page (mozilla-releng#239). r=bhearsum,aksareen

* Moar docs for rule resolution (mozilla-releng#242). r=bhearsum

* Bug 1337642 - fallbackMapping sidesteps checks on version and buildID increasing  (mozilla-releng#243). r=bhearsum

* Version bump to pick up fix for fallback mappings. (mozilla-releng#244)

* Bug 1325441 - don't allow completed scheduled changes to be modified (mozilla-releng#236). r=bhearsum

* Bug 1310228 - record Signoffs when a change is scheduled if a User holds a Required Role (mozilla-releng#246). r=bhearsum

* Bump Sphinx version to fix docs. (mozilla-releng#247). r=jlorenzo

* Pin Sphinx in requirements.txt (mozilla-releng#248). r=jlorenzo

* Bug 1278539 - refactory history api backend code (mozilla-releng#230). r=bhearsum

* Update .taskcluster.yml with new settings. (mozilla-releng#251). r=rail

* Add SeaMonkey to domain whitelists (mozilla-releng#250). r=bhearsum

* Bug 1333874: mergeUpdate is broken when a base table row updates a value to the same value in the scheduled change (mozilla-releng#245). r=bhearsum

* Version bump for next release. (mozilla-releng#254). r=rail

* Bug 1333876 - scheduled change history sometimes fails to load because of IndexError (mozilla-releng#255). r=bhearsum

* Web APIs for Required Signoffs (mozilla-releng#218). r=nthomas,jlorenzo

* Version bump. (mozilla-releng#258). r=nthomas

* Bug 1304555:Remove Product/Channel filter from Rules history pages (mozilla-releng#259). r=bhearsum,ninadbhat

* Bug 1301051:number fields sometimes steal scroll events, causing unwanted changes to their values (mozilla-releng#260). r=bhearsum,ninadbhat

* Bug 1310303 - teach the Balrog agent how to determine whether or not scheduled changes meet signoff requirements  (mozilla-releng#252). r=bhearsum

* Bug 1310217 - teach the Balrog Agent how to look for and enact Required Signoffs (mozilla-releng#261). r=bhearsum

* bug 1304561: move "view data" button next to other Release buttons (mozilla-releng#262). r=bhearsum

* Update : Best Practices Section in Balrog Docs (mozilla-releng#265)

* bug 1342531: required signoffs are not accurate in scheduled changes in some cases (mozilla-releng#266). r=nthomas,jlorenzo

* bug 1310226: UI for Required Signoffs management (mozilla-releng#253). r=jlorenzo

* Fix drop down after regression in mozilla-releng#259. (mozilla-releng#269). r=jlorenzo

* Bug 1257298 : updating docs (mozilla-releng#271). r=bhearsum

* Bug 1332000 - test that downgrades actually work (mozilla-releng#263). r=bhearsum

* Bug 1329525: Ungrouping of emails (mozilla-releng#256). r=bhearsum

* Don't run any tests on pull_request.assigned. (mozilla-releng#270). r=rail

* bug 1343255: Navbar Menu doesn't work after collapsing for smaller screens in Admin Window (mozilla-releng#272). r=bhearsum

* Fixing Bug:1136164. Case insensitive interpolation of apprelease blobs. (mozilla-releng#273). r=bhearsum,rail

* Version bump for next release. (mozilla-releng#275). r=rail

* Bug 1334133. Possible fix for correct validation of vendors and addons in the GMP and SystemAddons blobs. r=bhearsum,aksareen (mozilla-releng#257)

* bug 1310227: UI for signing off on Scheduled Changes for Rules, Releases, and Permissions (mozilla-releng#268). r=jlorenzo

* Version bump for latest release. (mozilla-releng#279). r=rail

* Bug 1331992: Update the requirement files with working hash values and add dependencies. (mozilla-releng#277) r=bhearsum

* Bug: 1287536. Returning the exceptions from __heartbeat with 502 and a message. r=bhearsum. (mozilla-releng#274).

* Bug 1333571 - Implemented dynamic titles by adding a new service to set the page title (mozilla-releng#278). r=bhearsum

* Adding connexion and its dependencies (mozilla-releng#281). r=bhearsum

* Add a docker tag for git commit (mozilla-releng#283). r=bhearsum

* Remove support for revision in SystemAddon superblobs. (mozilla-releng#285). r=jlorenzo

* Version bump for next release. (mozilla-releng#289)

* Remove update/delete button on completed scheduled changes for the UI (mozilla-releng#292). r=bhearsum,njirap

* Bug 1350970: Disable non-error output from docker containers in local development (mozilla-releng#290). r=bhearsum,njirap

* Add support for creating rule scheduled changes (mozilla-releng#288). r=sfraser

* Bug 1304026: Make the order of enacting changes predictable (mozilla-releng#291). r=bhearsum,njirap

* Updating Connexion to 1.1.6 (mozilla-releng#294). r=bhearsum

* Bug 1261061: Stop using the "dbo" wrapper in db.py (mozilla-releng#295). r=bhearsum,ninad,njirap

* bug 1342331: Disable role granting for users without permissions (mozilla-releng#296). r=bhearsum,njirap

* Bug 1344716: Add health checks to Docker-compose file (mozilla-releng#297). r=bhearsum

* Bug 1312499 - figure out how to match multiple substrings in one rule field (mozilla-releng#280). r=bhearsum

* Version bump for next release. (mozilla-releng#299)

* Backout bug 1304026 due to bustage. (mozilla-releng#300)

* Updating connexion to 1.1.9 (mozilla-releng#298). r=bhearsum

* Bug 1354130: Stop exporting scheduled changes in the production dump. (mozilla-releng#302). r=bhearsum

* Bug 1326046: Move dependencies from tox.ini into requirements-test.txt (mozilla-releng#303). r=bhearsum

* Bug 1342241: Handle errors when adding a new user better (mozilla-releng#306). r=bhearsum

* Bug 1281520: Rip Whitelist Support (mozilla-releng#305). r=bhearsum

* Bug 1334188: show "scheduled by" field in UI when making scheduled changes. (mozilla-releng#307). r=bhearsum

* Install netcat in dev Dockerfile to fix healthchecks. (mozilla-releng#309). r=rail

* bug 1325377: restructure web layers and convert public app to swagger (mozilla-releng#276). r=bhearsum

* Version bump for next release. (mozilla-releng#311)

* Backout conversion of public app to swagger because of increased error rate (mozilla-releng#313). r=rail

* bug 1325377 - reorg of web code and swaggerification of existing public endpoints (mozilla-releng#314). r=bhearsum

* Version bump (mozilla-releng#315)

* Preemptively bump to next release version. (mozilla-releng#316). r=rail

* Bug 1336452 : Migrating /rules , /users and /csrf_token to connexion app (mozilla-releng#312). r=bhearsum

* Bug 1355474: Add a "view data" button for releases scheduled changes (mozilla-releng#304). r=bhearsum

* Bump balrogclient version. (mozilla-releng#318)

* bug 1276289: reenable coveralls (mozilla-releng#310). r=bhearsum

* Devedition changes (mozilla-releng#319)

* Add staging domain when running in staging
* Add Devedition product

* Version bump for next release. (mozilla-releng#322)

* bug 1363058: don't send empty strings for null values when a field's value is removed (mozilla-releng#321). r=bhearsum

* Bug 1336452: migrate all remaining Rules and Users APIs (mozilla-releng#317). r=bhearsum

* bug 1346212: Cannot revert a rule change (mozilla-releng#324). r=bhearsum

* Bump to next version before next release. (mozilla-releng#326)

* bug 1369078: Stop sending data_version and rule_id when duplicating rules (mozilla-releng#328). r=bhearsum

* Version bump after release. (mozilla-releng#329)

* Backout patch that broke /rules/:rule API. (mozilla-releng#331)

* bug 1138418: Adds sanity check for hashLength for gmp blob type (mozilla-releng#325). r=bhearsum

* Update the client to send data over the wire as JSON. (mozilla-releng#332). r=sfraser

* bug 1304026: Implements change enact order predictable (mozilla-releng#335). r=bhearsum

* Always treat data_version as an int (mozilla-releng#337) r=sfraser

* Bug 1336452: migrate all remaining Rules and Users APIs (mozilla-releng#317). r=bhearsum

* bug 1355057: balrog throws ISE 500 instead of 400 when duplicate alias name is present when posting a new Rule. (mozilla-releng#330). r=bhearsum

* Bug 1336452 : Specific users view + Release History Diffs & View API migration (mozilla-releng#323). r=bhearsum

* Bug 1336452 - Release APIs Migration (mozilla-releng#336). r=bhearsum

* bug 1353241: 'View diff' for first revision doesn't work (mozilla-releng#334). r=bhearsum

* Explicity Typecasting all 'data_version' query arguments into integer (mozilla-releng#339). r=bhearsum

* Version bump ahead of next release. (mozilla-releng#341)

* Don't define enums for permission actions. (mozilla-releng#344). r=rail

* bug 1375670: Use full version of current rule when looking up required signoffs for updates (mozilla-releng#343). r=rail

* Bug 1336452: convert Required Signoffs APIs to swagger (mozilla-releng#342). r=bhearsum

* bug 1325377: Public API for Rules & Releases (mozilla-releng#320). r=bhearsum,sfraser,aksareen

* Abstracting count field to a model (mozilla-releng#345). r=bhearsum

* bug 1276289: reenable coveralls (mozilla-releng#327). r=bhearsum

* Bump version before next release.

* Version bump ahead of next release.

* Add support for "memory" to the update ping (mozilla-releng#346). r=nthomas

* Imlemented cliqz related changes to balrog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants