[ARVADOS] updated: 7a76d3b2fc40c41e2d028daa0ee150b47421f0c5

Git user git at public.curoverse.com
Tue Nov 29 09:09:36 EST 2016


Summary of changes:
 .gitignore                                         |   3 +
 COPYING                                            |  14 +-
 .../app/assets/javascripts/work_unit_component.js  |  18 +
 .../app/controllers/application_controller.rb      |  56 ++-
 .../app/controllers/collections_controller.rb      |  13 +-
 .../app/controllers/projects_controller.rb         |  23 +-
 .../controllers/work_unit_templates_controller.rb  |   6 +-
 .../app/controllers/work_units_controller.rb       |  66 ++-
 apps/workbench/app/helpers/application_helper.rb   |   6 +-
 apps/workbench/app/models/arvados_base.rb          |   6 +-
 apps/workbench/app/models/container.rb             |   2 +-
 apps/workbench/app/models/container_request.rb     |   2 +-
 apps/workbench/app/models/container_work_unit.rb   |   6 +-
 apps/workbench/app/models/job.rb                   |   2 +-
 apps/workbench/app/models/job_task.rb              |   2 +-
 apps/workbench/app/models/pipeline_instance.rb     |   2 +-
 .../app/models/pipeline_instance_work_unit.rb      |   4 +-
 apps/workbench/app/models/proxy_work_unit.rb       |  34 +-
 apps/workbench/app/models/work_unit.rb             |  12 +-
 .../pipeline_instances/_show_components.html.erb   |   2 +-
 .../app/views/projects/_show_workflows.html.erb    |   5 +
 .../views/work_units/_component_detail.html.erb    |  39 +-
 .../app/views/work_units/_show_child.html.erb      |  29 +-
 .../app/views/work_units/_show_component.html.erb  |  21 +-
 .../app/views/work_units/_show_log_link.html.erb   |  14 +
 .../app/views/work_units/_show_status.html.erb     |   2 +-
 apps/workbench/config/routes.rb                    |   4 +-
 .../test/controllers/disabled_api_test.rb          |  63 +++
 apps/workbench/test/diagnostics/pipeline_test.rb   |   2 +-
 apps/workbench/test/diagnostics_test_helper.rb     |   7 +-
 apps/workbench/test/integration/jobs_test.rb       |   2 +-
 .../test/integration/pipeline_instances_test.rb    |  13 +-
 apps/workbench/test/integration/work_units_test.rb |  25 ++
 apps/workbench/test/unit/disabled_api_test.rb      |  15 +
 apps/workbench/test/unit/work_unit_test.rb         |  26 --
 build/go-python-package-scripts/postinst           |  64 ++-
 build/go-python-package-scripts/prerm              |  37 +-
 .../test-package-python-arvados-cwl-runner.sh      |   1 +
 .../test-package-python-arvados-fuse.sh            |   1 +
 .../test-package-python-arvados-python-client.sh   |   1 +
 ...t-package-python27-python-arvados-cwl-runner.sh |   6 +
 ...ackage-python27-python-arvados-python-client.sh |   2 +-
 build/run-build-docker-images.sh                   |   2 +-
 build/run-build-docker-jobs-image.sh               |  69 ++-
 build/run-build-packages.sh                        |  12 +-
 build/run-library.sh                               |  12 +-
 build/run-tests.sh                                 |   8 +-
 crunch_scripts/cwl-runner                          |  23 +-
 doc/_config.yml                                    |  83 ++--
 .../_container_runtime_constraints.liquid          |   1 +
 doc/_includes/_crunch1only_begin.liquid            |   2 +
 doc/_includes/_crunch1only_end.liquid              |   1 +
 doc/_includes/_install_docker_cleaner.liquid       |  35 +-
 doc/_includes/_notebox_begin_warning.liquid        |   2 +
 doc/_includes/_pipeline_deprecation_notice.liquid  |   2 +-
 doc/_layouts/default.html.liquid                   |   2 +-
 doc/api/authentication.html.textile.liquid         |  40 --
 doc/api/crunch-scripts.html.textile.liquid         |   5 +-
 doc/api/execution.html.textile.liquid              |  27 ++
 doc/api/index.html.textile.liquid                  |  44 +-
 doc/api/methods.html.textile.liquid                | 120 ++---
 .../api_client_authorizations.html.textile.liquid  |  54 ++-
 doc/api/methods/api_clients.html.textile.liquid    |  40 +-
 .../methods/authorized_keys.html.textile.liquid    |  43 +-
 doc/api/methods/collections.html.textile.liquid    |  55 ++-
 .../methods/container_requests.html.textile.liquid | 100 ++++-
 doc/api/methods/containers.html.textile.liquid     |  76 +++-
 doc/api/methods/groups.html.textile.liquid         |  47 +-
 doc/api/methods/humans.html.textile.liquid         |  39 +-
 doc/api/methods/job_tasks.html.textile.liquid      |  55 ++-
 doc/api/methods/jobs.html.textile.liquid           | 101 ++++-
 doc/api/methods/keep_disks.html.textile.liquid     |  52 ++-
 doc/api/methods/keep_services.html.textile.liquid  |  52 ++-
 doc/api/methods/links.html.textile.liquid          |  69 ++-
 doc/api/methods/logs.html.textile.liquid           |  49 +-
 doc/api/methods/nodes.html.textile.liquid          |  50 ++-
 .../methods/pipeline_instances.html.textile.liquid |  44 +-
 .../methods/pipeline_templates.html.textile.liquid | 182 +++++++-
 doc/api/methods/repositories.html.textile.liquid   |  45 +-
 doc/api/methods/specimens.html.textile.liquid      |  41 +-
 doc/api/methods/traits.html.textile.liquid         |  40 +-
 doc/api/methods/users.html.textile.liquid          |  67 +--
 .../methods/virtual_machines.html.textile.liquid   |  52 ++-
 doc/api/methods/workflows.html.textile.liquid      |  44 +-
 doc/api/permission-model.html.textile.liquid       | 143 ++----
 doc/api/requests.html.textile.liquid               | 349 +++++++++++++++
 doc/api/resources.html.textile.liquid              |  46 +-
 doc/api/schema/ApiClient.html.textile.liquid       |  24 -
 .../ApiClientAuthorization.html.textile.liquid     |  29 --
 doc/api/schema/AuthorizedKey.html.textile.liquid   |  24 -
 doc/api/schema/Collection.html.textile.liquid      |  39 --
 doc/api/schema/Container.html.textile.liquid       |  59 ---
 .../schema/ContainerRequest.html.textile.liquid    |  70 ---
 doc/api/schema/Group.html.textile.liquid           |  25 --
 doc/api/schema/Human.html.textile.liquid           |  19 -
 doc/api/schema/Job.html.textile.liquid             |  69 ---
 doc/api/schema/JobTask.html.textile.liquid         |  47 --
 doc/api/schema/KeepDisk.html.textile.liquid        |  31 --
 doc/api/schema/KeepService.html.textile.liquid     |  24 -
 doc/api/schema/Link.html.textile.liquid            |  83 ----
 doc/api/schema/Log.html.textile.liquid             |  33 --
 doc/api/schema/Node.html.textile.liquid            |  28 --
 .../schema/PipelineInstance.html.textile.liquid    |  26 --
 .../schema/PipelineTemplate.html.textile.liquid    | 161 -------
 doc/api/schema/Repository.html.textile.liquid      |  25 --
 doc/api/schema/Specimen.html.textile.liquid        |  22 -
 doc/api/schema/Trait.html.textile.liquid           |  22 -
 doc/api/schema/User.html.textile.liquid            |  30 --
 doc/api/schema/VirtualMachine.html.textile.liquid  |  21 -
 doc/api/schema/Workflow.html.textile.liquid        |  23 -
 doc/api/storage.html.textile.liquid                | 170 +++++++
 doc/api/tokens.html.textile.liquid                 |  63 +++
 doc/images/Arvados_Permissions.svg                 |   4 +
 doc/images/Crunch_dispatch.svg                     |   4 +
 doc/images/Keep_manifests.svg                      |   4 +
 doc/images/Keep_reading_writing_block.svg          |   4 +
 doc/images/Keep_rendezvous_hashing.svg             |   4 +
 doc/images/Session_Establishment.svg               |   4 +
 .../install-prerequisites.html.textile.liquid      |   4 +-
 .../install-arv-git-httpd.html.textile.liquid      |  52 +--
 doc/install/install-keep-web.html.textile.liquid   |   2 +-
 doc/install/install-keepproxy.html.textile.liquid  |   2 +-
 doc/sdk/cli/install.html.textile.liquid            |   1 -
 doc/sdk/go/example.html.textile.liquid             |  76 ++++
 doc/sdk/go/index.html.textile.liquid               |  15 +-
 doc/sdk/index.html.textile.liquid                  |  13 +-
 doc/sdk/java/example.html.textile.liquid           |  78 ++++
 doc/sdk/java/index.html.textile.liquid             |  11 +-
 doc/sdk/perl/example.html.textile.liquid           |  81 ++++
 doc/sdk/perl/index.html.textile.liquid             |  59 +--
 doc/sdk/python/events.html.textile.liquid          |   2 +-
 doc/sdk/python/example.html.textile.liquid         |  51 +++
 doc/sdk/python/sdk-python.html.textile.liquid      |   3 +-
 doc/sdk/ruby/example.html.textile.liquid           |  75 ++++
 doc/sdk/ruby/index.html.textile.liquid             |  74 +---
 doc/user/cwl/cwl-runner.html.textile.liquid        |   9 +-
 .../reference/job-pipeline-ref.html.textile.liquid |   2 +-
 doc/user/topics/arv-run.html.textile.liquid        |   4 +
 ...nning-pipeline-command-line.html.textile.liquid |   4 +
 .../running-external-program.html.textile.liquid   |   4 +-
 ...tutorial-pipeline-workbench.html.textile.liquid |   4 +
 .../tutorial-submit-job.html.textile.liquid        |   4 +-
 docker/jobs/Dockerfile                             |  12 +-
 sdk/cli/bin/arv-run-pipeline-instance              |  33 +-
 sdk/cli/bin/crunch-job                             |   8 +-
 sdk/cwl/arvados_cwl/__init__.py                    | 237 +++++++---
 sdk/cwl/arvados_cwl/arvcontainer.py                |  49 +-
 sdk/cwl/arvados_cwl/arvdocker.py                   |  40 +-
 sdk/cwl/arvados_cwl/arvjob.py                      | 125 ++++--
 sdk/cwl/arvados_cwl/arvworkflow.py                 |  14 +-
 sdk/cwl/arvados_cwl/crunch_script.py               | 109 +++++
 sdk/cwl/arvados_cwl/pathmapper.py                  |  45 +-
 sdk/cwl/arvados_cwl/runner.py                      |  79 ++--
 sdk/cwl/gittaggers.py                              |  38 +-
 sdk/cwl/setup.py                                   |  17 +-
 sdk/cwl/test_with_arvbox.sh                        |  19 +-
 sdk/cwl/tests/hw.py                                |   1 +
 sdk/cwl/tests/mock_discovery.py                    |  13 +
 sdk/cwl/tests/test_container.py                    | 121 ++---
 sdk/cwl/tests/test_job.py                          | 254 ++++++-----
 sdk/cwl/tests/test_make_output.py                  |  33 +-
 sdk/cwl/tests/test_pathmapper.py                   |  96 ++++
 sdk/cwl/tests/test_submit.py                       | 360 ++++++++++++---
 sdk/go/arvados/container.go                        |  39 +-
 sdk/go/arvados/duration.go                         |   5 +
 sdk/go/streamer/streamer.go                        |  30 +-
 sdk/go/streamer/streamer_test.go                   |  10 +
 sdk/python/arvados/arvfile.py                      |  86 ++--
 sdk/python/arvados/commands/put.py                 |   7 +-
 sdk/python/arvados/events.py                       |  77 ++--
 sdk/python/tests/run_test_server.py                |   3 +-
 sdk/python/tests/test_collections.py               |  15 +-
 services/api/Gemfile                               |   4 +-
 services/api/Gemfile.lock                          |  15 +-
 .../api/app/controllers/application_controller.rb  |  14 +-
 .../arvados/v1/collections_controller.rb           |   6 +-
 .../arvados/v1/container_requests_controller.rb    |   1 +
 .../arvados/v1/containers_controller.rb            |  18 +
 .../controllers/arvados/v1/groups_controller.rb    |  13 +
 .../controllers/arvados/v1/schema_controller.rb    |  26 +-
 .../arvados/v1/user_agreements_controller.rb       |   3 +-
 .../app/controllers/arvados/v1/users_controller.rb |   2 +-
 .../arvados/v1/virtual_machines_controller.rb      |   2 +-
 .../api/app/controllers/database_controller.rb     |   2 +-
 .../app/controllers/user_sessions_controller.rb    |   3 +
 services/api/app/models/arvados_model.rb           |   2 +-
 services/api/app/models/collection.rb              |   2 +-
 services/api/app/models/container.rb               |  67 ++-
 services/api/app/models/container_request.rb       |  63 ++-
 services/api/app/models/log.rb                     |   2 +-
 services/api/app/models/node.rb                    |  30 +-
 services/api/app/models/user.rb                    |  36 +-
 services/api/config/application.default.yml        |   8 +
 .../api/config/initializers/preload_all_models.rb  |   2 +-
 services/api/config/routes.rb                      |   1 +
 ...71346_add_use_existing_to_container_requests.rb |   9 +
 ...43147_add_scheduling_parameters_to_container.rb |   6 +
 ...add_output_and_log_uuid_to_container_request.rb |  22 +
 ..._log_uuids_to_container_request_search_index.rb |  21 +
 services/api/db/structure.sql                      |  21 +-
 services/api/lib/crunch_dispatch.rb                |   8 +-
 services/api/lib/josh_id.rb                        |   1 +
 services/api/lib/salvage_collection.rb             |   2 +-
 services/api/test/factories/user.rb                |   2 +-
 .../test/fixtures/api_client_authorizations.yml    |  14 +
 services/api/test/fixtures/collections.yml         |  30 +-
 services/api/test/fixtures/containers.yml          |   4 +-
 services/api/test/fixtures/nodes.yml               |   6 +-
 .../api_client_authorizations_controller_test.rb   |   2 +-
 .../arvados/v1/collections_controller_test.rb      |  43 ++
 .../v1/container_requests_controller_test.rb       |  22 +
 .../arvados/v1/containers_controller_test.rb       |  19 +
 .../api/test/functional/arvados/v1/filters_test.rb |   6 +-
 .../functional/arvados/v1/jobs_controller_test.rb  |  13 +
 .../arvados/v1/repositories_controller_test.rb     |  13 +-
 .../arvados/v1/schema_controller_test.rb           |  21 +-
 .../functional/arvados/v1/users_controller_test.rb |   4 +-
 .../arvados/v1/virtual_machines_controller_test.rb |   1 -
 services/api/test/helpers/users_test_helper.rb     |   2 +-
 .../api/test/integration/collections_api_test.rb   |  14 +-
 services/api/test/integration/cross_origin_test.rb |   2 +-
 .../api/test/integration/user_sessions_test.rb     |  23 +-
 services/api/test/integration/websocket_test.rb    |  19 +-
 services/api/test/test_helper.rb                   |   5 +-
 services/api/test/unit/authorized_key_test.rb      |   2 +-
 .../api/test/unit/collection_performance_test.rb   |   2 +-
 services/api/test/unit/collection_test.rb          |  16 +-
 services/api/test/unit/commit_test.rb              |   6 +-
 services/api/test/unit/container_request_test.rb   | 149 ++++++-
 services/api/test/unit/container_test.rb           | 147 ++++--
 services/api/test/unit/fail_jobs_test.rb           |   4 +-
 services/api/test/unit/job_test.rb                 |   4 +-
 services/api/test/unit/log_test.rb                 |  12 +-
 services/api/test/unit/node_test.rb                |  29 +-
 services/api/test/unit/owner_test.rb               |   3 +-
 services/api/test/unit/permission_test.rb          |   9 +-
 services/api/test/unit/pipeline_instance_test.rb   |   1 -
 services/api/test/unit/salvage_collection_test.rb  |  12 +-
 services/api/test/unit/user_test.rb                |   1 -
 services/arv-git-httpd/arvados-git-httpd.service   |   2 +-
 services/arv-git-httpd/doc.go                      |  35 --
 services/arv-git-httpd/git_handler.go              |  31 +-
 services/arv-git-httpd/git_handler_test.go         |  10 +-
 services/arv-git-httpd/gitolite_test.go            |  10 +-
 services/arv-git-httpd/integration_test.go         |   2 +
 services/arv-git-httpd/main.go                     |  23 +-
 services/arv-git-httpd/usage.go                    |  39 +-
 .../crunch-dispatch-slurm/crunch-dispatch-slurm.go |  13 +-
 .../crunch-dispatch-slurm_test.go                  |   2 +-
 services/crunch-dispatch-slurm/squeue.go           |   6 +-
 services/crunch-run/crunchrun.go                   |  20 +
 services/crunch-run/crunchrun_test.go              |  71 +++
 .../dockercleaner/arvados-docker-cleaner.service   |   7 +-
 services/dockercleaner/arvados_docker/cleaner.py   |  21 +-
 services/dockercleaner/setup.py                    |   1 +
 services/dockercleaner/tests/test_cleaner.py       |   6 +
 services/fuse/arvados_fuse/__init__.py             |  21 +-
 services/fuse/arvados_fuse/command.py              |   6 +-
 services/fuse/tests/integration_test.py            |   1 -
 services/fuse/tests/test_command_args.py           |  14 +
 services/fuse/tests/test_mount.py                  |  33 --
 services/fuse/tests/test_token_expiry.py           |  68 +++
 services/keep-web/main.go                          |   2 +-
 services/keepproxy/keepproxy.go                    |   2 +-
 services/keepstore/azure_blob_volume.go            | 183 ++++----
 services/keepstore/azure_blob_volume_test.go       |  23 +-
 services/keepstore/bufferpool_test.go              |   4 +-
 services/keepstore/collision.go                    |  16 +-
 services/keepstore/config.go                       | 188 ++++++++
 services/keepstore/config_test.go                  |   9 +
 services/keepstore/count.go                        |  44 ++
 services/keepstore/deprecated.go                   |  43 ++
 services/keepstore/handler_test.go                 | 135 +++---
 services/keepstore/handlers.go                     | 165 ++++---
 .../keepstore/handlers_with_generic_volume_test.go |  15 +-
 services/keepstore/keepstore.go                    | 277 +++---------
 .../keepstore.service}                             |   6 +-
 services/keepstore/keepstore_test.go               |  77 ++--
 services/keepstore/perms.go                        |   9 +-
 services/keepstore/perms_test.go                   |  28 +-
 services/keepstore/pull_worker.go                  |   3 +-
 services/keepstore/pull_worker_test.go             |  34 +-
 services/keepstore/s3_volume.go                    | 491 ++++++++++++++++-----
 services/keepstore/s3_volume_test.go               | 151 ++++---
 services/keepstore/trash_worker.go                 |  12 +-
 services/keepstore/trash_worker_test.go            |  41 +-
 services/keepstore/usage.go                        | 124 ++++++
 services/keepstore/volume.go                       |  74 +++-
 services/keepstore/volume_generic_test.go          | 138 +++---
 services/keepstore/volume_test.go                  |  18 +-
 services/keepstore/volume_unix.go                  | 166 ++++---
 services/keepstore/volume_unix_test.go             |  74 ++--
 services/login-sync/bin/arvados-login-sync         |  99 +++--
 services/login-sync/test/test_add_user.rb          |   2 +-
 tools/arvbox/bin/arvbox                            |  28 +-
 tools/arvbox/lib/arvbox/docker/Dockerfile.base     |  58 ++-
 tools/arvbox/lib/arvbox/docker/Dockerfile.demo     |   2 +-
 tools/arvbox/lib/arvbox/docker/Dockerfile.dev      |  11 +-
 tools/arvbox/lib/arvbox/docker/common.sh           |  17 +-
 tools/arvbox/lib/arvbox/docker/crunch-setup.sh     |   1 +
 .../docker/service/arv-git-httpd/run-service       |   9 +-
 .../lib/arvbox/docker/service/ready/run-service    |   4 +-
 .../lib/arvbox/docker/service/sdk/run-service      |   8 +-
 tools/keep-exercise/keep-exercise.go               |  19 +-
 304 files changed, 7157 insertions(+), 4048 deletions(-)
 create mode 100644 apps/workbench/app/assets/javascripts/work_unit_component.js
 create mode 100644 apps/workbench/app/views/projects/_show_workflows.html.erb
 create mode 100644 apps/workbench/app/views/work_units/_show_log_link.html.erb
 create mode 100644 apps/workbench/test/controllers/disabled_api_test.rb
 create mode 100644 apps/workbench/test/unit/disabled_api_test.rb
 create mode 120000 build/package-testing/test-package-python-arvados-cwl-runner.sh
 create mode 120000 build/package-testing/test-package-python-arvados-fuse.sh
 create mode 120000 build/package-testing/test-package-python-arvados-python-client.sh
 create mode 100755 build/package-testing/test-package-python27-python-arvados-cwl-runner.sh
 create mode 100644 doc/_includes/_crunch1only_begin.liquid
 create mode 100644 doc/_includes/_crunch1only_end.liquid
 create mode 100644 doc/_includes/_notebox_begin_warning.liquid
 delete mode 100644 doc/api/authentication.html.textile.liquid
 create mode 100644 doc/api/execution.html.textile.liquid
 create mode 100644 doc/api/requests.html.textile.liquid
 delete mode 100644 doc/api/schema/ApiClient.html.textile.liquid
 delete mode 100644 doc/api/schema/ApiClientAuthorization.html.textile.liquid
 delete mode 100644 doc/api/schema/AuthorizedKey.html.textile.liquid
 delete mode 100644 doc/api/schema/Collection.html.textile.liquid
 delete mode 100644 doc/api/schema/Container.html.textile.liquid
 delete mode 100644 doc/api/schema/ContainerRequest.html.textile.liquid
 delete mode 100644 doc/api/schema/Group.html.textile.liquid
 delete mode 100644 doc/api/schema/Human.html.textile.liquid
 delete mode 100644 doc/api/schema/Job.html.textile.liquid
 delete mode 100644 doc/api/schema/JobTask.html.textile.liquid
 delete mode 100644 doc/api/schema/KeepDisk.html.textile.liquid
 delete mode 100644 doc/api/schema/KeepService.html.textile.liquid
 delete mode 100644 doc/api/schema/Link.html.textile.liquid
 delete mode 100644 doc/api/schema/Log.html.textile.liquid
 delete mode 100644 doc/api/schema/Node.html.textile.liquid
 delete mode 100644 doc/api/schema/PipelineInstance.html.textile.liquid
 delete mode 100644 doc/api/schema/PipelineTemplate.html.textile.liquid
 delete mode 100644 doc/api/schema/Repository.html.textile.liquid
 delete mode 100644 doc/api/schema/Specimen.html.textile.liquid
 delete mode 100644 doc/api/schema/Trait.html.textile.liquid
 delete mode 100644 doc/api/schema/User.html.textile.liquid
 delete mode 100644 doc/api/schema/VirtualMachine.html.textile.liquid
 delete mode 100644 doc/api/schema/Workflow.html.textile.liquid
 create mode 100644 doc/api/storage.html.textile.liquid
 create mode 100644 doc/api/tokens.html.textile.liquid
 create mode 100644 doc/images/Arvados_Permissions.svg
 create mode 100644 doc/images/Crunch_dispatch.svg
 create mode 100644 doc/images/Keep_manifests.svg
 create mode 100644 doc/images/Keep_reading_writing_block.svg
 create mode 100644 doc/images/Keep_rendezvous_hashing.svg
 create mode 100644 doc/images/Session_Establishment.svg
 create mode 100644 doc/sdk/go/example.html.textile.liquid
 create mode 100644 doc/sdk/java/example.html.textile.liquid
 create mode 100644 doc/sdk/perl/example.html.textile.liquid
 create mode 100644 doc/sdk/python/example.html.textile.liquid
 create mode 100644 doc/sdk/ruby/example.html.textile.liquid
 create mode 100644 sdk/cwl/arvados_cwl/crunch_script.py
 mode change 120000 => 100644 sdk/cwl/gittaggers.py
 create mode 100644 sdk/cwl/tests/hw.py
 create mode 100644 sdk/cwl/tests/mock_discovery.py
 create mode 100644 sdk/cwl/tests/test_pathmapper.py
 create mode 100644 services/api/db/migrate/20161019171346_add_use_existing_to_container_requests.rb
 create mode 100644 services/api/db/migrate/20161111143147_add_scheduling_parameters_to_container.rb
 create mode 100644 services/api/db/migrate/20161115171221_add_output_and_log_uuid_to_container_request.rb
 create mode 100644 services/api/db/migrate/20161115174218_add_output_and_log_uuids_to_container_request_search_index.rb
 create mode 100644 services/api/test/functional/arvados/v1/container_requests_controller_test.rb
 delete mode 100644 services/arv-git-httpd/doc.go
 create mode 100644 services/fuse/tests/test_token_expiry.py
 create mode 100644 services/keepstore/config.go
 create mode 100644 services/keepstore/config_test.go
 create mode 100644 services/keepstore/count.go
 create mode 100644 services/keepstore/deprecated.go
 copy services/{keepproxy/keepproxy.service => keepstore/keepstore.service} (53%)
 create mode 100644 services/keepstore/usage.go

       via  7a76d3b2fc40c41e2d028daa0ee150b47421f0c5 (commit)
       via  8735f2aa77b9e3c51449738e429399e4501ec94e (commit)
       via  03406083ed63e5a0c118216e3e33fc8823c808a7 (commit)
       via  a12d68dd2e2646beb4ae68e4dd0825272e279508 (commit)
       via  8f39c027e4895a8d872093c3dd16aa51b26a3731 (commit)
       via  1bb30a981efa038bf07f139f996eb9d77749fced (commit)
       via  1d45a45d1a1ebb0c02b4a9dd7ece73a55a6b24db (commit)
       via  09a2e88c51e5432e607f2a38466e55b4ba15e887 (commit)
       via  5debe2b77df18d381d7d59976e76f4ea6c9d5ce0 (commit)
       via  e5fd39ad76ac8bcb5e7bfe0c6938fdeb7c8ab4e3 (commit)
       via  b1e2f45d0a926617c991410feda842a5056ff5f0 (commit)
       via  bf08ad601e8c69e812dcfd5fd88cd711d35647ae (commit)
       via  8c716ec575b5f7679a2ab95ebea944a46ff756c1 (commit)
       via  d542de20d8617f5823ab8f675c114f78aaf4a924 (commit)
       via  515a58c0ef8634fca2397a8609f868524a42132c (commit)
       via  4568673894b4a752503ad403bd391767ac1805e5 (commit)
       via  b45d7c92a23390c8be246219a1c84b8736854581 (commit)
       via  78889e115e6fffd5eb82e54a541bd4858f804f91 (commit)
       via  c1ebef70f3b66080b51ef700383f44d70736f495 (commit)
       via  5977b70a38e7102a6a369074897af990944c8934 (commit)
       via  1071e1163f894c2a73df76cd400d102748e5281d (commit)
       via  322d784513c37abc8fa1d1c05dd5f41019868735 (commit)
       via  6f2ac70b70d4b64b728b815d5be429d5a165e2f0 (commit)
       via  c654baedb04251a741c840860041768ec661d3e7 (commit)
       via  329b27f1407d900f8de7872077e6c91ebb32107c (commit)
       via  a07c8bfac95524f3074d11cda0d6689b5e7bf9cc (commit)
       via  ce924ad9cdbab7ede0df7409d43b2660c1329979 (commit)
       via  2d8150ed20d97491930d99a52d923872bca73939 (commit)
       via  47f987da576d7dac80e5a03ad6613b5eb1f58660 (commit)
       via  ad825d1c73655d3f62fd485a1bc32fc3e76531f6 (commit)
       via  a4e81f561cce966074a72ff6219826a89152451a (commit)
       via  4bccbaed84c6b398f4cb4dbc7a9bc345e79d6550 (commit)
       via  b6bc9bbe45a68a07b1ea8139e1f4d698873739a7 (commit)
       via  20d3523229805ee800ec11bf4ab6e41c4e18eea6 (commit)
       via  ddce4f6de6f0a77b45e9f3358eb6f0c1f1870fba (commit)
       via  e7a865275a832420b9d63c0ab3ebf87eaca57d26 (commit)
       via  d8db04f0165e57ab8021f2c1e4ff7061e494ceba (commit)
       via  d2f9e7809bd1f63638600c7fc8189182c0f327c0 (commit)
       via  2251688e66191ff1169080f50868bf57e463659c (commit)
       via  c14246b9a21d038fc6fa850f4032659a98397784 (commit)
       via  5d2ef6f7a2a8f93ec411c420287f30af92294520 (commit)
       via  780d334ec4b2d47379d0330ace77b3821c880842 (commit)
       via  a078c965c1ed1e54f678ad93305b91b6c7dcb1a9 (commit)
       via  53a9aa7651a9fed6d88f4ece0f8d4cd10a77a63f (commit)
       via  5a553b7b1fc75a84f8784eeb812361616911accd (commit)
       via  eae48c31bb338689ec67fbc6a14a2e0b1fb5e3b6 (commit)
       via  1d656f4f1ec1f890a7677e748bea43a08cfa0b6c (commit)
       via  3af6db5dc4e2f08b2ebb49a82109c4325ad7fcc4 (commit)
       via  15488bac7de5fa73c2695589c6436a6848615e84 (commit)
       via  38fae0458644b89322ddeac125971800b9e452e5 (commit)
       via  02010431f52911a6ff908e673c534291beb929ac (commit)
       via  82fa37ac01169178f6a9b1c142926de7b50e8841 (commit)
       via  b21e623902cb32b6d5a2fcf2c6ac9d92d472cb58 (commit)
       via  1129e9428dc1f3a300c4148bf12821eecf511ab3 (commit)
       via  90c48f84391d6b4d6b8ed366d5a42d24bf6c696f (commit)
       via  0b5d04beb288175a285c36a38f255399dfe7d0d7 (commit)
       via  b86543493dffefb1ec245f48550cfa9e0119f4d1 (commit)
       via  8c7a6b5bb3cf27dff61a3b2d83fd4374c7262206 (commit)
       via  9640930c3934344ab64c92a5c86c1f7488a4de42 (commit)
       via  5cd2757a79e7be7ed00156a69191893c3bb7e1c6 (commit)
       via  f6a8bf41c9f038ece715ec2744c36160f9c6c591 (commit)
       via  4225d058e0bc4380203fe5959e7e54febc91e83b (commit)
       via  42f433ac4486c18fa6408d5f942dc394e5ff149e (commit)
       via  ddeef8adc0cb7cdb55be644b9335ea51919ed513 (commit)
       via  9cc813f25cb1d0c912c90ad8ed58166cbaaeff1c (commit)
       via  c198274863bb5d72ef34dfc311c62bf50d6bd4f4 (commit)
       via  1e6d7656fbfd1f954571157fc7e7e4f75ea5911e (commit)
       via  aa49b45a4d25cb1e4282e242a2502c8a591f8615 (commit)
       via  79786a56410ef381499fb0bfdc5a18407ab33082 (commit)
       via  d0bc46ce842e7fdb71c25cc32caef0afd209c9ec (commit)
       via  29dee6a4abe943797a4baa939085177626997408 (commit)
       via  a2ea118787c7ce9d7b5df32a3f14a3b3b42de572 (commit)
       via  c6c3d3c8748b59ca0e8a9d5cfec0a54bdfd212f0 (commit)
       via  364fed6e1d4036719e4c461cfe0bc24e7f52f144 (commit)
       via  0c54a5c8b5d934cb3015234a41c3937b3d0fc3b9 (commit)
       via  fd26f5508b755061046727fb652aa4141029e8b9 (commit)
       via  287a03d273629ef15f77721ad2c7ce572fb5c078 (commit)
       via  6fb784416db6651b33b921a0684c2f8de84410fc (commit)
       via  b1b7794d253c653a370200c2b33d477d3f7f231e (commit)
       via  5fc627d22b47723289251e1e1d9dc45c0e1bd49e (commit)
       via  358b9e8cb0fb72db4f7c8966de175fbadca9adeb (commit)
       via  5c274cd1249ce0f5e0048f8e0974e36deee8c9cc (commit)
       via  97eb0ce9a8a83af1acff17d3dfb66c6ca7522678 (commit)
       via  b03f167f42f9803814e2d22c4de68a30a3bc9dae (commit)
       via  c3cc1d58b64940a2bd79f27a9d0fdc50318dbb99 (commit)
       via  0d2a561091b777dfb7735d842a88f8529f4f982a (commit)
       via  dac167d2d3d259de8fd70d1289dbbe65c7974d4a (commit)
       via  928c4a5b8d3645994d99c881914bcf1683e69d1d (commit)
       via  b8641edca2fa6bb3325b057264a81b6ce71b9f19 (commit)
       via  cd391613ae717c90ede24f220695c277ecd095ce (commit)
       via  66b8e9d2f1178ddec2924eadae721e2dfd9a4a67 (commit)
       via  d158890921e8821782420711513a8b28ce0a1280 (commit)
       via  9411197dfa8ff4c7d935a395a04b5846c7b52ffd (commit)
       via  49a0efed4d774c060db94b9702760d33a4134a17 (commit)
       via  fecb5eb18b9cf15459de8eba44b6e545962d8cd4 (commit)
       via  fa774e69987932acfcabe81ca44d4d6c4fb596bf (commit)
       via  d3512add65497d1af8b8bbceff2296c803873f95 (commit)
       via  d3c5a48fddf2f07d93667f9fa8ca2456f1d8f63c (commit)
       via  4f42bd3f3b2c0526690c3368c9172ed89773e6f1 (commit)
       via  f3b231c69407299133a6eb5ff6066ae6136608e9 (commit)
       via  97b8ba6c2d2023f66cab62b7062cd0dbff837c67 (commit)
       via  ec27d93c1d8918ec509ec3c64ed11dcd51f28374 (commit)
       via  da13bb400f87fdd4157146e2d0b171b730fa3208 (commit)
       via  8040d45d59041859350c56cae195eb09a65a8dde (commit)
       via  9b1a9a3a7de01dc07270b950101d11ae96786de4 (commit)
       via  24c98a345046c650247e6515eeb6d3389e54b68c (commit)
       via  863570108a2c901a8eff22dc8a9bc72635ba7b95 (commit)
       via  39536d8dd7f0a6ab89e106cd065830f1cbb067b1 (commit)
       via  36bbbee25ab89a499f4015fb39845cc2d911aa63 (commit)
       via  1c1f12b1f2c32cdee5fab278f38a65ec246cbbf0 (commit)
       via  c863f911c9a55203bbe0bd3735162084b94f582f (commit)
       via  b0c0e63f7f3c5a58947db8d4dcc8572362f0e7a1 (commit)
       via  2105942b856ac9621c2887f9e86636b4d7f17a14 (commit)
       via  8e56df8796bf822e6c5181d80715a3a217320696 (commit)
       via  ac9e30c830fd8acdd04ff2a8067f3b33d95325f5 (commit)
       via  5e4f310a2024cb8f9dc509f94c71467508341851 (commit)
       via  701598520c45f790fdc02c1d046a29a8f3b84380 (commit)
       via  c2af1e524e87fa76f51bed62d4821d4fe1b7fcc0 (commit)
       via  eba27784b1696432c48bc41ab0a4fba7e405f3b9 (commit)
       via  12b82d52759ea35c7c9fcdd243a1205c92d53f49 (commit)
       via  23f0ec9bc86cc786f995c6b123b912b8ba3ce4d7 (commit)
       via  26e1c10f963a586e40ea9dcb46a87b0107c97b7c (commit)
       via  7e52fd153f2d16f94061ef1eabfe653d4a83852a (commit)
       via  5894f831aed536618868f2c78fee7c409fd9b0ab (commit)
       via  7ea4e4ac71ef2f3dde92ac1468127bfd766add03 (commit)
       via  ebda23ff4bf42b24dc3c11d9ccb3b053c07276c9 (commit)
       via  17ac6b9f8462d63b1162a96f4c182ccc29217c5c (commit)
       via  a29758043e415cd436b23e61ba813f9c42aedaaa (commit)
       via  3775dc3ddeb90fe0b8492c38782c09421da21194 (commit)
       via  251dca0361de352e4866f472c4b1b2deb0edd78b (commit)
       via  caec2646101094c2b7a57cf5f53b858d4f724fe4 (commit)
       via  2a0472e6b0e94265d78fb22b5652619a7700e86b (commit)
       via  98fcb678a39f72945a9c947315beb31178bd4fc3 (commit)
       via  1d5f5f8f44f64f91a5d6ff8785a5863b707515fe (commit)
       via  0636ab69b759c04389433d291864366aab848225 (commit)
       via  c939c82545868821762e802d4b28535749504b55 (commit)
       via  63d0f330ab35e59dd871508e936ff74c249b94a4 (commit)
       via  82dc8eadba19c7727deeb4056f500fe8e4ba37a6 (commit)
       via  3cb54d529632df28dd14d1973f70d5fdbd98e2bb (commit)
       via  b8610f34c21f1cf44b938802f37971b06af4361c (commit)
       via  54c1afd044ab18db82d897484cae2153bc14a10c (commit)
       via  0a05151f05de44233d3c6ae0d53ecae2855f5a11 (commit)
       via  0f2ab548f96e8604a929e0636517f634b7dfb0ad (commit)
       via  e59d21d3f47cbee83a6dc389584bd7b17bec270c (commit)
       via  051efbd3d843baa690b334e57fd09fad6a908bb9 (commit)
       via  3c2fee34ad8f668f5cf9001d6b7d605965ec28bb (commit)
       via  cf569180b5121c1d2210a0fc1aa986e207d09af3 (commit)
       via  c10e9e5f3398d40a3346c7d7c1f84bf50262b8ec (commit)
       via  9e2e220996943f6de9a059a6b57c458f60f10e8e (commit)
       via  b13ad9d7173ac5dff945d4a2ec572510ff0fd5da (commit)
       via  69abf05f9257431a2084897dd3e7f1a4b76ae462 (commit)
       via  e0903a2cff2df4e6169e95f7439c0fa361c60ea8 (commit)
       via  cc3857d9fdcd7588af329a9b2452e0ef09eb68a4 (commit)
       via  120a2268606d73317ab2353d79c3046017300f81 (commit)
       via  62645650fcd451d2ea569c8e55526f6ed0db4fea (commit)
       via  15d8499a8d95abbc4bc2dbbd0bcfd2a4c6666408 (commit)
       via  94e52d9256cb17dddbc9c383d2ab90e713c25e3b (commit)
       via  4e9fd075b8136613e7edbb0465bcb96ccf5b1f45 (commit)
       via  42b9e37cd53d63980d3fa4a238f9ff6adad9ccc4 (commit)
       via  becada3b24006cf39417335794cb46556d7aa605 (commit)
       via  734335da27f27e2177d3b931b1e5e9e8e83a042f (commit)
       via  5c05b488a1f2318e73780b67f6f654b4a12c32b3 (commit)
       via  c14d6c107c8b3e2d110be12148e3a04d8ee04ef6 (commit)
       via  ceec074ede6c1e4d8e588ee66dbb6704bf903b68 (commit)
       via  95fc98726d64c71ed0b3a8c2270ee62c1c5d1bb5 (commit)
       via  4c0b3359319e4c778371e3d61368dec6635c3ef2 (commit)
       via  246413f02ca8711f117a8575fccfec82e5dbfe23 (commit)
       via  d966c816e478d1747c6e0e39d3430526120c655f (commit)
       via  7898b516dfc7e5e9177753d5bcdfc980dc055308 (commit)
       via  0066dc77abc461090fe98bcee7c6e324a5ca43a1 (commit)
       via  07b6eaeada7c10c3efb9b917579c474bd66685b0 (commit)
       via  078bdb166766423e1a423523e5285966aff7ec6b (commit)
       via  6f04833d7837659acdfd01d4fbcf4ae36e8e5f5c (commit)
       via  68463d51530a921dd965075e1721744c75322703 (commit)
       via  40cad1b6c6b969c78fb415ee7be59dac32c45891 (commit)
       via  85292497b7a89b9a0681fc38d307eea26681924c (commit)
       via  8d6ffdf2fba938e7fbb5f128664d828d2669bcfe (commit)
       via  c95fd352d669bc65c0dbc9970ca11291cc933577 (commit)
       via  f830fb6b5a8113aabe6a377cadbb50dc52d5d1e0 (commit)
       via  4304baee8e6cc9483a0cae397149526a0e8356fb (commit)
       via  28e0fb829175415c533ea783d90ade8a39bdb236 (commit)
       via  9ac31a42d4c777c158b2b9a7623194217d7a0772 (commit)
       via  61b286dcf40fa85319cceb69e16660aebc71b942 (commit)
       via  182dd3521c1ea587a94ed2bfa4e1a3e935d493c7 (commit)
       via  7a3816393dddc19f67838ae495b83d32e90182d4 (commit)
       via  4b037a38dbe848a77224dd05dd035736b5d0c0c1 (commit)
       via  7bf89e17945bb6610d6339409a6a411803851434 (commit)
       via  5015b0a3ab4ba407b162abf673d114924ca86c92 (commit)
       via  b4e586171f3fa3eab6b11f4fa4c71c346b2812e7 (commit)
       via  f6288c66e7ae5a2c736e1c9897acedf6d35b0a10 (commit)
       via  4c86081e1ee5149f09f05cd3b77e59fc652d4ab3 (commit)
       via  48cb427d89232516d0044464eb00efdcef6ba365 (commit)
       via  633781b1ac0f5b23cb43c43d0dda4627c2b9924e (commit)
       via  09a87e19162124ca40cbf13cc90d2aed72f90478 (commit)
       via  cd0052e87bfa9d7e3d501427c7ff47e08c68d8d5 (commit)
       via  b73985d8a0c9173aec57f6a81fe540b2813a5bff (commit)
       via  dfe0ec7bfec3fd72cd40d3962e5c8af08d2413d2 (commit)
       via  6349237efb19ca7fcad94333090d694fda3d4374 (commit)
       via  842850ea58a856b93755d5f8990e7473cb034504 (commit)
       via  2431a079d91545770bc931fc03afbca81dfa2004 (commit)
       via  670b4ba238d93910ff087794d359da0d5ac469fa (commit)
       via  e8a76617eeec9429ddf7879048a310ba6e15e0d8 (commit)
       via  a70a555fbd30524568a0e019df184468f28556f0 (commit)
       via  6362c17d947b16db1e2b71f7a06da9c930ef9778 (commit)
       via  f61a39eb70046280bd4611ea2dad38a5602303dc (commit)
       via  b8a53fdbe406c1c46ba39facccec63c5055001bf (commit)
       via  91dc5f1d7f5ad9eb2640f6089e2d0476cbf87c8e (commit)
       via  68387de8c5b5c5950f2e10d315172658297835b9 (commit)
       via  9290528fb9700db4541ebe29c94eda3503f509f4 (commit)
       via  d6e4e65cf3aae701c3e02a814329757e869a1d6d (commit)
       via  1c7de9d85417202a48ea82409ab390dfcab7f2a5 (commit)
       via  e14484fbba64222e4b32c353e3ea057c6f10acd0 (commit)
       via  4d59e4f59204ff6e278ad7f37b55ead3911412e1 (commit)
       via  617ef14a3f2fac4dad5f699af7000187143ebbe3 (commit)
       via  0e5198142fdba0ce2af6eb2852d45dff46ffb2e2 (commit)
       via  3d984f3ee6182391094ece7e32d61c40be7ba903 (commit)
       via  754913fc3e5037903048863f5545c9512fbf7bfc (commit)
       via  d5524135b1495b919de332df4f952926664961f5 (commit)
       via  cfa2c529c7c8105e4d424b404db2c48ff2066e27 (commit)
       via  f84926fc3f934ea1958c810637851ec91994fc16 (commit)
       via  7e54f217895d2f401563c54704c73a196e2d236d (commit)
       via  81d1a618e724c6e9f20f4efa47acbcef4bba5f15 (commit)
       via  8ffceeb0bddd457cee62586d405afd8e082e1d6f (commit)
       via  1f208cec34df32a83683110b552a1f62767a4852 (commit)
       via  360d5f885a6613a506e283ff74b18382249cf929 (commit)
       via  e9b2c5fc743957598d839e072c49e027752b3287 (commit)
       via  6ebfa334f7965f2c4dbe1f52676993dcbd745f65 (commit)
       via  5c5e51e7fd601d4e760c76099e3225845d91bb5f (commit)
       via  b1578a5e964e1a04d8c96c541017c44498e966cb (commit)
       via  6bf3b279cd2d5ea5c1d6b849265b7206461467b8 (commit)
       via  3ec9630b7d8b4be9d9ca149e45fa5d9cc4ea0f42 (commit)
       via  787856704fb3e4421f0367eaca17c7743e844962 (commit)
       via  cfa2a5ac51c55fa317e1d4a725ebf4fd630b9322 (commit)
       via  ce5e483d141207a9adddfb82bc8073caaf555907 (commit)
       via  e8e45c5267f216909382aad7fc976dca82008284 (commit)
       via  cde03921959a7edbac9f6e969b3b8b99ee3c5b86 (commit)
       via  957068e7b647db0bf2188b2c9ed4bc673f0744f2 (commit)
       via  99256e7b8649d6be2f380ef9cd1cf506e2bbe8d7 (commit)
       via  94588fc14c200e4163144cd53bfa548a27fff7e0 (commit)
       via  d26136521a20387b12a3a632dac18a210fe88430 (commit)
       via  54a8c91cda42a5be9fa0f532605e3bc3262b240a (commit)
       via  2dd5e12d5cd92fbc746bb1d3e30dfba3e871fd72 (commit)
       via  162766a3f8e91024f0f40fbc3d5955b899df73a9 (commit)
       via  f99aa5b85a1aa3bff1f1140f6a109fd308b03d30 (commit)
       via  3891d484a96b50a6c2561ec0f296bf4f0399ad03 (commit)
       via  921fef9e349cada916934ae0131067adac8d0335 (commit)
       via  fa57e1ba30bbf2ab2956d5a7ae3da14380da8669 (commit)
       via  a85e7c7526d985f66f073320155ae5d70590be60 (commit)
       via  570509ab4d2ef93d870fd2b1f2eab178afb1bad9 (commit)
       via  f156def25b0720dac1e102727f3a3821b98fb551 (commit)
       via  687906a92dc61fb9824e5963de675ed3f907e6b0 (commit)
       via  6c2276acb0a049d0defc71dbb2578cf172717520 (commit)
       via  e144534106f2031b4a9bec0d80eebf094e33a285 (commit)
       via  5a0d9381edaa6c7eede45c9171ac089d1a4debf8 (commit)
       via  1658a97ba74320c2da1bed1d5fbfbaa767203e1c (commit)
       via  b8573fab8e641eab5adc123e9f335510bff65172 (commit)
       via  9aecc4974eecdfaf94db275112c2a37601802fe7 (commit)
       via  f0bc71892f7ba3b2bb42e96598302676faa4a652 (commit)
       via  794e704d8945dd6ce0e8523e4e209b86e0dd5523 (commit)
       via  b8d98eba35c5a9d902eddbf42fd53a37bb6b30c4 (commit)
       via  5fd9b5a5fb88f40b999ab6c9fa9435ad01f595ff (commit)
       via  160644c09224113debdbae7c0be0c6e661dfebd8 (commit)
       via  50cd2aaee0e70d35ac4d90e3c29304fa48dd568a (commit)
       via  0cb1e7c1e0d6eda274b175f395a2739806f2cfea (commit)
       via  0f89acd51a22391e00b5cb270ca93e48357fd618 (commit)
       via  e1902b8a0490aa6b7ffc544c1609d4d57a5110ce (commit)
       via  c62e4ae2026770d983ef5b7ffda0cf6d0f48ffc2 (commit)
       via  b307cc4cf2f31eccd1ae5ef3310cfee309f6688e (commit)
       via  df2a5463aa313dde8e0dba33c357e3eb4272ba35 (commit)
       via  a7d5b045f79eecc54949929abfdf13689626fcc3 (commit)
       via  cd6a8c82f19a83dcd76ef86bd16af49b71a639f4 (commit)
       via  b9d2799dfebae724dda3b3e28641116ca5daf5c7 (commit)
       via  82cc494a64aaac576dfefe0487faafdda82482bc (commit)
       via  f935965259f9c0476a9c5ffa79e5c27ce9da4800 (commit)
       via  e5b9158fc357495fba2d110bf6eafa72b1ebe145 (commit)
       via  d3b56f18947c3ccb42fee52ff33b3b00db0dffd9 (commit)
       via  8b03f0b0e66190b35c55ce1f0917dd2104b8a0b9 (commit)
       via  a278be11225d5f4d77eaa332854421995ce20224 (commit)
       via  61060582be06315a7a44347acbab9613bf1c4c93 (commit)
       via  6a7beeebde1fed4ab925704238d1fb980e9fe238 (commit)
       via  f0769a2c41c1ae03d2180e9d25e1738b88650064 (commit)
       via  d71020ac08d7b6e84d2d8f8d2c9b22d512144baa (commit)
       via  1825696494802d264c74ed2af58cc39b6ff8c7f8 (commit)
       via  23a37f77f36717f60884c2b8054a9670b35e611b (commit)
       via  b1158db281c2107b191ddd41dd6b20f32ff04940 (commit)
       via  70f1b69fe1f0567483afc182e47fe717756b8bd1 (commit)
       via  4ae3e06d829da2018e952eab6f544f3bed754d67 (commit)
       via  ef6f7202858cba65e06cc1a32d52ee2305687bc8 (commit)
       via  82cd0096558b94f8ff1e23d6e3f8b8dfec7df7b9 (commit)
       via  f78ee6387642d4dd0faf9071e44319a2ee42ce2f (commit)
       via  20a717071130eee4afb4704617c51ff165d735d9 (commit)
       via  51eaad58e0a135bdf88d4bdcd819d219d75de0df (commit)
       via  ea0de4d588c6eac28458fb20d70e008081f9ecbb (commit)
       via  cd175e917038f68d80d29cc6fee24fc3b389069e (commit)
       via  0fe15cf43dfc6c10a4fc949ba462a7ac14e2d8e7 (commit)
       via  59acf0718d442c05c64ba012b4f48478a4087b7b (commit)
       via  8baaf20400a376977b277ac7675ebfd0c4afe917 (commit)
       via  c978ad2d773b1ffc1ec6608123e27b89e65c428e (commit)
       via  195b3f3cd0870195c546fec3e05522c0d1c89b72 (commit)
       via  c4e25267ff206ec4c5e4aaf3b44946333d731ce8 (commit)
       via  2656053035f46e6097b380f5c0da7d54b04a60c4 (commit)
       via  5df99ffc7c5ca08070fd7cb9c056056c86ed72cf (commit)
       via  d5b49bc4f8749aabd97037614fcdc364b5254bb7 (commit)
       via  06f40b3d477f3ab1c834d9671808c3da02ca7dfd (commit)
       via  8f794ab549d05adba6774ab91066b55f719c181a (commit)
       via  cb781d9b5e61c5494d29d53a0a12c678c839eecd (commit)
       via  cc9aed221c506cfc28f1b6ca37675dba6543d824 (commit)
       via  807125b8423058d336165f069bf5d618f77845b7 (commit)
       via  84f161dfc3229ad3a849fd5e152f254359a56252 (commit)
       via  022095999a584b12789259b577965122bb676194 (commit)
       via  e86904aa647a984a04aea2c4ce20c61cae8ee9f5 (commit)
       via  daf793d506c68a45f50cca14d08182ee2ceeb0d1 (commit)
       via  29389eac8cf5f7c9f210579b6d74ca9c84f39ad4 (commit)
       via  727fae1a8620a8b832dccc5552d864aecf720e24 (commit)
       via  eaefa56b27792e89eed272913fa30cdb4e6d0e70 (commit)
       via  255ad79d25c04736bd0bd17055e510af608aa0ed (commit)
       via  9bd0c008b8d798f6aabd63a082ee3d250b1ec680 (commit)
       via  b1b6efe84c40e5672a33f9a08cb7e1e4979460b5 (commit)
       via  9f7e6c2782c1929de61ecd61e457700730ef9681 (commit)
       via  c8d04b26dbeb3dd4401788053bf514b9f172a185 (commit)
       via  aafa79beddaf4a1e94a502eda1f668ebec39e3d3 (commit)
       via  716ee800f3bfcffe19d091c3f5f30d826e69c72a (commit)
       via  c54ead18b1a012f73ac7ea06d93b397ed2f396c6 (commit)
       via  41d7b9bb8a45b0d80fb2bf15af4c9e7b3d77a467 (commit)
       via  c613f893bf36e79801af7d5a712853c51ef56bf9 (commit)
       via  e69f517dbd5ad9bac104d42479d8ef2f515b398e (commit)
       via  654d8fe3decc93b8eb986313cdb9070f22abdca6 (commit)
       via  af67b8e1955ca5a10b43b1701c4b86b0a33edb0b (commit)
       via  31baddea7535d8ba6ca812086264b71efdccbc29 (commit)
       via  1d3d5386e0586f91984fcfb9a117ffcc38b817b4 (commit)
       via  64efd1030538d59821ce288a7674e29d49c35744 (commit)
       via  ed16f0c1f600acd7bab81796ec22fde90ecdfa7f (commit)
       via  17f2b714df870dffc6320173d6a2348243ff7992 (commit)
      from  72912c6b25fcb10c0acc540daf4f8a25d802784b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 7a76d3b2fc40c41e2d028daa0ee150b47421f0c5
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 20:18:15 2016 -0300

    5737: Fixed unused variable declarations.

