[ARVADOS] updated: 050be6a5be43ab503820955dbca2751ca368063c

Git user git at public.curoverse.com
Wed Jun 14 15:48:48 EDT 2017


Summary of changes:
 .licenseignore                                     |  46 ++
 apps/workbench/app/assets/images/trash-icon.png    | Bin 0 -> 18381 bytes
 .../workbench/app/assets/javascripts/filterable.js |   3 +-
 .../app/assets/javascripts/select_modal.js         |   1 +
 .../app/assets/javascripts/selection.js.erb        |   4 +
 .../app/controllers/application_controller.rb      |   7 +
 .../controllers/container_requests_controller.rb   |  92 ++-
 .../app/controllers/keep_disks_controller.rb       |   1 +
 .../workbench/app/controllers/search_controller.rb |   2 +
 .../app/controllers/trash_items_controller.rb      |  88 +++
 apps/workbench/app/controllers/users_controller.rb |   1 +
 .../app/controllers/workflows_controller.rb        |   4 +
 apps/workbench/app/helpers/application_helper.rb   |   8 +
 .../app/helpers/pipeline_instances_helper.rb       |   2 +-
 apps/workbench/app/helpers/provenance_helper.rb    |  73 +-
 apps/workbench/app/models/arvados_base.rb          |  12 +
 apps/workbench/app/models/arvados_resource_list.rb |  19 +
 apps/workbench/app/models/collection.rb            |   3 +
 apps/workbench/app/models/container.rb             |   4 +-
 apps/workbench/app/models/container_request.rb     |   4 +-
 apps/workbench/app/models/container_work_unit.rb   |  44 +-
 apps/workbench/app/models/job.rb                   |   2 +-
 apps/workbench/app/models/pipeline_instance.rb     |   7 +-
 apps/workbench/app/models/proxy_work_unit.rb       |  41 +-
 apps/workbench/app/models/work_unit.rb             |   4 +
 apps/workbench/app/models/workflow.rb              |   8 +
 .../app/views/application/_breadcrumbs.html.erb    |   7 +
 .../application/_show_text_with_locators.html.erb  |  31 +
 .../_extra_tab_line_buttons.html.erb               |  50 +-
 .../_show_provenance.html.erb                      |   4 +-
 .../_show_recent.html.erb                          |  24 +-
 .../container_requests/_show_recent_rows.html.erb  |  36 +
 .../app/views/container_requests/index.html.erb    |  11 +
 .../app/views/projects/_show_dashboard.html.erb    |  24 +-
 .../trash_items/_create_new_object_button.html.erb |   1 +
 .../views/trash_items/_show_recent_trash.html.erb  |  54 ++
 .../views/trash_items/_show_trash_rows.html.erb    |  32 +
 .../app/views/trash_items/_untrash_item.html.erb   |   7 +
 .../workbench/app/views/trash_items/index.html.erb |   1 +
 .../untrash_items.js.erb}                          |   3 +-
 .../app/views/users/_show_activity.html.erb        |   2 +-
 .../views/work_units/_component_detail.html.erb    |  97 ++-
 .../views/work_units/_show_all_processes.html.erb  |   2 +-
 .../app/views/work_units/_show_child.html.erb      |   5 +-
 .../app/views/work_units/_show_status.html.erb     |  19 +-
 .../app/views/work_units/_show_table_data.html.erb |  14 +
 .../app/views/workflows/_show_definition.html.erb  |  48 ++
 .../app/views/workflows/_show_recent.html.erb      |  65 ++
 apps/workbench/app/views/workflows/show.html.erb   |  20 +
 apps/workbench/config/routes.rb                    |   5 +
 apps/workbench/fpm-info.sh                         |   9 +-
 .../controllers/application_controller_test.rb     |   2 +-
 .../container_requests_controller_test.rb          |  96 ++-
 .../test/controllers/search_controller_test.rb     |  23 +
 .../test/controllers/workflows_controller_test.rb  |  12 +
 .../test/integration/container_requests_test.rb    |  40 ++
 apps/workbench/test/integration/trash_test.rb      |  79 +++
 apps/workbench/test/integration/work_units_test.rb |  41 ++
 .../test/unit/arvados_resource_list_test.rb        |   8 +
 apps/workbench/test/unit/link_test.rb              |   3 +
 apps/workbench/test/unit/pipeline_instance_test.rb |   3 +
 apps/workbench/test/unit/work_unit_test.rb         |   7 +-
 build/check-copyright-notices                      | 201 ++++++
 build/{libcloud-pin => libcloud-pin.sh}            |   0
 .../ubuntu1604/Dockerfile                          |   2 +-
 build/run-build-packages-one-target.sh             |   8 +
 build/run-build-packages-python-and-ruby.sh        |   2 +-
 build/run-build-packages.sh                        |   2 +-
 build/run-library.sh                               |   8 +-
 build/run-tests.sh                                 | 131 ++--
 doc/Rakefile                                       |   3 +-
 doc/api/methods/groups.html.textile.liquid         |   1 +
 ...nstall-manual-prerequisites.html.textile.liquid |  11 +-
 doc/install/migrate-docker19.html.textile.liquid   |   9 +-
 doc/start/index.html.textile.liquid.bkup           |  50 --
 doc/user/cwl/cwl-extensions.html.textile.liquid    |  17 +-
 doc/user/cwl/cwl-run-options.html.textile.liquid   |  20 +
 doc/user/cwl/cwl-runner.html.textile.liquid        |   2 +-
 doc/user/cwl/cwl-style.html.textile.liquid         |   5 +
 sdk/cli/bin/crunch-job                             |   8 +-
 sdk/cwl/arvados_cwl/__init__.py                    |  76 ++-
 sdk/cwl/arvados_cwl/arv-cwl-schema.yml             |  35 +
 sdk/cwl/arvados_cwl/arvcontainer.py                | 120 +++-
 sdk/cwl/arvados_cwl/arvjob.py                      |   9 +-
 sdk/cwl/arvados_cwl/arvworkflow.py                 |   5 +-
 sdk/cwl/arvados_cwl/crunch_script.py               |   8 +-
 sdk/cwl/arvados_cwl/fsaccess.py                    |   7 +-
 sdk/cwl/arvados_cwl/pathmapper.py                  |  81 ++-
 sdk/cwl/arvados_cwl/runner.py                      |  28 +-
 sdk/cwl/setup.py                                   |   9 +-
 sdk/cwl/test_with_arvbox.sh                        |  14 +-
 .../cwl/tests/collection_per_tool/a.txt            |   0
 .../cwl/tests/collection_per_tool/b.txt            |   0
 .../cwl/tests/collection_per_tool/c.txt            |   0
 .../collection_per_tool/collection_per_tool.cwl    |  13 +
 .../collection_per_tool_packed.cwl                 |  45 ++
 sdk/cwl/tests/collection_per_tool/step1.cwl        |  15 +
 sdk/cwl/tests/collection_per_tool/step2.cwl        |  15 +
 sdk/cwl/tests/test_container.py                    | 253 +++++--
 sdk/cwl/tests/test_job.py                          |   2 +-
 sdk/cwl/tests/test_pathmapper.py                   |  23 +-
 sdk/cwl/tests/test_submit.py                       | 164 +++--
 sdk/cwl/tests/wf/expect_packed.cwl                 |   4 +-
 sdk/cwl/tests/wf/submit_wf_packed.cwl              |   2 +-
 sdk/go/arvados/client.go                           |  19 +-
 sdk/go/arvados/container.go                        |   1 +
 sdk/go/arvadosclient/arvadosclient.go              |  98 +--
 sdk/go/arvadosclient/arvadosclient_test.go         |  25 +-
 sdk/go/crunchrunner/crunchrunner.go                |  66 +-
 sdk/go/crunchrunner/crunchrunner_test.go           |  51 +-
 sdk/go/dispatch/throttle_test.go                   |  29 +-
 sdk/go/keepclient/block_cache.go                   |   4 +
 sdk/go/keepclient/discover.go                      | 199 ++++--
 sdk/go/keepclient/discover_test.go                 |  17 +-
 sdk/go/keepclient/hashcheck.go                     |  10 +-
 sdk/go/keepclient/keepclient.go                    | 187 ++++--
 sdk/go/keepclient/keepclient_test.go               |  37 +-
 sdk/go/keepclient/support.go                       |  87 +--
 sdk/go/manifest/manifest.go                        |   1 -
 sdk/python/arvados/__init__.py                     |  55 +-
 sdk/python/arvados/_normalize_stream.py            |   5 +-
 sdk/python/arvados/_ranges.py                      |  16 +-
 sdk/python/arvados/api.py                          |  21 +-
 sdk/python/arvados/arvfile.py                      | 344 ++++++----
 sdk/python/arvados/cache.py                        |   9 +-
 sdk/python/arvados/collection.py                   | 108 +--
 sdk/python/arvados/commands/_util.py               |   2 -
 sdk/python/arvados/commands/arv_copy.py            |  24 +-
 sdk/python/arvados/commands/get.py                 |  22 +-
 sdk/python/arvados/commands/keepdocker.py          |  11 +-
 sdk/python/arvados/commands/ls.py                  |   5 +-
 sdk/python/arvados/commands/migrate19.py           |  21 +-
 sdk/python/arvados/commands/put.py                 | 111 ++-
 sdk/python/arvados/commands/run.py                 |  83 +--
 sdk/python/arvados/commands/ws.py                  |   5 +-
 sdk/python/arvados/crunch.py                       |   1 +
 sdk/python/arvados/errors.py                       |   4 +-
 sdk/python/arvados/events.py                       |  31 +-
 sdk/python/arvados/keep.py                         | 104 +--
 sdk/python/arvados/retry.py                        |   8 +-
 sdk/python/arvados/safeapi.py                      |  14 +-
 sdk/python/arvados/stream.py                       |  30 +-
 sdk/python/arvados/timer.py                        |   4 +-
 sdk/python/arvados/util.py                         |   8 +-
 sdk/python/bin/arv-get                             |   2 +-
 sdk/python/setup.py                                |   9 +-
 sdk/python/tests/arvados_testutil.py               |  77 ++-
 sdk/python/tests/keepstub.py                       | 130 ++--
 sdk/python/tests/manifest_examples.py              |   5 +-
 .../tests/performance/performance_profiler.py      |  14 +-
 sdk/python/tests/performance/test_a_sample.py      |   7 +-
 sdk/python/tests/run_test_server.py                |  18 +-
 sdk/python/tests/test_api.py                       |  27 +-
 sdk/python/tests/test_arv_copy.py                  |  17 +-
 sdk/python/tests/test_arv_get.py                   |  81 ++-
 sdk/python/tests/test_arv_keepdocker.py            |  39 +-
 sdk/python/tests/test_arv_ls.py                    |  25 +-
 sdk/python/tests/test_arv_normalize.py             |  25 +-
 sdk/python/tests/test_arv_put.py                   | 107 ++-
 sdk/python/tests/test_arv_run.py                   |  17 +-
 sdk/python/tests/test_arv_ws.py                    |  16 +-
 sdk/python/tests/test_arvfile.py                   | 419 ++++++++----
 sdk/python/tests/test_benchmark_collections.py     |  11 +-
 sdk/python/tests/test_cache.py                     |  20 +-
 sdk/python/tests/test_collections.py               | 438 ++++++++----
 sdk/python/tests/test_errors.py                    |  21 +-
 sdk/python/tests/test_events.py                    |  52 +-
 sdk/python/tests/test_keep_client.py               | 164 +++--
 sdk/python/tests/test_keep_locator.py              |  20 +-
 sdk/python/tests/test_pipeline_template.py         |   3 +-
 sdk/python/tests/test_retry.py                     |  15 +-
 sdk/python/tests/test_retry_job_helpers.py         |   8 +-
 sdk/python/tests/test_stream.py                    |  57 +-
 sdk/python/tests/test_util.py                      |   6 +-
 sdk/ruby/lib/arvados.rb                            |  23 +-
 sdk/ruby/lib/arvados/keep.rb                       |   6 +-
 services/api/.gitignore                            |   3 +-
 services/api/Gemfile                               |  53 +-
 services/api/Gemfile.lock                          | 279 ++++----
 services/api/Rakefile                              |   6 -
 .../api/app/controllers/application_controller.rb  |  46 +-
 .../arvados/v1/collections_controller.rb           |  21 +-
 .../arvados/v1/containers_controller.rb            |   9 +
 .../controllers/arvados/v1/groups_controller.rb    |  38 +-
 .../arvados/v1/keep_services_controller.rb         |   1 +
 .../app/controllers/arvados/v1/nodes_controller.rb |   6 +-
 .../arvados/v1/repositories_controller.rb          |  17 +-
 .../controllers/arvados/v1/schema_controller.rb    |  14 +-
 .../app/controllers/arvados/v1/users_controller.rb |   2 +-
 .../api/app/controllers/database_controller.rb     |   4 +-
 .../app/controllers/user_sessions_controller.rb    |   3 +-
 .../api/app/models/api_client_authorization.rb     |   8 +-
 services/api/app/models/arvados_model.rb           | 122 +++-
 services/api/app/models/collection.rb              |   6 +-
 services/api/app/models/container.rb               | 136 +++-
 services/api/app/models/container_request.rb       |   4 +
 services/api/app/models/job.rb                     | 101 ++-
 services/api/app/models/link.rb                    |   5 -
 services/api/app/models/log.rb                     |   2 +-
 services/api/app/models/pipeline_instance.rb       |   4 +
 services/api/app/models/pipeline_template.rb       |   4 +
 services/api/app/models/user.rb                    |  63 +-
 services/api/app/models/virtual_machine.rb         |   6 +-
 services/api/app/models/workflow.rb                |   4 +
 services/api/config/application.default.yml        |  71 +-
 services/api/config/application.rb                 |  31 +-
 .../api/config/environments/development.rb.example |   3 -
 .../api/config/environments/production.rb.example  |   2 +-
 services/api/config/environments/test.rb.example   |   5 +-
 services/api/config/initializers/eventbus.rb       |  38 +-
 services/api/config/initializers/load_config.rb    |   1 +
 .../api/config/initializers/noop_deep_munge.rb     |   9 -
 .../config/initializers/permit_all_parameters.rb   |   1 +
 services/api/config/initializers/time_format.rb    |   2 +
 services/api/config/routes.rb                      |  29 +-
 ...0170319063406_serialized_columns_accept_null.rb |   5 +
 ...1_add_created_by_job_task_index_to_job_tasks.rb |   5 +
 ...0170419173712_add_object_owner_index_to_logs.rb |   5 +
 ...esting_container_index_to_container_requests.rb |   5 +
 services/api/db/structure.sql                      |  36 +-
 services/api/fpm-info.sh                           |   2 +-
 services/api/lib/can_be_an_owner.rb                |  41 +-
 services/api/lib/create_ancestor_view.sql          |  14 +
 services/api/lib/create_superuser_token.rb         |   4 +-
 services/api/lib/crunch_dispatch.rb                |   2 +-
 services/api/lib/eventbus.rb                       | 358 ----------
 services/api/lib/has_uuid.rb                       |  14 +-
 services/api/lib/load_param.rb                     |   2 +-
 services/api/lib/log_reuse_info.rb                 |  16 +
 services/api/lib/serializers.rb                    |   6 +
 .../api/lib/tasks/delete_old_container_logs.rake   |   2 +-
 services/api/lib/tasks/delete_old_job_logs.rake    |   2 +-
 services/api/lib/whitelist_update.rb               |  15 +-
 .../test/fixtures/api_client_authorizations.yml    |   7 +
 services/api/test/fixtures/collections.yml         |   2 +-
 services/api/test/fixtures/container_requests.yml  |  35 +-
 services/api/test/fixtures/containers.yml          |   8 +
 services/api/test/fixtures/jobs.yml                |  19 +
 .../arvados/v1/collections_controller_test.rb      |  47 +-
 .../arvados/v1/containers_controller_test.rb       |  23 +
 .../arvados/v1/groups_controller_test.rb           |  62 ++
 .../arvados/v1/job_reuse_controller_test.rb        |  20 +
 .../arvados/v1/keep_services_controller_test.rb    |   6 +-
 .../arvados/v1/schema_controller_test.rb           |  34 +
 .../functional/arvados/v1/users_controller_test.rb |   1 +
 .../arvados/v1/virtual_machines_controller_test.rb |   4 +-
 .../test/functional/database_controller_test.rb    |   2 +-
 .../api_client_authorizations_scopes_test.rb       |   6 +-
 .../api/test/integration/crunch_dispatch_test.rb   |   2 +-
 .../api/test/integration/database_reset_test.rb    |   2 -
 services/api/test/integration/errors_test.rb       |   2 +-
 services/api/test/integration/groups_test.rb       |  13 +
 ...{noop_deep_munge.rb => noop_deep_munge_test.rb} |  29 +-
 services/api/test/integration/pipeline_test.rb     |   2 +-
 .../api/test/integration/reader_tokens_test.rb     |   2 +-
 services/api/test/integration/websocket_test.rb    | 742 ---------------------
 services/api/test/test_helper.rb                   |  26 +-
 services/api/test/unit/arvados_model_test.rb       |  76 ++-
 services/api/test/unit/container_test.rb           |  30 +-
 .../api/test/unit/create_superuser_token_test.rb   |   2 +-
 services/api/test/unit/crunch_dispatch_test.rb     |   2 +-
 services/api/test/unit/job_test.rb                 |  41 +-
 services/api/test/unit/user_test.rb                |  12 +-
 services/api/test/unit/workflow_test.rb            |   8 +-
 .../crunch-dispatch-slurm/crunch-dispatch-slurm.go |  26 +-
 .../crunch-dispatch-slurm_test.go                  |  98 ++-
 services/crunch-run/crunchrun.go                   | 165 ++++-
 services/crunch-run/crunchrun_test.go              | 121 +++-
 services/crunch-run/logging.go                     | 234 ++++++-
 services/crunch-run/logging_test.go                |  43 ++
 services/fuse/tests/test_tmp_collection.py         |  13 +
 services/keep-balance/integration_test.go          |   9 +-
 services/keep-web/cache.go                         | 259 +++++++
 services/keep-web/cache_test.go                    | 104 +++
 services/keep-web/handler.go                       |  38 +-
 services/keep-web/handler_test.go                  |  31 +-
 services/keep-web/main.go                          |  10 +
 services/keep-web/server_test.go                   |  14 +-
 services/keep-web/status_test.go                   |  46 ++
 services/keep-web/usage.go                         |  20 +
 services/keepproxy/keepproxy.go                    | 144 ++--
 services/keepproxy/keepproxy_test.go               |  61 +-
 services/keepproxy/proxy_client.go                 |  19 +
 services/keepstore/azure_blob_volume.go            |   5 +
 services/keepstore/handlers.go                     |  52 +-
 services/keepstore/keepstore.go                    |   1 -
 services/keepstore/mounts_test.go                  | 104 +++
 services/keepstore/pull_worker.go                  |  87 +--
 services/keepstore/pull_worker_integration_test.go |  40 +-
 services/keepstore/pull_worker_test.go             | 234 +++----
 services/keepstore/s3_volume.go                    |   5 +
 services/keepstore/trash_worker.go                 |  12 +-
 services/keepstore/trash_worker_test.go            |  29 +-
 services/keepstore/volume.go                       |  65 ++
 services/keepstore/volume_test.go                  |   4 +
 services/keepstore/volume_unix.go                  |  77 +++
 services/keepstore/work_queue_test.go              |  22 +-
 .../nodemanager/arvnodeman/computenode/__init__.py |  85 ++-
 .../arvnodeman/computenode/dispatch/__init__.py    |  65 +-
 .../arvnodeman/computenode/dispatch/slurm.py       |   6 +-
 .../arvnodeman/computenode/driver/__init__.py      |  22 +-
 .../arvnodeman/computenode/driver/azure.py         |   1 -
 services/nodemanager/arvnodeman/config.py          |  20 +-
 services/nodemanager/arvnodeman/daemon.py          |  59 +-
 services/nodemanager/arvnodeman/jobqueue.py        |  62 +-
 services/nodemanager/arvnodeman/launcher.py        |  13 +-
 services/nodemanager/arvnodeman/nodelist.py        |  23 +-
 .../nodemanager/arvnodeman/test}/__init__.py       |   0
 .../nodemanager/arvnodeman/test/fake_driver.py     | 127 ++++
 services/nodemanager/arvnodeman/timedcallback.py   |   4 +-
 services/nodemanager/doc/azure.example.cfg         |   2 +
 services/nodemanager/doc/ec2.example.cfg           |   2 +
 services/nodemanager/doc/gce.example.cfg           |   2 +
 .../azure.example.cfg => tests/fake.cfg.template}  |  24 +-
 services/nodemanager/tests/integration_test.py     | 360 ++++++++++
 .../nodemanager/tests/test_computenode_dispatch.py |  22 +-
 .../tests/test_computenode_dispatch_slurm.py       |   8 +-
 .../tests/test_computenode_driver_azure.py         |  13 -
 .../tests/test_computenode_driver_ec2.py           |  13 -
 services/nodemanager/tests/test_daemon.py          |  26 +-
 services/nodemanager/tests/test_jobqueue.py        |  42 +-
 services/ws/config.go                              |  25 +-
 services/ws/event_source.go                        |   9 +-
 services/ws/server.go                              |   5 +-
 tools/arvbox/bin/arvbox                            |   2 +-
 tools/arvbox/lib/arvbox/docker/Dockerfile.base     |   6 +-
 tools/keep-block-check/keep-block-check.go         |  14 +-
 tools/keep-block-check/keep-block-check_test.go    |  13 +-
 tools/keep-exercise/keep-exercise.go               |   9 +-
 tools/keep-rsync/keep-rsync.go                     |  14 +-
 tools/keep-rsync/keep-rsync_test.go                | 149 ++---
 vendor/.gitignore                                  |   3 +
 vendor/vendor.json                                 | 370 ++++++++++
 333 files changed, 9086 insertions(+), 4215 deletions(-)
 create mode 100644 .licenseignore
 create mode 100644 apps/workbench/app/assets/images/trash-icon.png
 create mode 100644 apps/workbench/app/controllers/trash_items_controller.rb
 create mode 100644 apps/workbench/app/views/application/_show_text_with_locators.html.erb
 copy apps/workbench/app/views/{jobs => container_requests}/_show_provenance.html.erb (52%)
 copy apps/workbench/app/views/{pipeline_instances => container_requests}/_show_recent.html.erb (61%)
 create mode 100644 apps/workbench/app/views/container_requests/_show_recent_rows.html.erb
 create mode 100644 apps/workbench/app/views/container_requests/index.html.erb
 create mode 100644 apps/workbench/app/views/trash_items/_create_new_object_button.html.erb
 create mode 100644 apps/workbench/app/views/trash_items/_show_recent_trash.html.erb
 create mode 100644 apps/workbench/app/views/trash_items/_show_trash_rows.html.erb
 create mode 100644 apps/workbench/app/views/trash_items/_untrash_item.html.erb
 create mode 100644 apps/workbench/app/views/trash_items/index.html.erb
 copy apps/workbench/app/views/{projects/remove_items.js.erb => trash_items/untrash_items.js.erb} (58%)
 create mode 100644 apps/workbench/app/views/work_units/_show_table_data.html.erb
 create mode 100644 apps/workbench/app/views/workflows/_show_definition.html.erb
 create mode 100644 apps/workbench/app/views/workflows/_show_recent.html.erb
 create mode 100644 apps/workbench/app/views/workflows/show.html.erb
 create mode 100644 apps/workbench/test/integration/trash_test.rb
 create mode 100755 build/check-copyright-notices
 rename build/{libcloud-pin => libcloud-pin.sh} (100%)
 delete mode 100644 doc/start/index.html.textile.liquid.bkup
 rename services/api/log/.gitkeep => sdk/cwl/tests/collection_per_tool/a.txt (100%)
 copy tools/crunchstat-summary/tests/__init__.py => sdk/cwl/tests/collection_per_tool/b.txt (100%)
 copy tools/crunchstat-summary/tests/__init__.py => sdk/cwl/tests/collection_per_tool/c.txt (100%)
 create mode 100644 sdk/cwl/tests/collection_per_tool/collection_per_tool.cwl
 create mode 100644 sdk/cwl/tests/collection_per_tool/collection_per_tool_packed.cwl
 create mode 100644 sdk/cwl/tests/collection_per_tool/step1.cwl
 create mode 100644 sdk/cwl/tests/collection_per_tool/step2.cwl
 mode change 100755 => 100644 sdk/python/arvados/commands/ls.py
 delete mode 100644 services/api/config/initializers/noop_deep_munge.rb
 create mode 100644 services/api/config/initializers/permit_all_parameters.rb
 create mode 100644 services/api/db/migrate/20170319063406_serialized_columns_accept_null.rb
 create mode 100644 services/api/db/migrate/20170419173031_add_created_by_job_task_index_to_job_tasks.rb
 create mode 100644 services/api/db/migrate/20170419173712_add_object_owner_index_to_logs.rb
 create mode 100644 services/api/db/migrate/20170419175801_add_requesting_container_index_to_container_requests.rb
 create mode 100644 services/api/lib/create_ancestor_view.sql
 delete mode 100644 services/api/lib/eventbus.rb
 create mode 100644 services/api/lib/log_reuse_info.rb
 rename services/api/test/integration/{noop_deep_munge.rb => noop_deep_munge_test.rb} (63%)
 delete mode 100644 services/api/test/integration/websocket_test.rb
 create mode 100644 services/keep-web/cache.go
 create mode 100644 services/keep-web/cache_test.go
 create mode 100644 services/keep-web/status_test.go
 create mode 100644 services/keepproxy/proxy_client.go
 create mode 100644 services/keepstore/mounts_test.go
 copy {sdk/cwl/tests => services/nodemanager/arvnodeman/test}/__init__.py (100%)
 create mode 100644 services/nodemanager/arvnodeman/test/fake_driver.py
 copy services/nodemanager/{doc/azure.example.cfg => tests/fake.cfg.template} (95%)
 create mode 100755 services/nodemanager/tests/integration_test.py
 create mode 100644 vendor/.gitignore
 create mode 100644 vendor/vendor.json

  discards  3bb2699f6d418b508dd8bf35cec06f9f54ac6bba (commit)
       via  050be6a5be43ab503820955dbca2751ca368063c (commit)
       via  156f7186528045a58628c58f3b4b48fcb3825cd5 (commit)
       via  0bd8810e6ea29ab242472b9dae11c621cf50953c (commit)
       via  3c44c82acb3dbf50acd75f0c979d8a18ee11dbd0 (commit)
       via  803d4fd3eff1d5c0d4cb9793fb06e1117039beae (commit)
       via  2796844aee26155b5c78e7c69830652f51f7342e (commit)
       via  ec7510c680ee2065d6372fef6a340ef754dbe724 (commit)
       via  9ae2b6b3427f131fc61f574a2061111c9626bf6c (commit)
       via  cd1a869f36d2a04c59fd995b83d12d5a0b529e19 (commit)
       via  4ffb10314b3c3bc5883463c9bce14036cde374ff (commit)
       via  85f5272570db52619b99f11c879c475743f36aee (commit)
       via  d4461f9c637e915d66aad807997e9909300f2f20 (commit)
       via  3f0ec839af28e56eb94bc9507ab59df1e670e59f (commit)
       via  123153139bbee3674c81325653d87fa19ffbe0e4 (commit)
       via  3b3c3a0869c2cf528b9e1c45c969bbbd47f6446e (commit)
       via  87c9678022eb027f8d7f02129c1ec052205387d8 (commit)
       via  b457758cefa151d377eb9074c31ae1e27a04d62c (commit)
       via  6dd8a072ec2e305df687f72dd294d760ae6c8e23 (commit)
       via  abd90a9194482bb75b471afc0f11fba8bce786c7 (commit)
       via  7899dbfa16983e230aa26766d01182cfb27259d1 (commit)
       via  d66b42e150030edff5ddb211d76d03d4bcd572ec (commit)
       via  cac20b7dd2177edebc0a4f8087032d1143bd524e (commit)
       via  2fa4de30af88afd7bcac2f603497dcbe36e48429 (commit)
       via  92b2d910cc7bc824ce74ed81976a746da73525fa (commit)
       via  d3be8a76e5d9a921fbb7798cb0a705b918d20add (commit)
       via  0e3369b7179c4e483faf681e67279d762feaa33c (commit)
       via  b7a20a386bb6bf582c4bc92d8718b883417d4c48 (commit)
       via  aa12c56d26cb72824ddd2399e17e846cd9d9b483 (commit)
       via  829f6add084f40546abbe2ba16fcb4e9e5643fc0 (commit)
       via  1595481c3e4cc42cfa5a47bbe501eb6e6f83db9f (commit)
       via  d7bc150a11260ba93d3403ef4c49b12baf2a93a0 (commit)
       via  590135864c4a977dddd3e42330d8b8608f916570 (commit)
       via  29cb16bdd726b09f8cded0d245ed6a72c62eaf8b (commit)
       via  7e0409e3b5e2fd80f7a74feb719dbc41c2193ef6 (commit)
       via  9503aabc4f07b94f7877c0f782b6246176368f72 (commit)
       via  039753cc37d512be4dcffad85332b66f2165169a (commit)
       via  72e22b49ec2721d3a1369da768d3d74fa9c079c3 (commit)
       via  9d894536b8a7044fdfa168f81a38c3408e6cd7b4 (commit)
       via  d22400822b3489c621e5dbd902749b1a547ca579 (commit)
       via  f7b0474852fa8f270605c4cb5eeaf85c910c421e (commit)
       via  478d5dbf9a4ee280122db2a208b91d8ad97e3b99 (commit)
       via  6246cacc17e8b90519143e717b7241e527678be9 (commit)
       via  eb21778470992713458dc42e4a115bd0a619c5de (commit)
       via  a15a137c593d24649e2960471d7273acad695186 (commit)
       via  f2fae587a47ae4e1344d6054960136f935b1449b (commit)
       via  b745c25cb15077f4f5cd658a6d59392c48bc8add (commit)
       via  46580c9d21578ec9f0638c9cb464703c7ede00b3 (commit)
       via  0940739d41d71154937354696634a2989a9db9fc (commit)
       via  29665e2d9a543bffb237d148c3484c03b03e30aa (commit)
       via  4daf12ad8cb2f74c3f3d72eafef7ed7a0621a4ac (commit)
       via  f1aed11fd3a5e204a2cf2e4fc5f099179e877eb6 (commit)
       via  6fef82432952b78f61c7be80820e88804b3a47d7 (commit)
       via  aa552a3337c1a63d1638c39cb01ab03b0b9009cc (commit)
       via  87ea4388edb977d246b09b78d9d4bfa5c2ba5170 (commit)
       via  b42d7d9ed4640296ae5d01d26268c4fdba1ca10c (commit)
       via  9332a5837c291a5825fb0ac273515093b0dacee9 (commit)
       via  f9ff1c5444f7030fa0b372446bd40d4feed203c8 (commit)
       via  cc77c62e148a632c5b690c275fd9fbf659ad2715 (commit)
       via  55315b668b8fa04572a44fd7db6598478f54130a (commit)
       via  0a6adabd77bf483186a29a7cffef38866a5ee8e0 (commit)
       via  0560a5812377315a92c8a4e9b41a68677832ea65 (commit)
       via  695a100d4bd3bf4f5534c7e489c118c2917bf35a (commit)
       via  eace27b5fe2e945d68ef2d617fbae8f23f2b808a (commit)
       via  81aa936c50bda0257d62dd59e45d5afba73a4bac (commit)
       via  dcd20d41fde4216345a20ddfa950b40de74b85b5 (commit)
       via  cb230b07e0125d819991bc74a1f528740068157d (commit)
       via  a10eb3ebf97a29687c6f43d705e30fb0349364d2 (commit)
       via  51549f93489f5d57f71b7767528ee7dec9079fb6 (commit)
       via  5f8a7ee855778644abf70e7058317891738d2ce1 (commit)
       via  5d03f6499055ef109ca2c8d5d59941b25de1fa47 (commit)
       via  fd4bdb760eb47013b8b60b40859ba7f004ee8383 (commit)
       via  efcfd2cdc9a9ed6ab3af54e9a4e149d4bdf1f8d3 (commit)
       via  f834a9841fe27c18bc31e58636ec1bcdb833b54b (commit)
       via  09794d996eca79b85d3ac0c21a4a43c65a51d0d7 (commit)
       via  0f5295ae31362eefe182f3a2329b3903d6f82a3b (commit)
       via  ea47e67af0e7528f0bcb23f3b34019b308eaa68a (commit)
       via  c5e4c7027338235435e9698057847686baaee6cc (commit)
       via  41372eb0088174d02505f657f0fa2dabbc845791 (commit)
       via  75e00445b6de230493e9ee37483dd4c469db29b1 (commit)
       via  e4c7e6b368cf6d922db341580a2402a07c6cb079 (commit)
       via  88abf688d7545fc663e0422f0c586107d4c56e5a (commit)
       via  6c40c1c5b000b2eb0967df0f7ebaf613393501bc (commit)
       via  916cf89b440fd13a9b9c055d817b34d339442ea3 (commit)
       via  6d9ac912d421951ec363e40fbcfde2428aa2f8d9 (commit)
       via  5a625a53394fa99ef7fb44ab63104b8195d963df (commit)
       via  9ff2df8cfa1f0798c22e4b3c6ef91d4677961295 (commit)
       via  7c7dc19ffa0a20fff6d97e51c874bfaca9596b24 (commit)
       via  554873d2fb3aa095caaa6fece1c2321008a85b24 (commit)
       via  7a98a4695a031c4b7b07d7244f3f293db7ebe0fc (commit)
       via  63cfe7a9b391e1a07c6c6c8b0fab10b1c875f1be (commit)
       via  fd1b1b760f96e5c86e70dd8eb2e629b55f55fe55 (commit)
       via  a84b665349051a06df5728f435203c8353b5795a (commit)
       via  27355f62088566a9388972e128bfb8ba77790e9a (commit)
       via  75c5b123e0b4cbfebed9b15364a97c2209f94740 (commit)
       via  4d0d27f83183b6659a570ae1fc07f95aefe0b23e (commit)
       via  65622f423c2ee35250856657b06118481d53edc8 (commit)
       via  741a9b3912c382b25507ca76fae15ddac020f302 (commit)
       via  1cdeb90e271f2a0c50d3552ff702b8e6f9489c74 (commit)
       via  fc10c21d75b15e36c4f861fdd17bf985ca83d888 (commit)
       via  9da81b40a1c0e65f2459106a4718e4adcf7551c4 (commit)
       via  028e052db597498ee5c1412b606fa178c621b3ca (commit)
       via  31ef294c700811eae8ade8dfc5fcb7ec40d1ad2e (commit)
       via  5931243d745188851c8240e3e766d97aafdf935c (commit)
       via  b5d352d6099b60db5dcdd9183dcab3e8e17d729e (commit)
       via  8e1efc4c74f86a986dd0c6f15f53777d0d2bf0bb (commit)
       via  6fe6390690471cee8ba23984e3560fc4ced8b180 (commit)
       via  505b5c4d23da212bf285b3279a756b4f02d75567 (commit)
       via  23c8dd0d911c4b238169f399ff455f2dab9f0b4f (commit)
       via  1ceeafd5411b47834b836019dfd21d4050158171 (commit)
       via  e3da56d96e191df11444877ed1989bd8f34bfa5a (commit)
       via  7c03ff7b9ddac8dc232a910364fcecd32f86e03d (commit)
       via  9d6fb27b6a0ef28062be37efdea20d1a4c7079d3 (commit)
       via  f7a665dcd8dfe96b49e63f3caa352f5e5f8b19a1 (commit)
       via  b436b04a6e0cd28eaa465bb928eea3195b114322 (commit)
       via  3cd9054aa2699473f1af45c165441d7276162b46 (commit)
       via  dbd91c317d54da7123bee4f2d496b440b2ba9393 (commit)
       via  d0811968704eb02e3e98e46345fadf22cf95b5ec (commit)
       via  0da65aef99133cb76661f56f2adac83a77ad8ac9 (commit)
       via  4dac499d30988fd8289a40ad4128d6d471037180 (commit)
       via  d0b58511f396325bf083463d460567bf6f76e468 (commit)
       via  5223e68fa0d1f1fc52c7285fa6844d7932ba9acb (commit)
       via  79b826befbc0b62a822e2d0c922e5c4ea0a3bb7c (commit)
       via  d094ae4ee58f26e0585445eccb3be2d019ab020f (commit)
       via  8ffcfd1523d2a023c0286976a1aed50fb70dea3a (commit)
       via  9a7ea56065ed47ef114d569f137ff50d1efffc48 (commit)
       via  932a318673b17b63a2f2d99a6ba170c908ef3b20 (commit)
       via  e578f043c4d3b45a08f15d365adea0386228a4bf (commit)
       via  1d77dec0f7bc1cca34d52288bd39ecd0a79be250 (commit)
       via  d451eabbcbb8d5885fb30c2c341d93204a008596 (commit)
       via  456dde006228871c522597abbc5fe8006e44ad4d (commit)
       via  bee4fa82c15b2188c2105fff3b52c305b38f04a6 (commit)
       via  180074677191e4f30f90e8b8390245ab356b1c3f (commit)
       via  6eae76355f346740cc50ddba4656239c507461ac (commit)
       via  f60885adec1fe9a7b92f30ffbd4f5bb112e1aeae (commit)
       via  72a4000d8dc81879afae18ca440ab2ffaf712823 (commit)
       via  df6578e918d8c29baf314e671c28a96aea1c1d00 (commit)
       via  4a1df4f3aed07a31da8570363b5eaceccf4dffa8 (commit)
       via  b310fc04b9e60b974f4bfc2c86a5c45ecd7c65f2 (commit)
       via  8645888f12c25edaaac8e03fb5691cfcfbcdb9b2 (commit)
       via  3b12ef6b6d7ff6852f6109ab71dbec382322a686 (commit)
       via  43dbdec9f0f6361e4705671bbdade34cd18adefa (commit)
       via  dd58470216d6a416e4d831a3b9c25bfdaa255fff (commit)
       via  67fbf00f0d868384f1585f2473b5f89455001638 (commit)
       via  2e83bfa0e38b87632871f91cead42c9ead3d7bb7 (commit)
       via  ccc2ef472f5048059194e67b973d663c07816de9 (commit)
       via  8045ed8ae35f2436cb3330de028294654af91c7b (commit)
       via  89bf20191626c26dba2fcbdb4d660cd7c4063168 (commit)
       via  b22ff6242148a9b37baef6c74701fa85a8765adf (commit)
       via  a9b15a2f041744c8fac8c0b12fa8b61d1a7292f8 (commit)
       via  138eedbea2658ef397c7a58ce48d6f06077ba140 (commit)
       via  83b73a4718f09b106f225d45f08e10ae92ce3f38 (commit)
       via  cee8f888b442448b2bffe243da2e9cc5dcf29b04 (commit)
       via  303424c3f3ed01f65c9f880ff1ff32bc7a46621b (commit)
       via  cad24bba2240b47f59bc5719a035e85ff5eb60ef (commit)
       via  1e7d0d5fe2d2ec5c4fdbbe18d047ab70d8ae5db1 (commit)
       via  49a9c33ea6119c42ad3d2d585ed7b2f9e4339132 (commit)
       via  fe7467555e7d6843bea4ede99bd07c1476df7d0d (commit)
       via  642e59798974a4c3bb0ecfebd3fa790c912d1187 (commit)
       via  d956fd4fa88796c80edff99d4b1dcf97cbd0011d (commit)
       via  dfe5c5a6a288f59ffed7268458e1a09f26594215 (commit)
       via  d95ccc6bbbf94e957b939ca9d9aea71cda345944 (commit)
       via  c182087b563ddbb40fde2b1d0c185af481df3bc2 (commit)
       via  8ac1775086e88da003b530210be1acb4c0f2c648 (commit)
       via  02d1074b356837f1a06a25ac3dc353ecf541b444 (commit)
       via  d121e087ad1b4e91f869dbd57534c6d6ce51d19d (commit)
       via  370036888e75b509ebf84ba8337273f7b9146f37 (commit)
       via  d77b362ffa44f0fd48cb7127ca34d6d676fad8ca (commit)
       via  627fbeb0406fcdd9cdc9e90a6e9529f48dc37321 (commit)
       via  df55660fc8748a317219043153f0bb54150086a8 (commit)
       via  84906c7124ab9707b5ccca94c83471fa551d9992 (commit)
       via  865d1b22bb42a6c89ca9aa9a3513f3c61c6547c7 (commit)
       via  b1b7a0be3c789795675e731c8c64bee3cb6d718c (commit)
       via  37470b030384ebe8a73e6d1e725cbde4abb924da (commit)
       via  b3f88934721fc97973b40786cae97e55e84b31d5 (commit)
       via  513b7af1bfe31c0056129abebf60671810a0ef40 (commit)
       via  6e5079ff9a0349c57ab2cf06398413018a921cc0 (commit)
       via  78390940029ab08efecab923615c545b9da922b4 (commit)
       via  e9481fd0320a8f0dbecaa93eadbe3143c98bac53 (commit)
       via  80407a6b686d5038bf89bbe12978ceb633e27332 (commit)
       via  fbc576b76977938cf7b742f9770ab90559136dc8 (commit)
       via  867c69d1443b44311ab35f58304b304750c38066 (commit)
       via  7a4bee5299767c8491bdfe7efaa8a936f2c2bf6a (commit)
       via  f0e917d2305c66cb7120125aaf6592ce2b9e3855 (commit)
       via  9d33e0c4f98da668b23b85c54d20d22fe4b0f342 (commit)
       via  42f5f3a29761ac9a943530157da376c798a4ac6d (commit)
       via  9eff4af096f60b302abc9ad591f8b5fed45945a4 (commit)
       via  c4b5194c18567d470bb44c6eae29743ccaaa748d (commit)
       via  8cc51c761385bd6acc5dbaf7e95994e916ca0d0d (commit)
       via  74544f439360e3ece1d7609d76eb47bb4cf41faf (commit)
       via  38de76ceaabe6f1b522a538a27dfeb2f58c5fb69 (commit)
       via  f26f70d0a60798065c5f7a5cb91b95587cc9e9ef (commit)
       via  aceb2d1ed239fa82fcb8bb352b632a8d92251dac (commit)
       via  f5fbc48810d1397df9e6244c16cf07c05162d36a (commit)
       via  b9b4502bcddeccd794614bf6979d643f9f350877 (commit)
       via  a340487a7d406e73e51479a765a3d08bdb92b8d0 (commit)
       via  50c67a3eee468bcced060d5c868d243dcaff5837 (commit)
       via  94b92f075dbfb60a25fbe28e5741a553ac4985fd (commit)
       via  eee2c470dfa879c769eccb515861419a6b900101 (commit)
       via  795bf007cbe24775bd348fb40fc5c28d93c8f23d (commit)
       via  34f9129a3d7d2a625455fccbd01c94fc18f6685a (commit)
       via  1903e0e26b3677d9686e1d19cea897690945e3ed (commit)
       via  bbe86c4a80d53807b325b46dd51557a7a01670ae (commit)
       via  953a9210c382e96063aee4aae69147bcc344cc50 (commit)
       via  209dbf15bd9aa7ba6e01721caab7da7c1a9b0bbd (commit)
       via  61a8873440a505d1483a04354b8d1f2089e76e39 (commit)
       via  8690785168e12635ce35614c02d557fe77a3fe25 (commit)
       via  ed56c26720184ca3d07f452faf014e177f1a2c2f (commit)
       via  0d5962b720872b8f4cbd6bc0a3f44d896bff7daf (commit)
       via  2aaef36d5b642e8e2b0bcd9bdca0a25217e49590 (commit)
       via  8794708d1e16935173f6b20c551fdd661b60883d (commit)
       via  c70fbca19235ebff6ab560ced462496cea7d2f72 (commit)
       via  86c4a20bcf282407f92cb3f3e0a022de79107aca (commit)
       via  75953fd324f2629f282f6b98e96dc1cef8bc2da4 (commit)
       via  8c9b3ded23d4594d2185056032e8f0bf22dd57e1 (commit)
       via  93e4548df0ba8e98589dea7cdde60a851a2d9c2f (commit)
       via  9cd1bd27bada41cd13fb9813144fe694a67c2d00 (commit)
       via  7f1e7f793bd1b5efa73df51b3070c5acb8fcdc82 (commit)
       via  bc65e5b981806594fde9f4c40bf5aa7d8e48b040 (commit)
       via  fb5d279228a7adcafd858d9e137accd8010bb382 (commit)
       via  7bb1d40eed9436c2f7fbd5b11106f6fd8f020441 (commit)
       via  a309f8c5b4842075d6c83f99a8f2a1e1016976f5 (commit)
       via  3fa8a8a4142aac0fc6d3900b3f77de347b76268b (commit)
       via  97d759d73e24017c9cab74325d866960389c11a5 (commit)
       via  a795e5e02791cb7920aaded26bfa83a7ace1f386 (commit)
       via  02b75a37c98f3357ba079d01166576153032a238 (commit)
       via  411109e1c30d61bce39f29851838540e0a5787e5 (commit)
       via  8b6d154d2a1e89bbabb8f7730d37bffb54d4de6d (commit)
       via  303d374c370f334426570864258df6364b9f3f0b (commit)
       via  6ad31a32b13094ce162a2175956232403b13693f (commit)
       via  209c2259a8bf0218e585da037a04e2d9d79400ee (commit)
       via  a5c53dceed8480e667249fc5fee3349bbaf20ec8 (commit)
       via  62a0bbe9c1f6e3376b25d0f415302eb7dcdf55f3 (commit)
       via  a7bd5fa6c4353745260398eaa61c5b857975d222 (commit)
       via  4644e14f4158e3fa288abf6d979d2526606e5615 (commit)
       via  c22bd85568bdef0358a82bb20e4995477c7d24ac (commit)
       via  96b33e5ac77dbd0a003b428d5531431f3e999bef (commit)
       via  9456885954b0bff02721bbb14da296be212efdc4 (commit)
       via  ba917d72d48615cdd0c6da87d41b6bd0f9f26666 (commit)
       via  f8675ad473b45387b1286c6b7a41edf36148ebac (commit)
       via  40ce7856e2426dc7381bf493eacf2fa42a9774b5 (commit)
       via  4bc2f36b8e475b0dc1145fa27e665cdd8c85f809 (commit)
       via  47f29d75759db7e4d81203e110257f1a471f82e7 (commit)
       via  8e0303a592671af3578af904370d226f4991e635 (commit)
       via  4c1d34eee72603b850bea8d5dc95c225e644954f (commit)
       via  79aeb557d94681fb7e55321aeee2e20df1430b30 (commit)
       via  8ee2f83955b1b71571aa428335340f505c3c2264 (commit)
       via  537ff1dfe42c8a1c076ea31a137801cab8e95b96 (commit)
       via  4e32a5d047ab832e7399dedd7b5dd5f8fc364367 (commit)
       via  2c60e15078452202ff58eac99d44920448fb7b9a (commit)
       via  dd69c4bad124d39f876ec6fb0e733e2db289a4bd (commit)
       via  575b2f04b80a8bb2cf5ab61ce80a94d5fe017aa3 (commit)
       via  5a649613ade7f4bb9c80bbfec62604698383c1d1 (commit)
       via  e49882e535f1464673d547ba37c636ec1eb8d0ab (commit)
       via  78408743bab09078a7361620fc6a6be524fdac73 (commit)
       via  08e9c6aff46e182b9cd14fab9d42d21b2d7c6902 (commit)
       via  c4a0f7a714586e61ad844de58837a20c76eda2a8 (commit)
       via  75a76c083c8f257c33ad31582aac7a86bc866bb5 (commit)
       via  3652f3ed82e994c9eea74ba1afb4aa3c11ebd697 (commit)
       via  4cacfe7a9566d7ea6f53be24daf83cf9e441aebb (commit)
       via  3f285d4c2555aa57e9b64c9890bbb494cdf46a0f (commit)
       via  aa6a63fb550222ecb8353585ab7e19a2c1d261e4 (commit)
       via  ee434dea5db0b02fe762ff80b2270cf268e84378 (commit)
       via  9bf790498c20c9f8ab9bffbf9c8e5311864bd91e (commit)
       via  8976780c3b66178ab0baf6e305dcc6d72277f815 (commit)
       via  b29ca38e4409fe0149aea28a0e26a84d56ccca17 (commit)
       via  b20770d7e5a4ba0a974a7b98fce87b81aead95d9 (commit)
       via  f21a495d7723e72ea61c62293d56aff1a65c130c (commit)
       via  3b11d2b570d9c3f2a18886d82fb0224562c56f61 (commit)
       via  b58953e9b4c54757db68dd8661aeb170635643b2 (commit)
       via  d4eead3501dfe0f002e95574b91d835ed792d92e (commit)
       via  cb109bfddd08bd8136b75e90b681e4af3d60ea30 (commit)
       via  74d98b5f5cfee651eebfd8c63842a08241dcd736 (commit)
       via  5cd02331394595a6e64f19c2cc14c9955c9266dd (commit)
       via  7ea93a3e137a3375daa76073ddbd582deb22141c (commit)
       via  50a1f82945a564e16b564c9cab009dac8ec78a37 (commit)
       via  3b4325c210516d1f61838fb26e06e0a11c31ce6d (commit)
       via  007d2919fc56632bc957d90378ed7a5d3b14aa3c (commit)
       via  f389a552e9b81de0e2030fe2fddc4852b33f63cc (commit)
       via  d23bc7c1abe6b81ae279298bf606f44c0d99f7fa (commit)
       via  4259263d270a5e377009d20835a463551c708d82 (commit)
       via  e018237856b7bdd61e46468696bf3783a8f745df (commit)
       via  1bfda34f36f2cf2064460f169f195fa5b2fe305a (commit)
       via  4218f74266f3fee7c618c887bea6a804005c89b9 (commit)
       via  2516e999249684e82e55c6519b54114764193963 (commit)
       via  39755f7642bf974e6e2e1cf3828b5240f489566c (commit)
       via  6fd54bd2d821535231c6b7596146b301232e8976 (commit)
       via  e42bf96609791323ca21aff9768e31e809cc9439 (commit)
       via  e4f03346d4498a77d252d2ffb08d1e0246785b5e (commit)
       via  a4a8d41f6ccd1a0a54f99fb80f3d725922c08ee1 (commit)
       via  f10431fe2de1037c3c0d51d8238cecf6c1206703 (commit)
       via  11208178d6724a93663139565e9dad96ee7f10a3 (commit)
       via  ffb304afad93f50fd6ee43ecda6584dd0ac000c4 (commit)
       via  5ca261ee945cfea279f6df0364c8311e83cebb44 (commit)
       via  dd0786de66c5decb8581cb092afb405eb390bca9 (commit)
       via  8ed7b6dd5d4df93a3f37096afe6d6f81c2a7ef6e (commit)
       via  d66c9f93da79b8bfdffdb1684f19ac388c31ce97 (commit)
       via  f682de562d9c857616f81d48d5cd915748725197 (commit)
       via  787e77b30ed6f01ebf3ea74f4212888accf41ecf (commit)
       via  8dd7e323798d36e3182c12868c6f1f3dd0eabf96 (commit)
       via  c3aa32a866ac5a833675888ca8106ea4a6581bc4 (commit)
       via  8de338d1178abb71addc344382657d3826d7f0bb (commit)
       via  3c4b14cf8bbfcea51fefa5d74a0c522547e0bcf4 (commit)
       via  1586823b65c7ec7656626e491a31f3f9516a4a56 (commit)
       via  c64d7e1d5d1879187e1c4002445fab1d3c7951a0 (commit)
       via  1885991dd79a75034f7650cccef16ebe3fd71959 (commit)
       via  001757381fd370a563599ca70ca9b451a71e9726 (commit)
       via  65616466b97a92e382f8e432b14ffc3711b95491 (commit)
       via  e24a892b920fd8cddf091a3c15acba1ab27f510d (commit)
       via  fa0ccc4c50e9c141bcd40f12f3047aea3226c0ca (commit)
       via  35dde4022e317536642646366ff01578bf904fb6 (commit)
       via  3f8f2a9b9d1ccb1e4e696607ef015de0524da519 (commit)
       via  fe29b56aecc9b5e277dd9a956fb05867827c91c9 (commit)
       via  43a6204d0292fc4a41c370a2b77a84bc778fbdae (commit)
       via  7f9839be2facf7e5bf3106dab0859da5d971f31e (commit)
       via  9350a0562776be66a099dce1c3e825b32f5a8907 (commit)
       via  23825c0b5ecf436b29a36a1c27efe1120485827e (commit)
       via  e54bce82515daeef450f53aa93d3acae397bfa5f (commit)
       via  607fe087f6167061714a524dd53cbbc21b974973 (commit)
       via  fca805a18c671ccbb03cef640c15172d1f02ffe3 (commit)
       via  974799e09498bc5fa27ba2e269a72f8ae5173793 (commit)
       via  613155d587da60dbe04c7635649b1f3694938adc (commit)
       via  be4852ec32e5eeed1af9a62017cfc39ed66ac186 (commit)
       via  fe45b1b66c730f2546d78a7899375707c0816518 (commit)
       via  18f3b51a1795922a5c5c595b5b3fb5ce12978c64 (commit)
       via  6f62739bee508c9b2b8c4ce2f2593fe1714cfda6 (commit)
       via  4d012b23a4ac88f433986054fc0085ee6714b5b3 (commit)
       via  c6452ff3cf71462a46c3d7584696e0948dcce4dc (commit)
       via  ed375727b95e6f1cd56c599a177bbd7979e1cf78 (commit)
       via  70166077b0f77780441df216232390f0d09ad31a (commit)
       via  fb72bf49a923ba3f25defa749efc2d49353414b7 (commit)
       via  5d00ecb0932f86e4d2aced3d9258b96522ef38bd (commit)
       via  d2ebb8fe6bdf4b33ec2aeea314efb5e4df22eebb (commit)
       via  fea486f94bb5cc8f51d9563eafc172b6ba2aec57 (commit)
       via  43d1a5d0b9272f6e57a3d0afd59b956054ff4d7a (commit)
       via  d694a717acb2e577afa396aea140e5284b7f763d (commit)
       via  712968da0c8575de1ac6968772999c2439636e2a (commit)
       via  e56ae6aad06c37d5512537047871d7363dd97620 (commit)
       via  59b27bcb7fe510ff351dd9d8f71b1d4b56d131b5 (commit)
       via  e39a7d5704932cbec606e85cdca50aa38a1ed053 (commit)
       via  88a25d414025c64231f977a9383fd6a69cf6246a (commit)
       via  72900c01e197d602e79fda8d306b17fd1e32a3ea (commit)
       via  6a7edde0c5b906c58a7e739f2d0c612c67f63dc5 (commit)
       via  41a7f3914a6ced0fd374bd903470fb4fc91ea5e4 (commit)
       via  e289b9ad5959a76795681ca95d310bad2288656a (commit)
       via  3843210bdf340751795b8ce9903cf712661b94e7 (commit)
       via  b92089c1674dcc99184a36b7094ac72ffc787922 (commit)
       via  3acd5d7f73c24a2ea2d686588be44efb9ac056b2 (commit)
       via  f5f5de0ae41e12738a380c422417d5a5e5af7f09 (commit)
       via  e8317521741c3814e824e209f75edf23636e32ff (commit)
       via  318c49002aea966128a9d37ab29e601a104d79bb (commit)
       via  f517c9897428fd3c50a269b494b6b912cae291df (commit)
       via  65da23323c06079612db9285e0ab2bd1ac9ea253 (commit)
       via  8c948701e887e96f05ffaf0adaec9da9f2533f72 (commit)
       via  b075d1be1377760f5d8497a29f63c8e416cd5378 (commit)
       via  8c5f2973a5c5f042d1d12aef1c470b37519fd416 (commit)
       via  edfc619e6189c5407d16798c75aaace08a13536d (commit)
       via  90209af8fa35bc99c9821db0c815404d1234ef31 (commit)
       via  88c241d7c4fbfadb951f370bf2706db687adad75 (commit)
       via  ac3bafbcbc8e6d6c6b3be13e3e29b7ab7cf4ad7a (commit)
       via  137ebf94ff14837c9df773533ea86e821469bda9 (commit)
       via  fed8ee006cdfc2029f287c656b184f3ce7507847 (commit)
       via  260e85a9d9cf2c20313bcf2edb63da57bdd3a69f (commit)
       via  e7b46691f98bf4e7edcf1ea3b98a677273d70b3b (commit)
       via  c5c09df38966595b4f27c402d1e9ae5500d6d201 (commit)
       via  30146198f24c70941d95af714e036ff3c451626c (commit)
       via  455f862a19fe0bcc8ac3c6e685a96faf747ae623 (commit)
       via  8622b46a4a6c127a1927d9c2e54febec6a5bf503 (commit)
       via  4344941f8410ed21befead8d6b8d2471d291032f (commit)
       via  95e2bdda5afc3ffc6afb2f08ea6d7cba8f8d62f1 (commit)
       via  629557aa041a80f0704b02e7c679b2f01d9c0be2 (commit)
       via  f2f8340b18430738a9527f05e707dd8f03508cc0 (commit)
       via  ad7294edfcc59c3e67548328a88c9e689c3ae2cf (commit)
       via  3ef580c47029ff0fbf959b044f29c183f41cb609 (commit)
       via  4ccbea9ef440a7e4252b0df5e710dcb767831c60 (commit)
       via  9dabca0eedbc9f842d542fea3463a441140d590c (commit)
       via  6e577058389e70fd575580c3e11a122396140700 (commit)
       via  c043e133b2646037ed630d571e91dbf77344f855 (commit)
       via  93c92875aaebe5b06f8dbfe2822b59a772895c08 (commit)
       via  bf5d77baad2071af6eea514c76b4892cec4974a0 (commit)
       via  04bd6b08b9ac13d29ac05c9281850d430d71066d (commit)
       via  840b855ff0317e66f4176ae0f23e9785f72267b4 (commit)
       via  1220e2184449ccab288fa41de4749fb029cd317b (commit)
       via  17b80c32a5b177ee8c5f32b81dd0889f3399eee8 (commit)
       via  9905d124877e5695053cce388d3680c667815de5 (commit)
       via  fd65e0be3f55d48b9d573921ca0757fc51a1dd81 (commit)
       via  35c2572761bb060aa1c12f417f97aa9e1ccbe7eb (commit)
       via  a93d95d85ea15c7afd70657abf60635c29043c89 (commit)
       via  3a0d849c08f750dca1d6a40153c0107001769c6d (commit)
       via  2b3b54becbce29efdf4c53787c4aa6d666900ef0 (commit)
       via  f1fb39153bc234b49ca77674a29abc029b12774a (commit)
       via  31d31c010bb6b5170e3962fdd50c6d393cfe6076 (commit)
       via  f4661a02245a35f8d223693a5aecaae87083fb16 (commit)
       via  52c6f13db207030bdbe063665c0dd524007db828 (commit)
       via  0ecea550fde014578e71004360b700cdfeae4909 (commit)
       via  7116da151dc8bfd5ac1a9b016b2ed6e4c35572f7 (commit)
       via  bef5d901f00648e703bb6a3ad58fa481a610ffd7 (commit)
       via  b04638275cff9b393e1bc04136d44f361b999cf8 (commit)
       via  c39ba5193005a4e9f619901f8348f11fada88df0 (commit)
       via  2333472a4f517a227278f028bbbc4e72687c0e71 (commit)
       via  5180238a10bd15302a1c15b9a428f2fdeeabdf4e (commit)
       via  bfc9660a8b2467893baf131b20e83e76c41ae438 (commit)
       via  aed7702a67426dfd9d24b512c90df8e909162179 (commit)
       via  9aa83ad7b4de05dd2818885ed34111d4dcf322ea (commit)
       via  3c34e713aa343d56c7cea00a9c998b06dbf411d6 (commit)
       via  65e339856daf4b5c3a4a810cd3a5f1a8e386dc8c (commit)
       via  151df8c3b177e4971bfbdf68c87d89599dbe0812 (commit)
       via  e7284afa8ccb95994dcd2009015cafc6180e7187 (commit)
       via  82c40aa7d30cd8e68e2a1bdc0bd8bf03cdfea029 (commit)
       via  38a4b3c43a8a6cff5a00624436b8eaa5cbfbc76b (commit)
       via  f79536fda9dc40f480383caa69a35663702b2ba4 (commit)
       via  c14ae0edcb3c386e50f46218184e8dabcbc20a37 (commit)
       via  04951581a941697d68cdaf9af6661c3c412f1bce (commit)
       via  5e4bf6836d9762ef5552111776dcbade99f2e680 (commit)
       via  67ba19113789346005aa61d4234bc33c8677a85c (commit)
       via  9609f9a5a4776671f571f765a179506d26df56da (commit)
       via  03188ad6eb14ee3dcd6bdf74198624c9358936c5 (commit)
       via  a501e1d874f01acc318e7963837fbeb58a29f744 (commit)
       via  b9d004b5369b99b216e66cb7d4a9505792276613 (commit)
       via  f2c1db3480befa2c29a742313465e7cc9f2635b1 (commit)
       via  84737fbdeecd9d9707bef0dde8762d370fba02cb (commit)
       via  ebc9ff19a20c49da45f39379d148b6dc4ccec8e2 (commit)
       via  db7e17f830ac3707d7222d73c2f70f1d726a724c (commit)
       via  0c5cb575c6915778dc6b2de6348bdc32121434eb (commit)
       via  0b8673b62cd9717fcf7e3bbb608ae07018093d6f (commit)
       via  06e1c2317d969fb5872cf1f2c29adaac7e0ef251 (commit)
       via  de083a9fec0ca08afda5a9369c6cd32dbdcd0965 (commit)
       via  f5d09a4904e609b5df20edd0194a9f1ade40c28a (commit)
       via  f6b16b5ae75469167dbea08d69692d5f53dd9c84 (commit)
       via  a603d0f7b685a93b88ea29336dd2b512e63b4508 (commit)
       via  9b976cfbcb62729a672315107ac4868e0dc2f815 (commit)
       via  83f3b04387aff7f033b99a6421e4d38478f09c17 (commit)
       via  62be7d11e2b54d06e4d0c7c6ae12656bfe00637f (commit)
       via  0d5be4fa36006459e1579f087b695904e4f32ee3 (commit)
       via  77d9c05d89dabc9e9e9a15f46cd12c8ad61ed64e (commit)
       via  9e3fd2fa437e2f3dab220a96fbe22ec5b250421d (commit)
       via  4a8883858028d4068b52710acd9c349108b6fc7c (commit)
       via  56b51a9e60da1531d40685525a563bef91f17876 (commit)
       via  249b3abab7da1abd531195ed0cd58760bf10774b (commit)
       via  f54096601d61d3d3016317c4b80b3e1a701af869 (commit)
       via  e5d948386bad766d481b17c06bc2c3147c42cde5 (commit)
       via  4ef817417f439188bea95a51d86acf21ad4f6d37 (commit)
       via  0487aeb518af7f4ba4a7b0ae17d42805dcdc3805 (commit)
       via  46f6db136c5820555109963f5382b449aff617ce (commit)
       via  e8074a3ca07250640c30f49cdefbbbe76a4a7885 (commit)
       via  864099344286a29d0552cd59f579f65e2aaf5c92 (commit)
       via  c633f38b9b53c30082407b1f1d9d8c7738c9d680 (commit)
       via  d761fb1e9d9e39626eded4b1e4804b0fc3d5d8c8 (commit)
       via  6d9cf49ee3e11d9ca87c8113222c6dd742597a5f (commit)
       via  adac4b967382c280022d202d56d7fee41764ef35 (commit)
       via  cb37170128fa9b1f1c98bb3270328e0969719141 (commit)
       via  cd708c67b92f2c094e33584bb1fc2c6b4640fb90 (commit)
       via  04f38e70e1a6b23b00eb3684dbefce0ab64ec638 (commit)
       via  991d037e7b4741450dff745d22b0758170fe4ed9 (commit)
       via  82f763b628589918d0e421b4f5fb4c00c179a628 (commit)
       via  41e9f18dc873c0260b5d32523e9b34ea41040f22 (commit)
       via  a81a5f35357a099750f0ba3f65885d14a757349d (commit)
       via  0e0c1400b57d5de8aa8c18dd4897527f905a4b42 (commit)
       via  0199da877b222c751a31d70a6617b92c2a56fe70 (commit)
       via  7fde9a0a090e5f092b946f7569f1350778a47574 (commit)
       via  d1af87de56519cad7ae3c95d636c3c54f37c260b (commit)
       via  8e48567442d2d40bd9f6230f243f75cdbbe03bb1 (commit)
       via  de259910871b7a01ecc199722ea26e6b335ca55e (commit)
       via  fbce7b14ac2ed443a3054262c16689cbebc16f61 (commit)
       via  e61df48303291900581ef4a64dcf97864598c5f4 (commit)
       via  5e46c19fa6f037d41bd196a5418066f9fbe3bdb3 (commit)
       via  f69e114cf6dbe51525e98ca30a52ef3dd4341167 (commit)
       via  9b823dc4b56a3bda5d095a4b3549ea2c0b024fd8 (commit)
       via  d8fef944b2691e8d77df4185f297f205c4975b21 (commit)
       via  e1e05845b74ce70712e414830f992ce57d7a8453 (commit)
       via  78ff2a600b29f05f522f8e8818967dac88394fd6 (commit)
       via  7fd4aa96f997a133d31b3df88a8d2f4820c5b881 (commit)
       via  fb7bb4c8f17a49abab40e42b7a0101cac7478d60 (commit)
       via  8d9b12f2a87ffd7183d3a36ca32ee1c7e701a0e2 (commit)
       via  d42ec212e992a83f8e7fc48b59fb3daf58a62787 (commit)
       via  c066a2e6d064a270638baea8f8b0d106f5903e0f (commit)
       via  c36272a5f83ba70980160c4cb205bdfb8a1c660b (commit)
       via  045bace65c2395b6efe9f3d8c93bec74196f58e1 (commit)
       via  7c6852e1b3675b3c1de7e9792373333cb752d40d (commit)
       via  dfd8c4bbd6f126b90d436e9d242cd30e15e70d2e (commit)
       via  de4df7f80c531ab16e59ea36671a8efa9e6ff33d (commit)
       via  126dd750f48654cb3b1a4e53c5b7d337003e112f (commit)
       via  30dbddd3b311653652fa731dbff950aba0712301 (commit)
       via  ab314b9ea3618c71556a6a5f6dd7c769beaf2737 (commit)
       via  390af6a13f7c8974329aecc2f23fbfa81f8e298b (commit)
       via  9090c60b28de593b8bb2ce606a9ab35b62b57608 (commit)
       via  84ad215752fde4291070143411a945fa7a94241c (commit)
       via  c9a361f7fd3b1cf7f4959e9b0292d0f495d82771 (commit)
       via  05d453ec38b10a022ea6db77867957e7115b9b35 (commit)
       via  09dcf71e59907c2eaf4b94918c63da07193481a4 (commit)
       via  099a8c62fcb0905855ddf243a3deddc7398c3c10 (commit)
       via  fe446e10da189d3d3e0ea5f19061389cc2200a08 (commit)
       via  6498c7751cd0305a28494df45a70965ccc6c3737 (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (3bb2699f6d418b508dd8bf35cec06f9f54ac6bba)
            \
             N -- N -- N (050be6a5be43ab503820955dbca2751ca368063c)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

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 050be6a5be43ab503820955dbca2751ca368063c
Author: Tom Clegg <tom at curoverse.com>
Date:   Wed Apr 19 10:44:21 2017 -0400

    11283: Fix "available slot number" query.
    
    Fixes repetitive queries and excessive Postgres and Rails log
    messages:
    
    2017-04-10 16:39:09 UTC [4734-1] arvados at arvados_test ERROR: duplicate key value violates unique constraint "index_nodes_on_slot_number"
    
    PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_nodes_on_slot_number"
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curoverse.com>

diff --git a/services/api/app/models/node.rb b/services/api/app/models/node.rb
index 82ea0ac..f04fa70 100644
--- a/services/api/app/models/node.rb
+++ b/services/api/app/models/node.rb
@@ -104,17 +104,19 @@ class Node < ArvadosModel
 
     # Assign slot_number
     if self.slot_number.nil?
-      try_slot = 1
-      begin
-        self.slot_number = try_slot
+      while true
+        n = self.class.available_slot_number
+        if n.nil?
+          raise "No available node slots"
+        end
+        self.slot_number = n
         begin
           self.save!
           break
         rescue ActiveRecord::RecordNotUnique
-          try_slot += 1
+          # try again
         end
-        raise "No available node slots" if try_slot == Rails.configuration.max_compute_nodes
-      end while true
+      end
     end
 
     # Assign hostname
@@ -136,6 +138,19 @@ class Node < ArvadosModel
 
   protected
 
+  def self.available_slot_number
+    connection.exec_query('SELECT n FROM generate_series(1, $1) AS slot(n)
+                          LEFT JOIN nodes ON n=slot_number
+                          WHERE slot_number IS NULL
+                          LIMIT 1',
+                          # query label:
+                          'Node.available_slot_number',
+                          # [col_id, val] for $1 vars:
+                          [['max_compute_nodes',
+                            Rails.configuration.max_compute_nodes]],
+                         ).rows.first.andand.first
+  end
+
   def ensure_ping_secret
     self.info['ping_secret'] ||= rand(2**256).to_s(36)
   end
diff --git a/services/api/test/unit/node_test.rb b/services/api/test/unit/node_test.rb
index 2330e7c..e3bd753 100644
--- a/services/api/test/unit/node_test.rb
+++ b/services/api/test/unit/node_test.rb
@@ -128,9 +128,8 @@ class NodeTest < ActiveSupport::TestCase
   test "ping two nodes one with no hostname and one with hostname and check hostnames" do
     # ping node with no hostname and expect it set with config format
     node = ping_node(:new_with_no_hostname, {})
-    slot_number = node.slot_number
     refute_nil node.slot_number
-    assert_equal "compute#{slot_number}", node.hostname
+    assert_equal "compute#{node.slot_number}", node.hostname
 
     # ping node with a hostname and expect it to be unchanged
     node2 = ping_node(:new_with_custom_hostname, {})
@@ -191,4 +190,22 @@ class NodeTest < ActiveSupport::TestCase
       assert_equal '10.5.5.5', n1.ip_address
     end
   end
+
+  test 'run out of slots' do
+    Rails.configuration.max_compute_nodes = 3
+    act_as_system_user do
+      Node.destroy_all
+      (1..4).each do |i|
+        n = Node.create!
+        args = { ip: "10.0.0.#{i}", ping_secret: n.info['ping_secret'] }
+        if i <= Rails.configuration.max_compute_nodes
+          n.ping(args)
+        else
+          assert_raises do
+            n.ping(args)
+          end
+        end
+      end
+    end
+  end
 end

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


hooks/post-receive
-- 




More information about the arvados-commits mailing list