-
Notifications
You must be signed in to change notification settings - Fork 148
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 1336452 : migrate all remaining Rules and Users APIs #317
Bug 1336452 : migrate all remaining Rules and Users APIs #317
Conversation
af1d6d9
to
aafd862
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks pretty good. The update_type issue needs to be fixed, and there's a few minor things in the tests. Great work so far!
priority=73, data_version=0, | ||
product='Firefox', channel='nightly', update_type='minor')) | ||
self.assertEquals(ret.status_code, 400, "Status Code: %d, Data: %s" % (ret.status_code, ret.data)) | ||
ret = self._put('/rules/1', data=dict(backgroundRate=71, mapping='d', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea for a test. This second part can go though - this test is about making sure data_version < 1 throws an error, so there's no point in doing a successful request afterwards.
self.assertEquals(ret2.status_code, 400, "Status Code: %d, Data: %s" % (ret2.status_code, ret2.data)) | ||
|
||
def testPostByAlias(self): | ||
# Make some changes to a rule | ||
ret = self._post('/rules/frodo', data=dict(backgroundRate=71, mapping='d', priority=73, data_version=1, | ||
product='Firefox', channel='nightly')) | ||
product='Firefox', channel='nightly', update_type="minor")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making update_type a required argument for rules that already exist is going to be problematic. We've got tools and scripts that make changes to existing Rules that will break because of this. Is it possible to make update_type required for new rules, but optional for existing ones? Maybe by allowing type to be string or null like you've done or other fields?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah it can easily done. We just have to move required from model definition to response definition to de-couple update_type as required from every rule response
data_version=1, product='Firefox', channel='nightly')) | ||
self.assertEquals(ret.status_code, 400, "Status Code: %d, Data: %s" % (ret.status_code, ret.data)) | ||
ret = self._post('/rules/1', data=dict(backgroundRate=71, mapping='d', priority=73, data_version=1, | ||
product='Firefox', channel='nightly', update_type='major')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need to add an extra post() here - just add update_type to the existing one. Same goes for the other tests where you're doing this. Unless the test is explicitly testing the update_type case, there's no reason to check or verify it.
self.assertEquals(ret.status_code, 200, msg=ret.data) | ||
|
||
def testDeleteRule404(self): | ||
ret = self._delete("/rules/112") | ||
# Missing data_version field | ||
self.assertEquals(ret.status_code, 400) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same thing goes here -- this test's purpose isn't to verify the data_version handling, it's to verify 404 handling, so get rid of the extra delete() and pass data_version in the existing one.
inside of a JSON Object. Returns all rules if 'product' query parameter isn't passed" | ||
summary: Returns filtered list of Rules from Balrog's DB | ||
description: > | ||
Returns filtered list Rules in Balrog’s database inside of a JSON Object. Returns all rules if 'product' query parameter isn't passed. [Docs](http://mozilla-balrog.readthedocs.io/en/latest/admin_api.html#id1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice improvements to the docs here.
auslib/web/admin/views/base.py
Outdated
# using connexion.problem results in TypeError: 'ConnexionResponse' object is not callable | ||
# hence using flask.Response but modifying response's json data into connexion.problem format | ||
# for validation purpose | ||
return problem(400, "Bad Request", "OutDatedError", ext={"exception": msg}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should probably be "OutdatedDataError".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changing it
return Response(status=400, response=json.dumps({"exception": msg}), mimetype="application/json") | ||
# using connexion.problem results in TypeError: 'ConnexionResponse' object is not callable | ||
# hence using flask.Response but modifying response's json data into connexion.problem format | ||
# for validation purpose |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment could be improved. It talks about "using flask.Response", but there's no references to it here. Maybe this should be documented in problem.py instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
alright. moving this comment to problem.py too
from flask import Response | ||
|
||
|
||
def problem(status, title, detail, type=None, instance=None, headers=None, ext=None): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's unfortunate that you need to implement this yourself. What exactly went wrong with using Connexion's problem?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The response error is like this
using connexion.problem results in TypeError: 'ConnexionResponse' object is not callable .
I couldn't debug it since the error was sporadic. It worked for some APIs but surprisingly not for all everytime. I tried to debug it but couldn't in the end. So that's why I decided to re-write the same method. This way it solves my issue for now and in future if we want to re-use connexion.problem all we have to do is simple one line change in the import statement from 'auslib.admin.views.problem" to "connexion.problem" .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very strange. Maybe something to follow-up on if there ends up being extra time in the end. This is certainly fine for now though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright will try to follow up on it in week 13 or during the follow-up weeks
auslib/web/admin/views/rules.py
Outdated
if what.get(i, None): | ||
what[i] = int(what[i]) | ||
# Solves Bug https://bugzilla.mozilla.org/show_bug.cgi?id=1361158 | ||
what.pop("csrf_token", None) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing this!
auslib/web/admin/views/rules.py
Outdated
|
||
what = dict() | ||
# We need to be able to support changing AND removing parts of a rule, | ||
# and because of how Flask's request object and WTForm's defaults work | ||
# this gets a little hary. | ||
for k, v in form.data.iteritems(): | ||
for k, v in edit_rule_dict.iteritems(): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you can get rid of this entire block if you pop data_version like you're doing above for csrf_token. Now that the request.json/request.form handling is gone, the only thing this block does is filter out data_version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh yeah. didn't see the optimization
321b4d7
to
7ee41c3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really great work here. One minor issue with a couple of descriptions below, and a couple of questions. This looks nearly ready to land though.
auslib/web/admin/swagger/api.yaml
Outdated
get: | ||
summary: Returns previous versions of the rule. | ||
description: > | ||
Returns previous versions of the rule identified by the id or alias given in a JSON Object. [Docs](http://mozilla-balrog.readthedocs.io/en/latest/admin_api.html#id4) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you forget to update these descriptions :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh yeah. Updating it.
description: Returns JSON object of list of rules with their count | ||
schema: | ||
type: object | ||
allOf: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just making sure I understand this correctly: RulesListGET and HistoryModel combine to form the full schema?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
auslib/web/admin/swagger/api.yaml
Outdated
properties: | ||
data_version: | ||
description: the version number of user role | ||
type: ["integer", "string"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason string is allowed here, and for rule_id further down?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same issue that occurred with all other integer fields such as priority and backgroundRate. The rule_id is passed into request body when duplicate existing rule form submits data.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, OK. Can you make sure there's a bug on file for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
94700c7
to
61d0209
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this will fix https://bugzilla.mozilla.org/show_bug.cgi?id=1367298, which is great! The only non-trivial concerns here are the two comments about the "parameters" section. Looks good otherwise.
def testPutDataVersionLessThanOne(self): | ||
# Throw 400 error when data_version is less than 1. | ||
ret = self._put('/rules/1', data=dict(backgroundRate=71, mapping='d', | ||
priority=73, data_version=1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't data version be zero here? Or is this test misnamed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
input value data_version is incorrect. Changing it to 0
auslib/web/admin/base.py
Outdated
app.add_url_rule("/rules/columns/<column>", view_func=SingleRuleColumnView.as_view("rule_columns")) | ||
# ...but anything to do with history must be done by id, beacuse alias may change over time | ||
app.add_url_rule("/rules/<int:rule_id>/revisions", view_func=RuleHistoryAPIView.as_view("rules_revisions")) | ||
# ...but anything to do with history must be done by id, because alias may change over time |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment no longer applies here, please remove it.
auslib/web/admin/swagger/api.yaml
Outdated
maxLength: 50 | ||
required: true | ||
|
||
rule_id_Or_alias_param: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: "Or" should probably be all lower case.
description: "Find out more about Releases" | ||
url: "http://mozilla-balrog.readthedocs.io/en/latest/database.html#releases" | ||
|
||
parameters: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the difference between this and the "definitions" section? I'm also a bit confused as to why only a few things are in here. Eg: why aren't product and channel defined here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a parameters definition object defined by swagger. Link. Any parameter that can be reused across multiple APIs can be defined here and used globally. However, if a query parameter like 'product' that is only used in GET /rules need not be defined globally
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So if "product" ends up getting used across multiple endpoints it should be moved to this section?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it does get used multiple times and if we can use the same "description" so as not to confuse the clients then yes. Same can be done for responses too
|
||
roleParam: | ||
name: role | ||
in: path |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems a little bit strange to have "in" and "required" defined outside of a specific endpoint/operation. For example, role is in the path when granting/revoking a role, but in the body when doing signoffs. It it possible to define these parts in the endpoint, and the other parts here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
body parameters are defined in the definitions section as data models. Path and query parameters are defined in the parameters section. This format is defined by swagger. I created roleParam specifically to prevent defining it redundantly multiple times in the multiple user api's request section. For signoffs, I'll probably define a new model or extend existing one when I start working on that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens if we have a parameter that is in the path for one endpoint, and in the query for another? And are you sure that body parameters aren't supported here? http://swagger.io/specification/#parameterObject seems to say that "body" is allowed as a value for "in".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we have a parameter that is in the path for one endpoint, and in the query for another, then in that particular case separate definitions are needed where in first
in: path
is defined and second
in: query
will be required so that swagger can differentiate between those two parameters having only the same names. The request json is supported and validated via the 'body' parameter only. Inside the body parameter we define a schema (either as standalone or a collection or hierarchy of models). This schema validates the parameters only in the request.json
application/json: | ||
detail: "No permission found for username" | ||
status: 404 | ||
'403': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure this is a valid response? As far as I know we have no restrictions around who can view permissions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's getting raised on this line
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, mea culpa!
auslib/web/admin/swagger/api.yaml
Outdated
detail: Requested rule does not exist | ||
status: 404 | ||
'400': | ||
description: "Bad Request's Response" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about something like "Error in form data" for the 400s?
additionalProperties: | ||
type: array | ||
maxProperties: 2 | ||
minProperties: 2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clever solution here!
items: | ||
type: string | ||
enum: ["enact"] | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It must've been a pain to fully implement all of these permissions schemas, very good work though!
268cdfa
to
01fd2e8
Compare
@mozbhearsum . Addressed the above comments in this commit . Commits on top of it will now cover the final users/ api i.e. specific permissions view |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found one small bug with fallbackMapping, but otherwise this is ready to go.
auslib/web/admin/views/rules.py
Outdated
what, mapping_values = process_rule_form(connexion.request.json) | ||
|
||
if what.get('mapping', None) is not None and len(mapping_values) != 1: | ||
return problem(400, 'Bad Request', 'Invalid mapping value. No release name found in DB') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you check fallbackMapping here, too?
…client tools support it.
* [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
PR to migrate the remaining /rules/* and /users/* APIs