diff --git a/services/api/test/unit/container_test.rb b/services/api/test/unit/container_test.rb
index ef64eff..a175533 100644
--- a/services/api/test/unit/container_test.rb
+++ b/services/api/test/unit/container_test.rb
@@ -269,8 +269,8 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select complete over running container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "completed_vs_running"}})
-    c_completed, cr1 = minimal_new(common_attrs.merge({use_existing: false}))
-    c_running, cr2 = minimal_new(common_attrs.merge({use_existing: false}))
+    c_completed, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_running, _ = minimal_new(common_attrs.merge({use_existing: false}))
     assert_not_equal c_completed.uuid, c_running.uuid
     set_user_from_auth :dispatch1
     c_completed.update_attributes!({state: Container::Locked})

commit 8735f2aa77b9e3c51449738e429399e4501ec94e
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 19:48:10 2016 -0300

    5737: Fixed several warning messages from running tests.

diff --git a/services/api/lib/crunch_dispatch.rb b/services/api/lib/crunch_dispatch.rb
index 83cd1b9..48b0eb5 100644
--- a/services/api/lib/crunch_dispatch.rb
+++ b/services/api/lib/crunch_dispatch.rb
@@ -73,7 +73,7 @@ class CrunchDispatch
       # into multiple rows with one hostname each.
       `#{cmd} --noheader -o '%N:#{outfmt}'`.each_line do |line|
         tokens = line.chomp.split(":", max_fields)
