Peter Amstutz [Thu, 1 May 2014 14:06:19 +0000 (10:06 -0400)]
Changed Log.all.each to Log.find_each because Log.all loads all records (!) and
Log.find_each loads records in batches. Hopefully this will enable migration
to run without being killed.
Peter Amstutz [Wed, 30 Apr 2014 20:55:06 +0000 (16:55 -0400)]
Merge branch 'master' of git.clinicalfuture.com:arvados
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
Tim Pierce [Wed, 30 Apr 2014 17:49:08 +0000 (13:49 -0400)]
Replaced KeepVolumes with a VolumeManager interface.
A VolumeManager interface may be used to set policy for writing to a set
of Keep volumes. The sole implementation at present is RRVolumeManager,
which implements simple round-robin scheduling; other implementations
could include a manager which selects the least-loaded disk first, the
fastest one, the one with the fewest pending writes, etc. etc.
Brett Smith [Wed, 30 Apr 2014 17:26:15 +0000 (13:26 -0400)]
api: Introduce reader_tokens for extra access.
reader_tokens are API tokens whose read permissions will be added to
the primary API token's. For actions that only read resources, like
:index and :show, you can now omit the API token as long as you
provide at least one reader_token.
This allows users to get access to one-off resources without
interrupting their primary session. For example, Workbench will use
it to access Collections shared via secret link.
Peter Amstutz [Wed, 30 Apr 2014 15:26:58 +0000 (11:26 -0400)]
Moved message handling out to a separate method for clarity in eventbus.
Fixing name mismatch /websockets => /websocket in configuration
Added guards to various tests to ensure no more messages are processed after
the test is supposed to be done.
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.
Brett Smith [Tue, 29 Apr 2014 20:28:50 +0000 (16:28 -0400)]
api: Make JSON the default response format.
Rails assumes that the request should be sent in HTML unless a format
parameter or the Accept header expressly overrides that. This change
makes JSON the default unless the request specified it would like
HTML.
Brett Smith [Mon, 28 Apr 2014 17:01:18 +0000 (13:01 -0400)]
api: Support filters in API client auths index.
Per comments on Refs #1904. filters is generally the preferred way to
do searching now. I maintained existing limits on what can be
searched with this method.
Brett Smith [Mon, 28 Apr 2014 18:01:53 +0000 (14:01 -0400)]
api: Migrate VM auth scopes to new system.
VirtualMachinesController was the only one doing anything special with
API token scopes before we provided the more general-purpose system.
This commit removes its specialized code, and provides a database
migration to convert those specialized scopes to the general-purpose
schema.
Brett Smith [Tue, 22 Apr 2014 18:44:34 +0000 (14:44 -0400)]
api: Test VM login scopes.
The virtual machine controller is the only one doing anything
interesting with API token scopes right now. I'm writing this test
for that functionality to make sure it stays effective through
refactoring.
Brett Smith [Mon, 28 Apr 2014 15:03:22 +0000 (11:03 -0400)]
api: Shorten name of authorized_keys index.
I had trouble running the new TimestampsNotNull migration, because I
ran into the index name limit described in the migration comments.
Running this migration first worked around the problem for me, and I
hope it saves others from tripping over it too.
Tim Pierce [Thu, 24 Apr 2014 22:02:49 +0000 (18:02 -0400)]
Added -serialize flag.
Added IORequest and IOResponse types for communicating I/O
requests over channels with a goroutine.
New IOHandler method on UnixVolume. IOHandler receives requests on a
command channel, handles them, and delivers responses. Whenever a
UnixVolume is created with a non-nil queue, an IOHandler must be started
to handle its requests.
UnixVolume methods Get and Put now handle external I/O requests. These
methods serialize I/O requests if serialization is enabled for that
volume; otherwise they call Read and Write directly.
New unit tests: TestGetSerialized and TestPutSerialized.
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.