Peter Amstutz [Wed, 30 Apr 2014 14:56:04 +0000 (10:56 -0400)]
Unsubscribe message now takes filter definition instead of filter_id, reducing
the state both the client and server have to maintain in order to support
unsubscribing. Added code comments and updated tests.
Peter Amstutz [Wed, 30 Apr 2014 14:53:35 +0000 (10:53 -0400)]
Now supports both websocket integrated (ARVADOS_WEBSOCKETS defined) and
websocket-only (ARVADOS_WEBSOCKETS=ws-only) server modes. Added comment to
application.yml.example about setting websocket_address when running in
websocket-only mode.
Peter Amstutz [Thu, 24 Apr 2014 20:03:21 +0000 (16:03 -0400)]
Websocket tests now use database cleaner instead of ActiveRecord's
transactional fixtures because the transaction needs to commit in order for
NOTIFY/LISTEN to work. Fixed 'log' -> 'logs' table names in eventbus.rb.
First test for publishing an actual database change works.
Peter Amstutz [Thu, 24 Apr 2014 13:14:01 +0000 (09:14 -0400)]
Fixed bug whereby readable_by could return duplicate rows if there is more than
one permission granting the ability to read the row.
Reorganized readable_by query a bit to make it easier to follow.
Added test for ownership and permission links when reading entries in the logs table.
Peter Amstutz [Wed, 23 Apr 2014 14:57:31 +0000 (10:57 -0400)]
- Added object_owner_uuid to logs table, which records the owner of the object
being described at the time of the log entry. Added migration.
- Added special case permission checks for reading logs table, and added
documentation comments on how permission checks work.
- Eventbus reuses readable_by and record_filters in determining what to publish
so provide consistent behavior between eventbus and regular API queries.
- Put most of apply_where_limit_order_params back into application_controller,
refactored record_filters into lib/
Peter Amstutz [Tue, 22 Apr 2014 21:12:12 +0000 (17:12 -0400)]
Refactored load_filters_param and apply_where_limit_order_params into lib/
directory so that EventBus can use them. Started adding filtering to EventBus, this is incomplete.
Properties should not have symbol keys. Our API runs on JSON, which does
not have symbol keys. We want to be consistent in our use of keys, so we
don't use symbol keys within the API server for object properties.
Peter Amstutz [Tue, 22 Apr 2014 19:49:51 +0000 (15:49 -0400)]
Added websocketUrl to discovery document. Workbench websockets testing page
now uses endpoint from discovery discovery document. Also added
ARVADOS_WEBSOCKETS environment variable. If set, server will accept websocket
connections only and do not pass on any other type of requests.
Create a can_login link for a new user object, even if there are already
stray can_login link objects for another user object with the same
e-mail address in the database. Add a test for that scenario, too.
Peter Amstutz [Mon, 21 Apr 2014 20:53:42 +0000 (16:53 -0400)]
Added code to properly initialize EventMachine to deal with Passenger forking.
Added postgres NOTIFY to ArvadosModel#log_change
Added postgres LISTEN to background thread, which posts a message to the websocket.
Notification works!
Tom Clegg [Mon, 21 Apr 2014 16:15:56 +0000 (12:15 -0400)]
Set :null=>false explicitly on timestamp columns.
New versions of Rails do this automatically, but dev instances keep
having edit wars because some of them have never been told to add the
not-null constraint.
Tom Clegg [Sat, 19 Apr 2014 02:18:32 +0000 (22:18 -0400)]
Clean up API schema and method pages.
Fill in missing object descriptions.
Remove redundant updated_at attributes.
Move methods sections from schema pages to method pages.
Remove some unnecessary empty sections.
Remove obsolete Commit and CommitAncestor.
Tom Clegg [Sat, 19 Apr 2014 01:00:31 +0000 (21:00 -0400)]
Accept minimum_script_version, excluded_script_versions, and
find_or_create flag as parameters to create, instead of treating them
as if they were attributes of the Job resource.
Accept find_or_create as a positive flag, rather than no_reuse as a
negative flag.
Behave as requested by the find_or_create flag even if
nondeterministic=true in the submitted job: i.e., a client can use the
find_or_create feature when submitting a job which itself will never
be reused. (It's up to the client to decide whether this is ever
useful.)
For now, both old and new flag names/locations are accepted and
supplied by API server and arv-run-pipeline-instance respectively.