-        if (re = tokens[0].match /^(.*?)\[([-,\d]+)\]$/)
+        if (re = tokens[0].match(/^(.*?)\[([-,\d]+)\]$/))
           tokens.shift
           re[2].split(",").each do |range|
             range = range.split("-").collect(&:to_i)
@@ -105,7 +105,7 @@ class CrunchDispatch
   end
 
   def update_node_status
-    return unless Server::Application.config.crunch_job_wrapper.to_s.match /^slurm/
+    return unless Server::Application.config.crunch_job_wrapper.to_s.match(/^slurm/)
     slurm_status.each_pair do |hostname, slurmdata|
       next if @node_state[hostname] == slurmdata
       begin
@@ -169,7 +169,7 @@ class CrunchDispatch
       end
       usable_nodes << node
       if usable_nodes.count >= min_node_count
-        return usable_nodes.map { |node| node.hostname }
+        return usable_nodes.map { |n| n.hostname }
       end
     end
     nil
@@ -512,8 +512,6 @@ class CrunchDispatch
 
   def read_pipes
     @running.each do |job_uuid, j|
-      job = j[:job]
-
       now = Time.now
       if now > j[:log_throttle_reset_time]
         # It has been more than throttle_period seconds since the last
diff --git a/services/api/lib/salvage_collection.rb b/services/api/lib/salvage_collection.rb
index 2011f81..c6664b1 100755
--- a/services/api/lib/salvage_collection.rb
+++ b/services/api/lib/salvage_collection.rb
@@ -29,7 +29,7 @@ module SalvageCollection
   def salvage_collection_locator_data manifest
     locators = []
     size = 0
