Merge lp://staging/~doanac/qa-dashboard/live-status into lp://staging/~doanac/qa-dashboard/live-status-base

Proposed by Andy Doan
Status: Superseded
Proposed branch: lp://staging/~doanac/qa-dashboard/live-status
Merge into: lp://staging/~doanac/qa-dashboard/live-status-base
Diff against target: 381 lines (+319/-1)
5 files modified
qa_dashboard/settings.py (+5/-0)
requirements.txt (+3/-0)
smokeng/api.py (+119/-0)
smokeng/tests.py (+187/-0)
smokeng/urls.py (+5/-1)
To merge this branch: bzr merge lp://staging/~doanac/qa-dashboard/live-status
Reviewer Review Type Date Requested Status
Joe Talbott (community) Approve
Andy Doan Pending
Review via email: mp+196169@code.staging.launchpad.net

This proposal has been superseded by a proposal from 2013-12-11.

Commit message

Add a REST API to Smoke objects

This gives us the ability to have our jenkins jobs notify the
dashboard in realtime about smoke status and not have to wait
until the job has been pushed to the public server and then
polled by the pull-script.

In addition to a fairly thorough set of unit-tests, I've also
created a pretty easy CLI to do some exploratory testing with:

 http://paste.ubuntu.com/6454113/

That script will probably land in the lp:ubuntu-test-cases/touch repo
in some form or another.

Some notes to keep in mind:

* The API does not allow for delete operations (just to help decrease
  the amount of damage someone might accidentally do).

* It doesn't require auth[entication|orization] for GETS, but
  use's Django users + Tastypie ApiKey for PUT and PATCH operations.

* I had to use two hacks with Tastypie:
  1) 0.9.16 because 0.10 migrations don't work with python 2.7 and
     django 1.5

  2) settings.US_TZ had to be enabled as noted in the settings.py
     due to a tastypie bug.

I'm not really excited about #2, but given the limited use of "writes"
we have in the dashboard, I think this may be fairly safe/isolated.

Description of the change

Add a REST API to Smoke objects

This gives us the ability to have our jenkins jobs notify the
dashboard in realtime about smoke status and not have to wait
until the job has been pushed to the public server and then
polled by the pull-script.

In addition to a fairly thorough set of unit-tests, I've also
created a pretty easy CLI to do some exploratory testing with:

 http://paste.ubuntu.com/6454113/

That script will probably land in the lp:ubuntu-test-cases/touch repo
in some form or another.

Some notes to keep in mind:

* The API does not allow for delete operations (just to help decrease
  the amount of damage someone might accidentally do).

* It doesn't require auth[entication|orization] for GETS, but
  use's Django users + Tastypie ApiKey for PUT and PATCH operations.

* I had to use two hacks with Tastypie:
  1) 0.9.15 because 0.10 migrations don't work with python 2.7 and
     django 1.5

  2) settings.US_TZ had to be enabled as noted in the settings.py
     due to a tastypie bug.

I'm not really excited about #2, but given the limited use of "writes"
we have in the dashboard, I think this may be fairly safe/isolated.

To post a comment you must log in.
Revision history for this message
Andy Doan (doanac) wrote :

wanted to share the branch, but I'd like to try and get one more unit test written to help make sure it plays nicely with the pull-script

Revision history for this message
Andy Doan (doanac) wrote :
Revision history for this message
Andy Doan (doanac) wrote :

tastypie 0.9.15 should be ready, so this can be reviewed now.

Revision history for this message
Andy Doan (doanac) wrote :

here's a branch to give you guys some insight into how i use this API:

 http://bazaar.launchpad.net/~doanac/ubuntu-test-cases/live-status/revision/128

this is all working at home now. The remaining work I need to look at is getting our smoke pull script to handle multiple results from a single job.

Revision history for this message
Paul Larson (pwlars) wrote :

> here's a branch to give you guys some insight into how i use this API:
>
> http://bazaar.launchpad.net/~doanac/ubuntu-test-cases/live-
> status/revision/128
>
> this is all working at home now. The remaining work I need to look at is
> getting our smoke pull script to handle multiple results from a single job.
Really cool! Should we have to care about the pull script though? It should just replace the current result with what it pulls. So if it was in progress before, or even complete before, it's only going to get the "DONE" status for a fully complete job on a pull. At worst, it should be the same as what it has.

Or do you mean that pulling a job that was in a still running state before would be marked as still running?

Revision history for this message
Andy Doan (doanac) wrote :

On 12/06/2013 11:51 AM, Paul Larson wrote:
> Really cool! Should we have to care about the pull script though? It should just replace the current result with what it pulls. So if it was in progress before, or even complete before, it's only going to get the "DONE" status for a fully complete job on a pull. At worst, it should be the same as what it has.
>
> Or do you mean that pulling a job that was in a still running state before would be marked as still running?

The pulls script also learns about all the job artifacts. This is the
key thing we need before marking a result as "COMPLETE".

Revision history for this message
Joe Talbott (joetalbott) wrote :

Only thing I see is the 2012 in the copyright.

Otherwise +1.

review: Approve
693. By Andy Doan

a hack to deal with tastypie bug

setting USE_TZ=True is pain. It causes lots of django warnings and
broke some of our exsiting test case logic. This backs out the
settings change for USE_TZ and monkey-patches the actual buggy spot
in code so that we can use the admin panel properly

694. By Andy Doan

merge with trunk

Unmerged revisions

694. By Andy Doan

merge with trunk

693. By Andy Doan

a hack to deal with tastypie bug

setting USE_TZ=True is pain. It causes lots of django warnings and
broke some of our exsiting test case logic. This backs out the
settings change for USE_TZ and monkey-patches the actual buggy spot
in code so that we can use the admin panel properly

692. By Andy Doan

add unit test for ran_at type checking

NOTE: The fix for this is being merged into trunk, but this branch
already had a nice place to add a unit-test for it. See commit:

 http://bazaar.launchpad.net/~doanac/qa-dashboard/smoke-pull-regression/revision/691

for the fix this test is intended for

691. By Andy Doan

change tastypie requirement 0.9.15

This is whats been packaged. I've tested and it works the same
way.

690. By Andy Doan

Add a REST API to Smoke objects

This gives us the ability to have our jenkins jobs notify the
dashboard in realtime about smoke status and not have to wait
until the job has been pushed to the public server and then
polled by the pull-script.

In addition to a fairly thorough set of unit-tests, I've also
created a pretty easy CLI to do some exploratory testing with:

 http://paste.ubuntu.com/6454113/

That script will probably land in the lp:ubuntu-test-cases/touch repo
in some form or another.

Some notes to keep in mind:

* The API does not allow for delete operations (just to help decrease
  the amount of damage someone might accidentally do).

* It doesn't require auth[entication|orization] for GETS, but
  use's Django users + Tastypie ApiKey for PUT and PATCH operations.

* I had to use two hacks with Tastypie:
  1) 0.9.16 because 0.10 migrations don't work with python 2.7 and
     django 1.5

  2) settings.US_TZ had to be enabled as noted in the settings.py
     due to a tastypie bug.

I'm not really excited about #2, but given the limited use of "writes"
we have in the dashboard, I think this may be fairly safe/isolated.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches

to all changes: