Return links for job pagination
Merge pull request #228 from ameade/job-pagi

Return links for job pagination
Job in ERROR can continue if image did not error out.
Merge pull request #229 from esheffield/fix_worker_retry_error_job

Job in ERROR can continue if image did not error out.
Implement exponential timeout backoff
Passing a blank tenant when creating a schedule does not throw an error

Added checks for both whether the key is set in the fixture, as well as if the key exists. There are two unit tests I wrote in test_schedules called test_create_blank_tenant and test_create_no_tenant. Incorporated changes from previous pull request comments.

Fixes rm1003
Use retry count to calc fallback rather than metadata
Merge pull request #231 from rackspace-titan/tenant_blank

Passing a blank tenant when creating a schedule does not throw an error
Merge pull request #230 from esheffield/worker_backoff

Implement exponential timeout backoff
Able to update last_scheduled attribute of a schedule

Added last_scheduled to read-only attributes in api_utils. Changed error message to be something more useful than the default -- displays all of the read-only fields that are attempting to be changed. Included a test case.

Fixes rm1001
Merge pull request #233 from rackspace-titan/tenant_blank

Able to update last_scheduled attribute of a schedule
500 error on schedule create when missing 'tenant' or 'action'

I added another check to catch a request without an action. I also changed the logic a bit, since all of the conditions in the 'create' method of the API aren't really mutually exclusive. For example, if the request has no body, there's no point in checking for anything within the body since it will never be there. Added 2 test cases to complement the ones I wrote earlier on a previous ticket.

Fixes rm1007
Merge pull request #234 from rackspace-titan/blank_action

500 error on schedule create when missing 'tenant' or 'action'
Passing a blank tenant when updating a schedule does not throw an error

Added checks in update method that perform the following:
    1) Look to see if 'tenant' key is set, if it is not set we're good
    2) If 'tenant' key is set, make sure its value is not "" (blank)
    3) If 'tenant' key is set, make sure its value is not "  " (whitespace)

Fixes rm1003
Merge pull request #236 from rackspace-titan/blank_tenant_update

Passing a blank tenant when updating a schedule does not throw an error
Passing blank key when updating a schedule metadata does not throw an error

Added checks for '' and whitespace-only keys and raise appropriate exception for HTTPBadRequest as well as display a user-friendly error. Wrote three test cases.

Fixes rm1002
Merge pull request #237 from rackspace-titan/blank_metadata

Passing blank key when updating a schedule metadata does not throw an er...
Qonos worker should delete schedules when receiving a job for an instance that no longer exists

Added new method that uses qonos_client to delete a schedule. Occurs when _create_image can't find an instance, an instance no longer exists, or the instance has scheduling disabled. Modified mox tests to expect these calls.

Fixes rm721
Merge pull request #243 from jaredculp/qonos_worker_b721

Qonos worker should delete schedules when receiving a job for an instanc...
Validation for invalid next_run value on update

Makes sure that if next_run is manually supplied on schedule update (rather than
separate minute, hour, etc. values) that it is proper ISO 8601. Add validation
for creating a job with next_run value.

Fixes rm889