-    manifest.scan /(^|[^[:xdigit:]])([[:xdigit:]]{32})((\+\d+)(\+|\b))?/ do |_, hash, _, sizehint, _|
+    manifest.scan(/(^|[^[:xdigit:]])([[:xdigit:]]{32})((\+\d+)(\+|\b))?/) do |_, hash, _, sizehint, _|
       if sizehint
         locators << hash.downcase + sizehint
         size += sizehint.to_i
diff --git a/services/api/test/functional/arvados/v1/api_client_authorizations_controller_test.rb b/services/api/test/functional/arvados/v1/api_client_authorizations_controller_test.rb
index 37e690e..6c09d8e 100644
--- a/services/api/test/functional/arvados/v1/api_client_authorizations_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/api_client_authorizations_controller_test.rb
@@ -46,7 +46,7 @@ class Arvados::V1::ApiClientAuthorizationsControllerTest < ActionController::Tes
     get :index, search_params
     assert_response :success
     got_tokens = JSON.parse(@response.body)['items']
-      .map { |auth| auth['api_token'] }
+      .map { |a| a['api_token'] }
     assert_equal(expected_tokens.sort, got_tokens.sort,
                  "wrong results for #{search_params.inspect}")
   end
diff --git a/services/api/test/functional/arvados/v1/filters_test.rb b/services/api/test/functional/arvados/v1/filters_test.rb
index 9344b0b..2b1b675 100644
--- a/services/api/test/functional/arvados/v1/filters_test.rb
+++ b/services/api/test/functional/arvados/v1/filters_test.rb
@@ -32,7 +32,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase
       filters: [['uuid', '@@', 'abcdef']],
     }
     assert_response 422
-    assert_match /not supported/, json_response['errors'].join(' ')
+    assert_match(/not supported/, json_response['errors'].join(' '))
   end
 
   test 'difficult characters in full text search' do
@@ -52,7 +52,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase
       filters: [['any', '@@', ['abc', 'def']]],
     }
     assert_response 422
-    assert_match /not supported/, json_response['errors'].join(' ')
+    assert_match(/not supported/, json_response['errors'].join(' '))
   end
 
   test 'api responses provide timestamps with nanoseconds' do
@@ -65,7 +65,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase
       %w(created_at modified_at).each do |attr|
         # Pass fixtures with null timestamps.
         next if item[attr].nil?
-        assert_match /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d.\d{9}Z$/, item[attr]
+        assert_match(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d.\d{9}Z$/, item[attr])
       end
     end
   end
diff --git a/services/api/test/functional/arvados/v1/repositories_controller_test.rb b/services/api/test/functional/arvados/v1/repositories_controller_test.rb
index 71b528e..56dd57c 100644
--- a/services/api/test/functional/arvados/v1/repositories_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/repositories_controller_test.rb
@@ -43,9 +43,8 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase
   end
 
   test "get_all_permissions takes into account is_active flag" do
-    r = nil
     act_as_user users(:active) do
-      r = Repository.create! name: 'active/testrepo'
+      Repository.create! name: 'active/testrepo'
     end
     act_as_system_user do
       u = users(:active)
@@ -170,19 +169,19 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase
         u = User.find_by_uuid(user_uuid)
         if perms['can_read']
           assert u.can? read: repo['uuid']
-          assert_match /R/, perms['gitolite_permissions']
+          assert_match(/R/, perms['gitolite_permissions'])
         else
-          refute_match /R/, perms['gitolite_permissions']
+          refute_match(/R/, perms['gitolite_permissions'])
         end
         if perms['can_write']
           assert u.can? write: repo['uuid']
-          assert_match /RW\+/, perms['gitolite_permissions']
+          assert_match(/RW\+/, perms['gitolite_permissions'])
         else
-          refute_match /W/, perms['gitolite_permissions']
+          refute_match(/W/, perms['gitolite_permissions'])
         end
         if perms['can_manage']
           assert u.can? manage: repo['uuid']
-          assert_match /RW\+/, perms['gitolite_permissions']
+          assert_match(/RW\+/, perms['gitolite_permissions'])
         end
       end
     end
diff --git a/services/api/test/functional/arvados/v1/schema_controller_test.rb b/services/api/test/functional/arvados/v1/schema_controller_test.rb
index 2e370ec..7101821 100644
--- a/services/api/test/functional/arvados/v1/schema_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/schema_controller_test.rb
@@ -32,7 +32,7 @@ class Arvados::V1::SchemaControllerTest < ActionController::TestCase
     get :index
     assert_response :success
     discovery_doc = JSON.parse(@response.body)
-    assert_match /^[0-9a-f]+(-modified)?$/, discovery_doc['source_version']
+    assert_match(/^[0-9a-f]+(-modified)?$/, discovery_doc['source_version'])
   end
 
   test "discovery document overrides source_version with config" do
diff --git a/services/api/test/functional/arvados/v1/users_controller_test.rb b/services/api/test/functional/arvados/v1/users_controller_test.rb
index 157e487..579b8cc 100644
--- a/services/api/test/functional/arvados/v1/users_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/users_controller_test.rb
@@ -603,7 +603,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
 
     active_user = User.find_by_uuid(users(:active).uuid)
     readable_groups = active_user.groups_i_can(:read)
-    all_users_group = Group.all.collect(&:uuid).select { |g| g.match /-f+$/ }
+    all_users_group = Group.all.collect(&:uuid).select { |g| g.match(/-f+$/) }
     refute_includes(readable_groups, all_users_group,
                     "active user can read All Users group after being deactivated")
     assert_equal(false, active_user.is_invited,
@@ -842,14 +842,12 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
   end
 
   def verify_num_links (original_links, expected_additional_links)
-    links_now = Link.all
     assert_equal expected_additional_links, Link.all.size-original_links.size,
         "Expected #{expected_additional_links.inspect} more links"
   end
 
   def find_obj_in_resp (response_items, object_type, head_kind=nil)
     return_obj = nil
-    response_items
     response_items.each { |x|
       if !x
         next
diff --git a/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb b/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb
index 329bc15..9b805af 100644
--- a/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb
@@ -33,7 +33,6 @@ class Arvados::V1::VirtualMachinesControllerTest < ActionController::TestCase
   test "groups is an empty list by default" do
     get_logins_for(:testvm2)
     active_login = find_login(:active)
-    perm = links(:active_can_login_to_testvm2)
     assert_equal([], active_login["groups"])
   end
 
diff --git a/services/api/test/helpers/users_test_helper.rb b/services/api/test/helpers/users_test_helper.rb
index 2a61820..4cf70cf 100644
--- a/services/api/test/helpers/users_test_helper.rb
+++ b/services/api/test/helpers/users_test_helper.rb
@@ -74,7 +74,7 @@ module UsersTestHelper
     end
 
     group = Group.where(name: 'All users').select do |g|
-      g[:uuid].match /-f+$/
+      g[:uuid].match(/-f+$/)
     end.first
     group_read_perms = Link.where(tail_uuid: uuid,
                                   head_uuid: group[:uuid],
diff --git a/services/api/test/integration/cross_origin_test.rb b/services/api/test/integration/cross_origin_test.rb
index ebe7ce7..28c1b81 100644
--- a/services/api/test/integration/cross_origin_test.rb
+++ b/services/api/test/integration/cross_origin_test.rb
@@ -70,7 +70,7 @@ class CrossOriginTest < ActionDispatch::IntegrationTest
 
   def assert_no_cors_headers
     response.headers.keys.each do |h|
-      assert_no_match /^Access-Control-/i, h
+      assert_no_match(/^Access-Control-/i, h)
     end
   end
 end
diff --git a/services/api/test/integration/user_sessions_test.rb b/services/api/test/integration/user_sessions_test.rb
index 7a9f917..a46a4d1 100644
--- a/services/api/test/integration/user_sessions_test.rb
+++ b/services/api/test/integration/user_sessions_test.rb
@@ -110,7 +110,7 @@ class UserSessionsApiTest < ActionDispatch::IntegrationTest
         (repos.collect(&:name) +
          vm_links.collect { |link| link.properties['username'] }
          ).each do |name|
-          r = name.match /^(.{#{prefix.length}})(\d+)$/
+          r = name.match(/^(.{#{prefix.length}})(\d+)$/)
           assert_not_nil r, "#{name.inspect} does not match {prefix}\\d+"
           assert_equal(prefix, r[1],
                        "#{name.inspect} was not {#{prefix.inspect} plus digits}")
diff --git a/services/api/test/unit/authorized_key_test.rb b/services/api/test/unit/authorized_key_test.rb
index 5a66178..25801bb 100644
--- a/services/api/test/unit/authorized_key_test.rb
+++ b/services/api/test/unit/authorized_key_test.rb
@@ -25,7 +25,7 @@ class AuthorizedKeyTest < ActiveSupport::TestCase
       ak2 = AuthorizedKey.new(name: "bar", public_key: TEST_KEY, authorized_user_uuid: u2.uuid)
       refute ak2.valid?
       refute ak2.save
-      assert_match /already exists/, ak2.errors.full_messages.to_s
+      assert_match(/already exists/, ak2.errors.full_messages.to_s)
     end
   end
 
diff --git a/services/api/test/unit/collection_performance_test.rb b/services/api/test/unit/collection_performance_test.rb
index c9e702a..57beddb 100644
--- a/services/api/test/unit/collection_performance_test.rb
+++ b/services/api/test/unit/collection_performance_test.rb
@@ -43,7 +43,7 @@ class CollectionModelPerformanceTest < ActiveSupport::TestCase
         c.signed_manifest_text
       end
       time_block 'sign + render' do
-        resp = c.as_api_response(nil)
+        c.as_api_response(nil)
       end
       loc = Blob.sign_locator(Digest::MD5.hexdigest('foo') + '+3',
                               api_token: api_token(:active))
diff --git a/services/api/test/unit/collection_test.rb b/services/api/test/unit/collection_test.rb
index 9156892..1c85a71 100644
--- a/services/api/test/unit/collection_test.rb
+++ b/services/api/test/unit/collection_test.rb
@@ -28,7 +28,7 @@ class CollectionTest < ActiveSupport::TestCase
       c = create_collection "f\xc8o", Encoding::UTF_8
       assert !c.valid?
       assert_equal [:manifest_text], c.errors.messages.keys
-      assert_match /UTF-8/, c.errors.messages[:manifest_text].first
+      assert_match(/UTF-8/, c.errors.messages[:manifest_text].first)
     end
   end
 
@@ -37,7 +37,7 @@ class CollectionTest < ActiveSupport::TestCase
       c = create_collection "f\xc8o", Encoding::ASCII_8BIT
       assert !c.valid?
       assert_equal [:manifest_text], c.errors.messages.keys
-      assert_match /UTF-8/, c.errors.messages[:manifest_text].first
+      assert_match(/UTF-8/, c.errors.messages[:manifest_text].first)
     end
   end
 
@@ -107,11 +107,11 @@ class CollectionTest < ActiveSupport::TestCase
       assert c.valid?
       created_file_names = c.file_names
       assert created_file_names
-      assert_match /foo.txt/, c.file_names
+      assert_match(/foo.txt/, c.file_names)
 
       c.update_attribute 'manifest_text', ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:foo2.txt\n"
       assert_not_equal created_file_names, c.file_names
-      assert_match /foo2.txt/, c.file_names
+      assert_match(/foo2.txt/, c.file_names)
     end
   end
 
@@ -134,11 +134,11 @@ class CollectionTest < ActiveSupport::TestCase
 
         assert c.valid?
         assert c.file_names
-        assert_match /veryverylongfilename0000000000001.txt/, c.file_names
-        assert_match /veryverylongfilename0000000000002.txt/, c.file_names
+        assert_match(/veryverylongfilename0000000000001.txt/, c.file_names)
+        assert_match(/veryverylongfilename0000000000002.txt/, c.file_names)
         if not allow_truncate
-          assert_match /veryverylastfilename/, c.file_names
-          assert_match /laststreamname/, c.file_names
+          assert_match(/veryverylastfilename/, c.file_names)
+          assert_match(/laststreamname/, c.file_names)
         end
       end
     end
diff --git a/services/api/test/unit/commit_test.rb b/services/api/test/unit/commit_test.rb
index 301e071..a859416 100644
--- a/services/api/test/unit/commit_test.rb
+++ b/services/api/test/unit/commit_test.rb
@@ -18,7 +18,7 @@ class CommitTest < ActiveSupport::TestCase
   test 'find_commit_range does not bypass permissions' do
     authorize_with :inactive
     assert_raises ArgumentError do
-      c = Commit.find_commit_range 'foo', nil, 'master', []
+      Commit.find_commit_range 'foo', nil, 'master', []
     end
   end
 
@@ -68,10 +68,10 @@ class CommitTest < ActiveSupport::TestCase
     authorize_with :active
     gitint = "git --git-dir #{Rails.configuration.git_internal_dir}"
     IO.read("|#{gitint} tag -d testtag 2>/dev/null") # "no such tag", fine
-    assert_match /^fatal: /, IO.read("|#{gitint} show testtag 2>&1")
+    assert_match(/^fatal: /, IO.read("|#{gitint} show testtag 2>&1"))
     refute $?.success?
     Commit.tag_in_internal_repository 'active/foo', '31ce37fe365b3dc204300a3e4c396ad333ed0556', 'testtag'
-    assert_match /^commit 31ce37f/, IO.read("|#{gitint} show testtag")
+    assert_match(/^commit 31ce37f/, IO.read("|#{gitint} show testtag"))
     assert $?.success?
   end
 
diff --git a/services/api/test/unit/fail_jobs_test.rb b/services/api/test/unit/fail_jobs_test.rb
index c390b32..1f5847a 100644
--- a/services/api/test/unit/fail_jobs_test.rb
+++ b/services/api/test/unit/fail_jobs_test.rb
@@ -60,13 +60,13 @@ class FailJobsTest < ActiveSupport::TestCase
 
   test 'command line help' do
     cmd = Rails.root.join('script/fail-jobs.rb').to_s
-    assert_match /Options:.*--before=/m, File.popen([cmd, '--help']).read
+    assert_match(/Options:.*--before=/m, File.popen([cmd, '--help']).read)
   end
 
   protected
 
   def assert_end_states
-    @job.values.map &:reload
+    @job.values.map(&:reload)
     assert_equal 'Failed', @job[:before_reboot].state
     assert_equal false, @job[:before_reboot].running
     assert_equal false, @job[:before_reboot].success
diff --git a/services/api/test/unit/job_test.rb b/services/api/test/unit/job_test.rb
index 2d401a3..1f80ea5 100644
--- a/services/api/test/unit/job_test.rb
+++ b/services/api/test/unit/job_test.rb
@@ -185,7 +185,7 @@ class JobTest < ActiveSupport::TestCase
       # Ensure valid_attrs doesn't produce errors -- otherwise we will
       # not know whether errors reported below are actually caused by
       # invalid_attrs.
-      dummy = Job.create! job_attrs
+      Job.create! job_attrs
 
       job = Job.create job_attrs(invalid_attrs)
       assert_raises(ActiveRecord::RecordInvalid, ArgumentError,
@@ -411,7 +411,7 @@ class JobTest < ActiveSupport::TestCase
     }
     assert_raises(ActiveRecord::RecordInvalid,
                   "created job with a collection uuid in script_parameters") do
-      job = Job.create!(job_attrs(bad_params))
+      Job.create!(job_attrs(bad_params))
     end
   end
 
diff --git a/services/api/test/unit/log_test.rb b/services/api/test/unit/log_test.rb
index efbb189..92976e0 100644
--- a/services/api/test/unit/log_test.rb
+++ b/services/api/test/unit/log_test.rb
@@ -263,7 +263,7 @@ class LogTest < ActiveSupport::TestCase
     # appear too, but only if they are _not_ listed in known_logs
     # (i.e., we do not make any assertions about logs not mentioned in
     # either "known" or "expected".)
-    result_ids = result.collect &:id
+    result_ids = result.collect(&:id)
     expected_logs.each do |want|
       assert_includes result_ids, logs(want).id
     end
diff --git a/services/api/test/unit/node_test.rb b/services/api/test/unit/node_test.rb
index 6eb1df5..df8c22b 100644
--- a/services/api/test/unit/node_test.rb
+++ b/services/api/test/unit/node_test.rb
@@ -33,7 +33,7 @@ class NodeTest < ActiveSupport::TestCase
     conffile = Rails.root.join 'tmp', 'compute65535.conf'
     File.unlink conffile rescue nil
     assert Node.dns_server_update 'compute65535', '127.0.0.1'
-    assert_match /\"1\.0\.0\.127\.in-addr\.arpa\. IN PTR compute65535\.zzzzz\.arvadosapi\.com\"/, IO.read(conffile)
+    assert_match(/\"1\.0\.0\.127\.in-addr\.arpa\. IN PTR compute65535\.zzzzz\.arvadosapi\.com\"/, IO.read(conffile))
     File.unlink conffile
   end
 
diff --git a/services/api/test/unit/owner_test.rb b/services/api/test/unit/owner_test.rb
index c7f9776..6fcc316 100644
--- a/services/api/test/unit/owner_test.rb
+++ b/services/api/test/unit/owner_test.rb
@@ -27,7 +27,7 @@ class OwnerTest < ActiveSupport::TestCase
     test "create object with non-existent #{o_class} owner" do
       assert_raises(ActiveRecord::RecordInvalid,
                     "create should fail with random owner_uuid") do
-        i = Specimen.create!(owner_uuid: o_class.generate_uuid)
+        Specimen.create!(owner_uuid: o_class.generate_uuid)
       end
 
       i = Specimen.create(owner_uuid: o_class.generate_uuid)
@@ -89,7 +89,6 @@ class OwnerTest < ActiveSupport::TestCase
       o = eval ofixt
       assert_equal(true, Specimen.where(owner_uuid: o.uuid).any?,
                    "need something to be owned by #{o.uuid} for this test")
-      old_uuid = o.uuid
       new_uuid = o.uuid.sub(/..........$/, rand(2**256).to_s(36)[0..9])
       assert(!o.update_attributes(uuid: new_uuid),
              "should not change uuid of #{ofixt} that owns objects")
diff --git a/services/api/test/unit/permission_test.rb b/services/api/test/unit/permission_test.rb
index 5653a44..df11054 100644
--- a/services/api/test/unit/permission_test.rb
+++ b/services/api/test/unit/permission_test.rb
@@ -125,10 +125,10 @@ class PermissionTest < ActiveSupport::TestCase
     sp_grp = Group.create!
     sp = Specimen.create!(owner_uuid: sp_grp.uuid)
 
-    manage_perm = Link.create!(link_class: 'permission',
-                               name: 'can_manage',
-                               tail_uuid: owner_grp.uuid,
-                               head_uuid: sp_grp.uuid)
+    Link.create!(link_class: 'permission',
+                 name: 'can_manage',
+                 tail_uuid: owner_grp.uuid,
+                 head_uuid: sp_grp.uuid)
 
     # active user owns owner_grp, which has can_manage permission on sp_grp
     # user should be able to add permissions on sp.
@@ -137,7 +137,6 @@ class PermissionTest < ActiveSupport::TestCase
                             head_uuid: sp.uuid,
                             link_class: 'permission',
                             name: 'can_write')
-    test_uuid = test_perm.uuid
     assert test_perm.save, "could not save new permission on target object"
     assert test_perm.destroy, "could not delete new permission on target object"
   end
diff --git a/services/api/test/unit/pipeline_instance_test.rb b/services/api/test/unit/pipeline_instance_test.rb
index 93354f8..fc40d06 100644
--- a/services/api/test/unit/pipeline_instance_test.rb
+++ b/services/api/test/unit/pipeline_instance_test.rb
@@ -91,7 +91,6 @@ class PipelineInstanceTest < ActiveSupport::TestCase
     component2 = {'script_parameters' => {"something_else" => "xxxad4b39ca5a924e481008009d94e32+210", "input_missing" => {"required" => true}}}
     pi.components['first'] = component1
     pi.components['second'] = component2
-    components = pi.components
 
     Thread.current[:user] = users(:admin)
     pi.update_attribute 'components', pi.components
diff --git a/services/api/test/unit/salvage_collection_test.rb b/services/api/test/unit/salvage_collection_test.rb
index a269078..1381c8f 100644
--- a/services/api/test/unit/salvage_collection_test.rb
+++ b/services/api/test/unit/salvage_collection_test.rb
@@ -60,7 +60,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
     updated_name = updated_src_collection.name
     assert_equal true, updated_name.include?(src_collection.name)
 
-    match = updated_name.match /^test collection.*salvaged data at (.*)\)$/
+    match = updated_name.match(/^test collection.*salvaged data at (.*)\)$/)
     assert_not_nil match
     assert_not_nil match[1]
     assert_empty updated_src_collection.manifest_text
@@ -68,7 +68,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
     # match[1] is the uuid of the new collection created from src_collection's salvaged data
     # use this to get the new collection and verify
     new_collection = Collection.find_by_uuid match[1]
-    match = new_collection.name.match /^salvaged from (.*),.*/
+    match = new_collection.name.match(/^salvaged from (.*),.*/)
     assert_not_nil match
     assert_equal src_collection.uuid, match[1]
 
@@ -80,7 +80,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
   end
 
   test "salvage collection with no uuid required argument" do
-    e = assert_raises RuntimeError do
+    assert_raises RuntimeError do
       salvage_collection nil
     end
   end
@@ -107,7 +107,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
     e = assert_raises RuntimeError do
       salvage_collection collections('user_agreement').uuid
     end
-    assert_match /Error during arv-put: pid \d+ exit \d+ \(cmd was \"arv-put .*\"\)/, e.message
+    assert_match(/Error during arv-put: pid \d+ exit \d+ \(cmd was \"arv-put .*\"\)/, e.message)
   end
 
   # This test uses BAD_MANIFEST, which has the following flaws:
@@ -146,7 +146,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
     updated_name = updated_src_collection.name
     assert_equal true, updated_name.include?(src_collection.name)
 
-    match = updated_name.match /^test collection.*salvaged data at (.*)\)$/
+    match = updated_name.match(/^test collection.*salvaged data at (.*)\)$/)
     assert_not_nil match
     assert_not_nil match[1]
     assert_empty updated_src_collection.manifest_text
@@ -154,7 +154,7 @@ class SalvageCollectionTest < ActiveSupport::TestCase
     # match[1] is the uuid of the new collection created from src_collection's salvaged data
     # use this to get the new collection and verify
     new_collection = Collection.find_by_uuid match[1]
-    match = new_collection.name.match /^salvaged from (.*),.*/
+    match = new_collection.name.match(/^salvaged from (.*),.*/)
     assert_not_nil match
     assert_equal src_collection.uuid, match[1]
     # verify the new collection's manifest includes the bad locators
diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb
index 4df6cc0..0d66a4b 100644
--- a/services/api/test/unit/user_test.rb
+++ b/services/api/test/unit/user_test.rb
@@ -136,7 +136,6 @@ class UserTest < ActiveSupport::TestCase
   test "admin can't clear username when user owns repositories" do
     set_user_from_auth :admin
     user = users(:active)
-    start_username = user.username
     user.username = nil
     assert_not_allowed { user.save }
     refute_empty(user.errors[:username])

commit 03406083ed63e5a0c118216e3e33fc8823c808a7
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 19:45:55 2016 -0300

    5737: Fixed a bug in container reuse test code.

diff --git a/services/api/test/unit/container_test.rb b/services/api/test/unit/container_test.rb
index 4fd9f8e..ef64eff 100644
--- a/services/api/test/unit/container_test.rb
+++ b/services/api/test/unit/container_test.rb
@@ -102,8 +102,9 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select higher priority queued container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment:{"var" => "queued"}})
-    c_low_priority, _ = minimal_new(common_attrs.merge({priority:1}))
-    c_high_priority, _ = minimal_new(common_attrs.merge({priority:2}))
+    c_low_priority, _ = minimal_new(common_attrs.merge({use_existing:false, priority:1}))
+    c_high_priority, _ = minimal_new(common_attrs.merge({use_existing:false, priority:2}))
+    assert_not_equal c_low_priority.uuid, c_high_priority.uuid
     assert_equal Container::Queued, c_low_priority.state
     assert_equal Container::Queued, c_high_priority.state
     reused = Container.find_reusable(common_attrs)
@@ -121,8 +122,9 @@ class ContainerTest < ActiveSupport::TestCase
       output: '1f4b0bc7583c2a7f9102c395f4ffc5e3+45'
     }
 
-    c_older, _ = minimal_new(common_attrs)
-    c_recent, _ = minimal_new(common_attrs)
+    c_older, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_recent, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    assert_not_equal c_older.uuid, c_recent.uuid
 
     set_user_from_auth :dispatch1
     c_older.update_attributes!({state: Container::Locked})
@@ -151,6 +153,7 @@ class ContainerTest < ActiveSupport::TestCase
 
     c_output1 = Container.create common_attrs
     c_output2 = Container.create common_attrs
+    assert_not_equal c_output1.uuid, c_output2.uuid
 
     cr = ContainerRequest.new common_attrs
     cr.state = ContainerRequest::Committed
@@ -177,9 +180,11 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select running container by start date" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "running"}})
-    c_slower, _ = minimal_new(common_attrs)
-    c_faster_started_first, _ = minimal_new(common_attrs)
-    c_faster_started_second, _ = minimal_new(common_attrs)
+    c_slower, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_faster_started_first, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_faster_started_second, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    # Confirm the 3 container UUIDs are different.
+    assert_equal 3, [c_slower.uuid, c_faster_started_first.uuid, c_faster_started_second.uuid].uniq.length
     set_user_from_auth :dispatch1
     c_slower.update_attributes!({state: Container::Locked})
     c_slower.update_attributes!({state: Container::Running,
@@ -199,9 +204,11 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select running container by progress" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "running2"}})
-    c_slower, _ = minimal_new(common_attrs)
-    c_faster_started_first, _ = minimal_new(common_attrs)
-    c_faster_started_second, _ = minimal_new(common_attrs)
+    c_slower, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_faster_started_first, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_faster_started_second, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    # Confirm the 3 container UUIDs are different.
+    assert_equal 3, [c_slower.uuid, c_faster_started_first.uuid, c_faster_started_second.uuid].uniq.length
     set_user_from_auth :dispatch1
     c_slower.update_attributes!({state: Container::Locked})
     c_slower.update_attributes!({state: Container::Running,
@@ -221,9 +228,11 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select locked container most likely to start sooner" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "locked"}})
-    c_low_priority, _ = minimal_new(common_attrs)
-    c_high_priority_older, _ = minimal_new(common_attrs)
-    c_high_priority_newer, _ = minimal_new(common_attrs)
+    c_low_priority, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_high_priority_older, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_high_priority_newer, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    # Confirm the 3 container UUIDs are different.
+    assert_equal 3, [c_low_priority.uuid, c_high_priority_older.uuid, c_high_priority_newer.uuid].uniq.length
     set_user_from_auth :dispatch1
     c_low_priority.update_attributes!({state: Container::Locked,
                                        priority: 1})
@@ -239,8 +248,9 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select running over failed container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "failed_vs_running"}})
-    c_failed, _ = minimal_new(common_attrs)
-    c_running, _ = minimal_new(common_attrs)
+    c_failed, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_running, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    assert_not_equal c_failed.uuid, c_running.uuid
     set_user_from_auth :dispatch1
     c_failed.update_attributes!({state: Container::Locked})
     c_failed.update_attributes!({state: Container::Running})
@@ -259,8 +269,9 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select complete over running container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "completed_vs_running"}})
-    c_completed, _ = minimal_new(common_attrs)
-    c_running, _ = minimal_new(common_attrs)
+    c_completed, cr1 = minimal_new(common_attrs.merge({use_existing: false}))
+    c_running, cr2 = minimal_new(common_attrs.merge({use_existing: false}))
+    assert_not_equal c_completed.uuid, c_running.uuid
     set_user_from_auth :dispatch1
     c_completed.update_attributes!({state: Container::Locked})
     c_completed.update_attributes!({state: Container::Running})
@@ -279,8 +290,9 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select running over locked container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "running_vs_locked"}})
-    c_locked, _ = minimal_new(common_attrs)
-    c_running, _ = minimal_new(common_attrs)
+    c_locked, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_running, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    assert_not_equal c_running.uuid, c_locked.uuid
     set_user_from_auth :dispatch1
     c_locked.update_attributes!({state: Container::Locked})
     c_running.update_attributes!({state: Container::Locked})
@@ -294,8 +306,9 @@ class ContainerTest < ActiveSupport::TestCase
   test "find_reusable method should select locked over queued container" do
     set_user_from_auth :active
     common_attrs = REUSABLE_COMMON_ATTRS.merge({environment: {"var" => "running_vs_locked"}})
-    c_locked, _ = minimal_new(common_attrs)
-    c_queued, _ = minimal_new(common_attrs)
+    c_locked, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    c_queued, _ = minimal_new(common_attrs.merge({use_existing: false}))
+    assert_not_equal c_queued.uuid, c_locked.uuid
     set_user_from_auth :dispatch1
     c_locked.update_attributes!({state: Container::Locked})
     reused = Container.find_reusable(common_attrs)

commit a12d68dd2e2646beb4ae68e4dd0825272e279508
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 16:54:25 2016 -0300

    5737: Fixes to remove ruby warnings when running collection api integration tests

diff --git a/services/api/test/integration/collections_api_test.rb b/services/api/test/integration/collections_api_test.rb
index 0bedc07..5f55f5e 100644
--- a/services/api/test/integration/collections_api_test.rb
+++ b/services/api/test/integration/collections_api_test.rb
@@ -21,7 +21,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
       :filters => ['uuid', '=', 'ad02e37b6a7f45bbe2ead3c29a109b8a+54'].to_json
     }, auth(:active)
     assert_response 422
-    assert_match /nvalid element.*not an array/, json_response['errors'].join(' ')
+    assert_match(/nvalid element.*not an array/, json_response['errors'].join(' '))
   end
 
   test "get index with invalid filters (unsearchable column) responds 422" do
@@ -30,7 +30,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
       :filters => [['this_column_does_not_exist', '=', 'bogus']].to_json
     }, auth(:active)
     assert_response 422
-    assert_match /nvalid attribute/, json_response['errors'].join(' ')
+    assert_match(/nvalid attribute/, json_response['errors'].join(' '))
   end
 
   test "get index with invalid filters (invalid operator) responds 422" do
@@ -39,7 +39,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
       :filters => [['uuid', ':-(', 'displeased']].to_json
     }, auth(:active)
     assert_response 422
-    assert_match /nvalid operator/, json_response['errors'].join(' ')
+    assert_match(/nvalid operator/, json_response['errors'].join(' '))
   end
 
   test "get index with invalid filters (invalid operand type) responds 422" do
@@ -48,7 +48,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
       :filters => [['uuid', '=', {foo: 'bar'}]].to_json
     }, auth(:active)
     assert_response 422
-    assert_match /nvalid operand type/, json_response['errors'].join(' ')
+    assert_match(/nvalid operand type/, json_response['errors'].join(' '))
   end
 
   test "get index with where= (empty string)" do
@@ -73,7 +73,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
           :select => ['bogus'].to_json
         }, auth(:active)
     assert_response 422
-    assert_match /Invalid attribute.*bogus/, json_response['errors'].join(' ')
+    assert_match(/Invalid attribute.*bogus/, json_response['errors'].join(' '))
   end
 
   test "get index with select= (invalid attribute type) responds 422" do
@@ -82,7 +82,7 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
           :select => [['bogus']].to_json
         }, auth(:active)
     assert_response 422
-    assert_match /Invalid attribute.*bogus/, json_response['errors'].join(' ')
+    assert_match(/Invalid attribute.*bogus/, json_response['errors'].join(' '))
   end
 
   test "controller 404 response is json" do
@@ -243,8 +243,6 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_equal true, json_response['manifest_text'].include?('file4_in_subdir4.txt')
 
-    created = json_response
-
     # search using the filename
     search_using_full_text_search 'subdir2', 0
     search_using_full_text_search 'subdir2:*', 1

commit 8f39c027e4895a8d872093c3dd16aa51b26a3731
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 16:29:17 2016 -0300

    5737: Fixes to remove ruby warnings when running websocket integration tests.

diff --git a/services/api/app/controllers/application_controller.rb b/services/api/app/controllers/application_controller.rb
index 4e3b5b8..d58c432 100644
--- a/services/api/app/controllers/application_controller.rb
+++ b/services/api/app/controllers/application_controller.rb
@@ -46,7 +46,7 @@ class ApplicationController < ActionController::Base
 
   theme :select_theme
 
-  attr_accessor :resource_attrs
+  attr_writer :resource_attrs
 
   begin
     rescue_from(Exception,
@@ -432,7 +432,7 @@ class ApplicationController < ActionController::Base
   end
 
   def find_object_by_uuid
-    if params[:id] and params[:id].match /\D/
+    if params[:id] and params[:id].match(/\D/)
       params[:uuid] = params.delete :id
     end
     @where = { uuid: params[:uuid] }
@@ -579,7 +579,7 @@ class ApplicationController < ActionController::Base
         }
       end
     end
-    super *opts
+    super(*opts)
   end
 
   def select_theme
diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb
index 922cf7d..017c023 100644
--- a/services/api/app/controllers/arvados/v1/collections_controller.rb
+++ b/services/api/app/controllers/arvados/v1/collections_controller.rb
@@ -125,9 +125,9 @@ class Arvados::V1::CollectionsController < ApplicationController
           visited[uuid] = job.as_api_response
           if direction == :search_up
             # Follow upstream collections referenced in the script parameters
-            find_collections(visited, job) do |hash, uuid|
+            find_collections(visited, job) do |hash, col_uuid|
               search_edges(visited, hash, :search_up) if hash
-              search_edges(visited, uuid, :search_up) if uuid
+              search_edges(visited, col_uuid, :search_up) if col_uuid
             end
           elsif direction == :search_down
             # Follow downstream job output
diff --git a/services/api/app/controllers/arvados/v1/schema_controller.rb b/services/api/app/controllers/arvados/v1/schema_controller.rb
index 2c55b15..5f43ba8 100644
--- a/services/api/app/controllers/arvados/v1/schema_controller.rb
+++ b/services/api/app/controllers/arvados/v1/schema_controller.rb
@@ -85,7 +85,7 @@ class Arvados::V1::SchemaController < ApplicationController
       if Rails.application.config.websocket_address
         discovery[:websocketUrl] = Rails.application.config.websocket_address
       elsif ENV['ARVADOS_WEBSOCKETS']
-        discovery[:websocketUrl] = (root_url.sub /^http/, 'ws') + "websocket"
+        discovery[:websocketUrl] = root_url.sub(/^http/, 'ws') + "websocket"
       end
 
       ActiveRecord::Base.descendants.reject(&:abstract_class?).each do |k|
@@ -377,21 +377,21 @@ class Arvados::V1::SchemaController < ApplicationController
               method = d_methods[action.to_sym]
             end
             if ctl_class.respond_to? "_#{action}_requires_parameters".to_sym
-              ctl_class.send("_#{action}_requires_parameters".to_sym).each do |k, v|
+              ctl_class.send("_#{action}_requires_parameters".to_sym).each do |l, v|
                 if v.is_a? Hash
-                  method[:parameters][k] = v
+                  method[:parameters][l] = v
                 else
-                  method[:parameters][k] = {}
+                  method[:parameters][l] = {}
                 end
-                if !method[:parameters][k][:default].nil?
+                if !method[:parameters][l][:default].nil?
                   # The JAVA SDK is sensitive to all values being strings
-                  method[:parameters][k][:default] = method[:parameters][k][:default].to_s
+                  method[:parameters][l][:default] = method[:parameters][l][:default].to_s
                 end
-                method[:parameters][k][:type] ||= 'string'
-                method[:parameters][k][:description] ||= ''
-                method[:parameters][k][:location] = (route.segment_keys.include?(k) ? 'path' : 'query')
-                if method[:parameters][k][:required].nil?
-                  method[:parameters][k][:required] = v != false
+                method[:parameters][l][:type] ||= 'string'
+                method[:parameters][l][:description] ||= ''
+                method[:parameters][l][:location] = (route.segment_keys.include?(l) ? 'path' : 'query')
+                if method[:parameters][l][:required].nil?
+                  method[:parameters][l][:required] = v != false
                 end
               end
             end
diff --git a/services/api/app/controllers/arvados/v1/user_agreements_controller.rb b/services/api/app/controllers/arvados/v1/user_agreements_controller.rb
index 32adde9..f23cd98 100644
--- a/services/api/app/controllers/arvados/v1/user_agreements_controller.rb
+++ b/services/api/app/controllers/arvados/v1/user_agreements_controller.rb
@@ -17,7 +17,6 @@ class Arvados::V1::UserAgreementsController < ApplicationController
       # use this installation.
       @objects = []
     else
-      current_user_uuid = current_user.uuid
       act_as_system_user do
         uuids = Link.where("owner_uuid = ? and link_class = ? and name = ? and tail_uuid = ? and head_uuid like ?",
                            system_user_uuid,
@@ -25,7 +24,7 @@ class Arvados::V1::UserAgreementsController < ApplicationController
                            'require',
                            system_user_uuid,
                            Collection.uuid_like_pattern).
-          collect &:head_uuid
+          collect(&:head_uuid)
         @objects = Collection.where('uuid in (?)', uuids)
       end
     end
diff --git a/services/api/app/controllers/arvados/v1/users_controller.rb b/services/api/app/controllers/arvados/v1/users_controller.rb
index 03efed9..db5e7bd 100644
--- a/services/api/app/controllers/arvados/v1/users_controller.rb
+++ b/services/api/app/controllers/arvados/v1/users_controller.rb
@@ -159,7 +159,7 @@ class Arvados::V1::UsersController < ApplicationController
   end
 
   def apply_filters(model_class=nil)
-    return super if @read_users.any? &:is_admin
+    return super if @read_users.any?(&:is_admin)
     if params[:uuid] != current_user.andand.uuid
       # Non-admin index/show returns very basic information about readable users.
       safe_attrs = ["uuid", "is_active", "email", "first_name", "last_name"]
diff --git a/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb b/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb
index e6474aa..99b663d 100644
--- a/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb
+++ b/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb
@@ -23,7 +23,7 @@ class Arvados::V1::VirtualMachinesController < ApplicationController
     @users = {}
     User.eager_load(:authorized_keys).
       where('users.uuid in (?)',
-            @vms.map { |vm| vm.login_permissions.map &:tail_uuid }.flatten.uniq).
+            @vms.map { |vm| vm.login_permissions.map(&:tail_uuid) }.flatten.uniq).
       each do |u|
       @users[u.uuid] = u
     end
diff --git a/services/api/app/controllers/database_controller.rb b/services/api/app/controllers/database_controller.rb
index 21c8e47..6699f73 100644
--- a/services/api/app/controllers/database_controller.rb
+++ b/services/api/app/controllers/database_controller.rb
@@ -11,7 +11,7 @@ class DatabaseController < ApplicationController
     # we can tell they're not valuable.
     user_uuids = User.
       where('email is null or email not like ?', '%@example.com').
-      collect &:uuid
+      collect(&:uuid)
     fixture_uuids =
       YAML::load_file(File.expand_path('../../../test/fixtures/users.yml',
                                        __FILE__)).
diff --git a/services/api/config/initializers/preload_all_models.rb b/services/api/config/initializers/preload_all_models.rb
index 7e26123..1ae531c 100644
--- a/services/api/config/initializers/preload_all_models.rb
+++ b/services/api/config/initializers/preload_all_models.rb
@@ -7,6 +7,6 @@ require_relative 'load_config.rb'
 
 if Rails.env == 'development'
   Dir.foreach("#{Rails.root}/app/models") do |model_file|
-    require_dependency model_file if model_file.match /\.rb$/
+    require_dependency model_file if model_file.match(/\.rb$/)
   end
 end
diff --git a/services/api/test/factories/user.rb b/services/api/test/factories/user.rb
index 6ec9e9f..a0e5ad9 100644
--- a/services/api/test/factories/user.rb
+++ b/services/api/test/factories/user.rb
@@ -4,7 +4,7 @@ end
 
 FactoryGirl.define do
   factory :user do
-    ignore do
+    transient do
       join_groups []
     end
     after :create do |user, evaluator|
diff --git a/services/api/test/integration/websocket_test.rb b/services/api/test/integration/websocket_test.rb
index 0822a67..a9993b2 100644
--- a/services/api/test/integration/websocket_test.rb
+++ b/services/api/test/integration/websocket_test.rb
@@ -337,8 +337,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   test "connect, subscribe, ask events starting at seq num" do
     state = 1
-    human = nil
-    human_ev_uuid = nil
 
     authorize_with :active
 
@@ -381,7 +379,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
     state = 1
     spec = nil
     spec_ev_uuid = nil
-    filter_id = nil
 
     authorize_with :active
 
@@ -684,7 +681,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
           assert_equal 200, d["status"]
           ActiveRecord::Base.transaction do
             (1..202).each do
-              spec = Specimen.create
+              Specimen.create
             end
           end
           state = 2
@@ -705,8 +702,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   test "connect, subscribe with invalid filter" do
     state = 1
-    human = nil
-    human_ev_uuid = nil
 
     authorize_with :active
 
@@ -722,7 +717,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
         when 1
           assert_equal 200, d["status"]
           Specimen.create
-          human = Human.create
+          Human.create
           state = 2
         when 2
           assert_equal 500, d["status"]
diff --git a/services/api/test/test_helper.rb b/services/api/test/test_helper.rb
index 8041347..86bc239 100644
--- a/services/api/test/test_helper.rb
+++ b/services/api/test/test_helper.rb
@@ -84,7 +84,7 @@ class ActiveSupport::TestCase
   def restore_configuration
     # Restore configuration settings changed during tests
     $application_config.each do |k,v|
-      if k.match /^[^.]*$/
+      if k.match(/^[^.]*$/)
         Rails.configuration.send (k + '='), v
       end
     end

commit 1bb30a981efa038bf07f139f996eb9d77749fced
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 14:50:44 2016 -0300

    5737: Explicitly passing PID file path to passenger so that the tests pass again.

diff --git a/services/api/test/integration/websocket_test.rb b/services/api/test/integration/websocket_test.rb
index 8fd9685..0822a67 100644
--- a/services/api/test/integration/websocket_test.rb
+++ b/services/api/test/integration/websocket_test.rb
@@ -19,19 +19,20 @@ class WebsocketTest < ActionDispatch::IntegrationTest
     s = TCPServer.new('0.0.0.0', 0)
     @@port = s.addr[1]
     s.close
-    pidfile = "tmp/pids/passenger.#{@@port}.pid"
+    @@pidfile = "tmp/pids/passenger.#{@@port}.pid"
     DatabaseCleaner.start
     Dir.chdir(Rails.root) do |apidir|
       # Only passenger seems to be able to run the websockets server
       # successfully.
       _system('passenger', 'start', '-d',
               "-p#{@@port}",
-              "--log-file", "/dev/stderr")
+              "--log-file", "/dev/stderr",
+              "--pid-file", @@pidfile)
       timeout = Time.now.tv_sec + 10
       begin
         sleep 0.2
         begin
-          server_pid = IO.read(pidfile).to_i
+          server_pid = IO.read(@@pidfile).to_i
           good_pid = (server_pid > 0) and (Process.kill(0, pid) rescue false)
         rescue Errno::ENOENT
           good_pid = false
@@ -46,7 +47,8 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   def self.shutdown
     Dir.chdir(Rails.root) do
-      _system('passenger', 'stop', "-p#{@@port}")
+      _system('passenger', 'stop', "-p#{@@port}",
+              "--pid-file", @@pidfile)
     end
     # DatabaseCleaner leaves the database empty. Prefer to leave it full.
     dc = DatabaseController.new

commit 1d45a45d1a1ebb0c02b4a9dd7ece73a55a6b24db
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Mon Nov 28 14:49:23 2016 -0300

    5737: Removed minitest: it wasn't really running the tests.

diff --git a/services/api/Gemfile b/services/api/Gemfile
index 7be039e..88237c9 100644
--- a/services/api/Gemfile
+++ b/services/api/Gemfile
@@ -13,8 +13,6 @@ group :test, :development do
   # 'require' the packages during application startup. Installation is
   # still mandatory.
   gem 'test-unit', '~> 3.0', require: false
-  gem 'minitest-rails', require: false
-  gem 'minitest', '~> 4.0', require: false
   gem 'simplecov', '~> 0.7.1', require: false
   gem 'simplecov-rcov', require: false
   gem 'mocha', require: false
diff --git a/services/api/Gemfile.lock b/services/api/Gemfile.lock
index 3e551a0..9c9c4ae 100644
--- a/services/api/Gemfile.lock
+++ b/services/api/Gemfile.lock
@@ -132,13 +132,6 @@ GEM
     memoist (0.15.0)
     metaclass (0.0.4)
     mime-types (1.25.1)
-    minitest (4.7.5)
-    minitest-rails (1.0.1)
-      minitest (~> 4.7)
-      minitest-test (~> 1.0)
-      railties (>= 3.0, < 4.1)
-    minitest-test (1.1.0)
-      minitest (~> 4.0)
     mocha (1.2.0)
       metaclass (~> 0.0.1)
     multi_json (1.12.1)
@@ -259,15 +252,13 @@ DEPENDENCIES
   andand
   arvados (>= 0.1.20150615153458)
   arvados-cli (>= 0.1.20161017193526)
-  coffee-rails (~> 3.2.0)
+  coffee-rails (~> 3.2)
   database_cleaner
   factory_girl_rails
   faye-websocket
   jquery-rails
   lograge
   logstash-event
-  minitest (~> 4.0)
-  minitest-rails
   mocha
   multi_json
   oj
@@ -293,4 +284,4 @@ DEPENDENCIES
   uglifier (~> 2.0)
 
 BUNDLED WITH
-   1.13.2
+   1.13.6
diff --git a/services/api/test/test_helper.rb b/services/api/test/test_helper.rb
index d998c92..8041347 100644
--- a/services/api/test/test_helper.rb
+++ b/services/api/test/test_helper.rb
@@ -21,10 +21,7 @@ unless ENV["NO_COVERAGE_TEST"]
 end
 
 require File.expand_path('../../config/environment', __FILE__)
-gem 'minitest'
 require 'rails/test_help'
-require 'minitest-rails'
-require 'minitest/autorun'
 require 'mocha'
 
 module ArvadosTestSupport

commit 09a2e88c51e5432e607f2a38466e55b4ba15e887
Merge: 72912c6 5debe2b
Author: Lucas Di Pentima <lucas at curoverse.com>
Date:   Tue Nov 22 13:40:45 2016 -0300

    5737: Merge branch 'master' into 5737-ruby231

diff --cc services/api/app/models/node.rb
index c16e59a,e470e4c..1855020
--- a/services/api/app/models/node.rb
+++ b/services/api/app/models/node.rb
@@@ -226,10 -226,10 +230,10 @@@ class Node < ArvadosMode
      (0..Rails.configuration.max_compute_nodes-1).each do |slot_number|
        hostname = hostname_for_slot(slot_number)
        hostfile = File.join Rails.configuration.dns_server_conf_dir, "#{hostname}.conf"
 -      if !File.exists? hostfile
 +      if !File.exist? hostfile
          n = Node.where(:slot_number => slot_number).first
          if n.nil? or n.ip_address.nil?
-           dns_server_update(hostname, '127.40.4.0')
+           dns_server_update(hostname, UNUSED_NODE_IP)
          else
            dns_server_update(hostname, n.ip_address)
          end

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list