[ARVADOS] updated: 4609a76d9b84e0f63233cdf6dcbef376b1686b69

git at public.curoverse.com git at public.curoverse.com
Fri May 30 15:51:27 EDT 2014


Summary of changes:
 .gitignore                                         |   2 +
 apps/admin/setup-new-user.rb                       | 168 ----
 apps/workbench/.gitignore                          |   7 +
 apps/workbench/Gemfile                             |  23 +-
 apps/workbench/Gemfile.lock                        | 155 ++--
 .../api_client_authorizations.js.coffee            |   3 -
 .../app/assets/javascripts/application.js          |   1 -
 .../assets/javascripts/authorized_keys.js.coffee   |   3 -
 .../app/assets/javascripts/collections.js          |   1 -
 apps/workbench/app/assets/javascripts/editable.js  |  59 +-
 apps/workbench/app/assets/javascripts/event_log.js |  45 ++
 apps/workbench/app/assets/javascripts/folders.js   |  12 +
 .../app/assets/javascripts/groups.js.coffee        |   3 -
 .../app/assets/javascripts/humans.js.coffee        |   3 -
 .../app/assets/javascripts/job_tasks.js.coffee     |   3 -
 .../app/assets/javascripts/jobs.js.coffee          |   3 -
 .../app/assets/javascripts/keep_disks.js.coffee    |  31 +-
 .../app/assets/javascripts/links.js.coffee         |   3 -
 .../app/assets/javascripts/logs.js.coffee          |   3 -
 .../app/assets/javascripts/nodes.js.coffee         |   3 -
 .../app/assets/javascripts/pipeline_instances.js   | 102 ++-
 .../javascripts/pipeline_templates.js.coffee       |   3 -
 .../app/assets/javascripts/repositories.js.coffee  |   3 -
 .../app/assets/javascripts/select_modal.js         |  39 +
 apps/workbench/app/assets/javascripts/selection.js |  20 +-
 .../app/assets/javascripts/sessions.js.coffee      |   3 -
 apps/workbench/app/assets/javascripts/sizing.js    |   2 +-
 .../app/assets/javascripts/specimens.js.coffee     |   3 -
 .../app/assets/javascripts/traits.js.coffee        |   3 -
 .../assets/javascripts/user_agreements.js.coffee   |   3 -
 .../app/assets/javascripts/users.js.coffee         |   3 -
 .../assets/javascripts/virtual_machines.js.coffee  |   3 -
 .../app/assets/stylesheets/application.css.scss    |  72 +-
 .../app/assets/stylesheets/cards.css.scss          |  85 ++
 .../app/assets/stylesheets/collections.css.scss    |  48 ++
 .../app/assets/stylesheets/folders.css.scss        |  13 +
 .../app/assets/stylesheets/keep_disks.css.scss     |   8 +
 .../app/assets/stylesheets/sb-admin.css.scss       | 164 ++++
 .../app/assets/stylesheets/select_modal.css.scss   |   3 +
 .../workbench/app/assets/stylesheets/selection.css |  22 +-
 .../app/controllers/actions_controller.rb          |  44 +-
 .../api_client_authorizations_controller.rb        |  13 -
 .../app/controllers/application_controller.rb      |  87 +-
 .../app/controllers/collections_controller.rb      | 176 ++--
 .../app/controllers/folders_controller.rb          | 118 +++
 .../workbench/app/controllers/groups_controller.rb |   7 +-
 apps/workbench/app/controllers/jobs_controller.rb  |   7 +-
 .../app/controllers/keep_disks_controller.rb       |  47 ++
 .../app/controllers/keep_services_controller.rb    |   2 +
 .../controllers/pipeline_instances_controller.rb   |   8 +-
 .../app/controllers/sessions_controller.rb         |   2 +-
 apps/workbench/app/controllers/users_controller.rb |  10 +-
 apps/workbench/app/helpers/application_helper.rb   |  38 +-
 .../app/helpers/arvados_api_client_helper.rb       |  13 +
 apps/workbench/app/helpers/folders_helper.rb       |   2 +
 .../app/helpers/pipeline_instances_helper.rb       |  21 +-
 apps/workbench/app/models/arvados_api_client.rb    |  51 +-
 apps/workbench/app/models/arvados_base.rb          | 117 ++-
 apps/workbench/app/models/arvados_resource_list.rb |  13 +-
 apps/workbench/app/models/collection.rb            |  34 +-
 apps/workbench/app/models/group.rb                 |  18 +-
 apps/workbench/app/models/human.rb                 |   3 +
 apps/workbench/app/models/job.rb                   |   8 +
 .../app/models/{keep_disk.rb => keep_service.rb}   |   2 +-
 apps/workbench/app/models/log.rb                   |   5 +
 apps/workbench/app/models/pipeline_instance.rb     |   7 +-
 apps/workbench/app/models/pipeline_template.rb     |   4 +
 apps/workbench/app/models/specimen.rb              |   3 +
 apps/workbench/app/models/trait.rb                 |   3 +
 apps/workbench/app/models/user.rb                  |  26 +-
 apps/workbench/app/models/user_agreement.rb        |   8 +-
 .../app/views/application/_content.html.erb        |   2 +-
 .../application/_delete_object_button.html.erb     |   2 +-
 .../application/_pipeline_status_label.html.erb    |   6 +-
 .../views/application/_selection_checkbox.html.erb |   2 +-
 .../app/views/application/_show_metadata.html.erb  |   4 +-
 .../views/application/_show_object_button.html.erb |   3 +
 .../app/views/application/_show_recent.html.erb    |  27 +-
 .../workbench/app/views/application/index.html.erb |   6 +-
 .../app/views/collections/_sharing_button.html.erb |  21 +
 .../app/views/collections/_show_files.html.erb     | 116 ++-
 .../app/views/collections/_show_jobs.html.erb      |  64 --
 .../views/collections/_show_provenance.html.erb    |  84 --
 .../views/collections/_show_source_data.html.erb   |  44 -
 .../app/views/collections/sharing_popup.js.erb     |   1 +
 apps/workbench/app/views/collections/show.html.erb | 111 +++
 .../app/views/collections/show_file_links.html.erb |  82 ++
 apps/workbench/app/views/folders/_choose.html.erb  |  42 +
 apps/workbench/app/views/folders/_choose.js.erb    |   8 +
 .../app/views/folders/_show_folders.html.erb       |  29 +
 .../workbench/app/views/folders/remove_item.js.erb |   5 +
 apps/workbench/app/views/folders/show.html.erb     | 214 +++++
 .../workbench/app/views/jobs/_show_recent.html.erb |   6 +-
 .../app/views/keep_disks/_content_layout.html.erb  |  21 +
 .../app/views/layouts/application.html.erb         | 326 ++++----
 apps/workbench/app/views/links/_recent.html.erb    |   2 +-
 apps/workbench/app/views/logs/show.html.erb        |   1 -
 .../pipeline_instances/_show_components.html.erb   |  83 +-
 .../_show_components_editable.html.erb             |   4 +-
 .../views/pipeline_instances/_show_inputs.html.erb |  50 ++
 .../views/pipeline_instances/_show_recent.html.erb |   8 +-
 .../app/views/pipeline_instances/show.js.erb       |   6 +-
 .../pipeline_templates/_show_components.html.erb   |   2 +-
 .../views/pipeline_templates/_show_recent.html.erb |  45 +-
 .../app/views/user_agreements/index.html.erb       |   2 +-
 .../workbench/app/views/users/_show_admin.html.erb |   2 +-
 apps/workbench/app/views/users/_tables.html.erb    |   8 +-
 apps/workbench/app/views/users/welcome.html.erb    |   2 +-
 apps/workbench/app/views/websocket/index.html.erb  |   2 +-
 apps/workbench/config/application.default.yml      |  14 +-
 apps/workbench/config/application.rb               |  15 +-
 .../config/environments/development.rb.example     |  12 +-
 .../config/environments/production.rb.example      |   6 +-
 apps/workbench/config/environments/test.rb.example |   6 -
 .../config/initializers/zzz_arvados_api_client.rb  |   8 -
 .../zza_load_config.rb => load_config.rb}          |   0
 apps/workbench/config/routes.rb                    |  21 +-
 apps/workbench/public/robots.txt                   |   2 -
 .../test/functional/collections_controller_test.rb |  80 +-
 .../folders_controller_test.rb}                    |   2 +-
 .../workbench/test/integration/collections_test.rb |  36 +-
 apps/workbench/test/integration/folders_test.rb    |  83 ++
 .../test/integration/pipeline_instances_test.rb    |  56 ++
 apps/workbench/test/integration/smoke_test.rb      |   6 +-
 apps/workbench/test/integration/users_test.rb      |  58 +-
 .../test/integration/virtual_machines_test.rb      |   4 +-
 apps/workbench/test/integration_helper.rb          |  47 ++
 apps/workbench/test/test_helper.rb                 | 116 ++-
 apps/workbench/test/unit/collection_test.rb        |  27 +
 .../test/unit/helpers/collections_helper_test.rb   |   8 +
 .../test/unit/helpers/folders_helper_test.rb       |   4 +
 doc/_config.yml                                    |   7 +-
 doc/api/index.html.textile.liquid                  |   2 -
 doc/api/methods.html.textile.liquid                |  39 +-
 doc/api/methods/keep_services.html.textile.liquid  |  75 ++
 doc/api/methods/logs.html.textile.liquid           |  22 +-
 doc/api/schema/Collection.html.textile.liquid      |   2 +-
 doc/api/schema/Job.html.textile.liquid             |   1 +
 doc/api/schema/KeepDisk.html.textile.liquid        |   4 +-
 doc/api/schema/KeepService.html.textile.liquid     |  24 +
 doc/install/index.html.md.liquid                   |  18 -
 doc/install/index.html.textile.liquid              |  18 +
 doc/install/install-api-server.html.textile.liquid |   5 +-
 .../install-crunch-dispatch.html.textile.liquid    |  44 +-
 doc/install/install-sso.html.textile.liquid        |   3 +-
 .../install-workbench-app.html.textile.liquid      |  41 +-
 doc/sdk/index.html.textile.liquid                  |   3 +-
 doc/sdk/java/index.html.textile.liquid             | 140 ++++
 doc/sdk/perl/index.html.textile.liquid             |   2 +-
 doc/sdk/python/sdk-python.html.textile.liquid      |  11 +-
 doc/sdk/ruby/index.html.textile.liquid             |   2 +-
 .../tutorial-firstscript.html.textile.liquid       |  10 +-
 docker/build_tools/Makefile                        |  10 +
 docker/jobs/Dockerfile                             |  20 +
 sdk/cli/arvados-cli.gemspec                        |   1 +
 sdk/cli/bin/arv                                    |  11 +-
 sdk/cli/bin/arv-run-pipeline-instance              |  93 ++-
 sdk/cli/bin/crunch-job                             |  82 +-
 sdk/cli/test/test_arv-run-pipeline-instance.rb     |  33 +
 sdk/go/go.sh                                       |  17 +
 sdk/go/src/arvados.org/keepclient/hashcheck.go     |  77 ++
 .../src/arvados.org/keepclient/hashcheck_test.go   |  85 ++
 sdk/go/src/arvados.org/keepclient/keepclient.go    | 293 +++++++
 .../src/arvados.org/keepclient/keepclient_test.go  | 698 ++++++++++++++++
 sdk/go/src/arvados.org/keepclient/support.go       | 277 +++++++
 sdk/go/src/arvados.org/streamer/streamer.go        | 130 +++
 sdk/go/src/arvados.org/streamer/streamer_test.go   | 366 +++++++++
 sdk/go/src/arvados.org/streamer/transfer.go        | 308 +++++++
 sdk/java/.classpath                                |  21 +
 sdk/java/.project                                  |  14 +
 sdk/java/.settings/org.eclipse.jdt.core.prefs      |   5 +
 sdk/java/ArvadosSDKJavaExample.java                |  80 ++
 sdk/java/ArvadosSDKJavaExampleWithPrompt.java      | 123 +++
 sdk/java/README                                    |   4 +
 sdk/java/pom.xml                                   | 106 +++
 .../main/java/org/arvados/sdk/java/Arvados.java    | 454 +++++++++++
 .../java/org/arvados/sdk/java/MethodDetails.java   |  22 +
 sdk/java/src/main/resources/log4j.properties       |  11 +
 .../java/org/arvados/sdk/java/ArvadosTest.java     | 464 +++++++++++
 sdk/java/src/test/resources/first_pipeline.json    |  16 +
 sdk/perl/lib/Arvados.pm                            |   2 +-
 sdk/perl/lib/Arvados/Request.pm                    |   9 +-
 sdk/python/.gitignore                              |   1 -
 sdk/python/arvados/api.py                          |  12 +-
 sdk/python/arvados/collection.py                   | 237 +++++-
 .../python/arvados/commands/__init__.py            |   0
 sdk/python/arvados/commands/put.py                 | 399 +++++++++
 sdk/python/arvados/errors.py                       |   4 +
 sdk/python/arvados/events.py                       |  33 +
 sdk/python/arvados/fuse.py                         | 317 --------
 sdk/python/arvados/keep.py                         | 221 ++++-
 sdk/python/bin/arv-mount                           |  67 --
 sdk/python/bin/arv-put                             | 215 +----
 sdk/python/build.sh                                |  16 -
 sdk/python/requirements.txt                        |  11 +-
 sdk/python/{setup.py.src => setup.py}              |  12 +-
 sdk/python/test_cmdline.py                         |  81 ++
 sdk/python/test_keep_client.py                     |  62 --
 sdk/python/test_mount.py                           | 153 ----
 sdk/python/tests/arvados_testutil.py               |  61 ++
 .../{testdata => tests/data}/1000G_ref_manifest    |   0
 sdk/python/{testdata => tests/data}/jlake_manifest |   0
 sdk/python/tests/run_test_server.py                | 287 +++++++
 sdk/python/tests/test_arv-put.py                   | 352 ++++++++
 sdk/python/{ => tests}/test_collections.py         | 309 ++++---
 sdk/python/tests/test_keep_client.py               | 281 +++++++
 sdk/python/tests/test_keep_locator.py              |  67 ++
 sdk/python/{ => tests}/test_pipeline_template.py   |  18 +-
 sdk/python/{ => tests}/test_util.py                |   0
 sdk/python/tests/test_websockets.py                |  32 +
 sdk/ruby/.gitignore                                |   1 +
 sdk/ruby/Gemfile.lock                              |  58 --
 sdk/ruby/arvados.gemspec                           |   1 +
 sdk/ruby/lib/arvados.rb                            |   7 +-
 services/api/.gitignore                            |   6 +
 services/api/Gemfile                               |   6 +-
 services/api/Gemfile.lock                          |  20 +-
 services/api/Rakefile                              |   6 +
 .../api/app/controllers/application_controller.rb  |  67 --
 .../v1/api_client_authorizations_controller.rb     |   2 +
 .../arvados/v1/collections_controller.rb           |  62 +-
 .../controllers/arvados/v1/groups_controller.rb    |  60 ++
 .../app/controllers/arvados/v1/jobs_controller.rb  |   4 +-
 .../arvados/v1/keep_services_controller.rb         |  21 +
 .../app/controllers/arvados/v1/nodes_controller.rb |   2 +-
 .../controllers/arvados/v1/schema_controller.rb    |  15 +-
 .../app/controllers/user_sessions_controller.rb    |   3 +-
 services/api/app/mailers/admin_notifier.rb         |  14 +
 services/api/app/models/api_client.rb              |   2 +-
 .../api/app/models/api_client_authorization.rb     |   2 +-
 services/api/app/models/arvados_model.rb           |  87 +-
 services/api/app/models/authorized_key.rb          |   2 +-
 services/api/app/models/collection.rb              |   2 +-
 services/api/app/models/group.rb                   |  22 +-
 services/api/app/models/human.rb                   |   2 +-
 services/api/app/models/job.rb                     |   2 +-
 services/api/app/models/job_task.rb                |   2 +-
 services/api/app/models/keep_disk.rb               |  20 +-
 services/api/app/models/keep_service.rb            |  15 +
 services/api/app/models/link.rb                    |   2 +-
 services/api/app/models/locator.rb                 |  84 ++
 services/api/app/models/log.rb                     |   2 +-
 services/api/app/models/node.rb                    |  36 +-
 services/api/app/models/pipeline_instance.rb       |  93 ++-
 services/api/app/models/pipeline_template.rb       |   3 +-
 services/api/app/models/repository.rb              |   2 +-
 services/api/app/models/specimen.rb                |   2 +-
 services/api/app/models/trait.rb                   |   2 +-
 services/api/app/models/user.rb                    |  22 +-
 services/api/app/models/virtual_machine.rb         |   2 +-
 .../admin_notifier/new_inactive_user.text.erb      |   6 +
 .../api/app/views/admin_notifier/new_user.text.erb |   6 +
 services/api/config/application.default.yml        |  19 +-
 services/api/config/application.yml.example        |  28 +-
 services/api/config/initializers/assign_uuid.rb    |   1 -
 services/api/config/initializers/eventbus.rb       |   6 +-
 services/api/config/initializers/secret_token.rb   |   7 -
 services/api/config/routes.rb                      |   3 +
 .../20140422011506_pipeline_instance_state.rb      |   2 +
 .../migrate/20140519205916_create_keep_services.rb |  51 ++
 ...152921_add_description_to_pipeline_templates.rb |   5 +
 services/api/db/schema.rb                          |  24 +-
 services/api/lib/assign_uuid.rb                    |  31 -
 services/api/lib/can_be_an_owner.rb                |  47 ++
 services/api/lib/has_uuid.rb                       |  44 +
 services/api/lib/record_filters.rb                 |  17 +-
 services/api/script/crunch-dispatch.rb             |  70 +-
 services/api/script/import_commits.rb              |   9 -
 .../test/fixtures/api_client_authorizations.yml    |   7 +
 services/api/test/fixtures/collections.yml         |  29 +-
 services/api/test/fixtures/jobs.yml                |  22 +-
 services/api/test/fixtures/keep_disks.yml          |  12 +-
 services/api/test/fixtures/keep_services.yml       |  23 +
 services/api/test/fixtures/links.yml               |  67 ++
 services/api/test/fixtures/logs.yml                |   5 +
 services/api/test/fixtures/pipeline_instances.yml  |   3 +
 services/api/test/fixtures/pipeline_templates.yml  |   4 +-
 services/api/test/fixtures/specimens.yml           |  18 +
 .../arvados/v1/collections_controller_test.rb      | 230 ++++++
 .../api/test/functional/arvados/v1/filters_test.rb |  16 +
 .../arvados/v1/groups_controller_test.rb           |  37 +
 .../functional/arvados/v1/jobs_controller_test.rb  |  49 ++
 .../arvados/v1/keep_disks_controller_test.rb       |  34 +-
 .../arvados/v1/keep_services_controller_test.rb    |  23 +
 .../functional/arvados/v1/users_controller_test.rb |   2 +
 services/api/test/integration/keep_proxy_test.rb   |  25 +
 .../api/test/integration/user_sessions_test.rb     |  28 +
 services/api/test/integration/websocket_test.rb    |   2 +-
 services/api/test/test_helper.rb                   |  21 +
 .../api/test/unit/api_client_authorization_test.rb |  16 +-
 services/api/test/unit/arvados_model_test.rb       |  78 ++
 .../api/test/unit/keep_service_test.rb             |   2 +-
 services/api/test/unit/link_test.rb                |  14 +-
 services/api/test/unit/owner_test.rb               | 126 +++
 services/api/test/unit/permission_test.rb          |  14 +
 services/api/test/unit/pipeline_instance_test.rb   |  26 +-
 services/api/test/unit/user_test.rb                | 235 ++----
 services/datamanager/experimental/datamanager.py   | 887 +++++++++++++++++++++
 .../datamanager/experimental/datamanager_test.py   |  41 +
 services/fuse/.gitignore                           |   1 +
 services/fuse/arvados_fuse/__init__.py             | 588 ++++++++++++++
 services/fuse/bin/arv-mount                        |  88 ++
 {sdk/python => services/fuse}/readme.llfuse        |   0
 services/fuse/requirements.txt                     |   3 +
 services/fuse/setup.py                             |  22 +
 services/fuse/tests/run_test_server.py             |   1 +
 services/fuse/tests/test_mount.py                  | 332 ++++++++
 services/keep/build.sh                             |  36 -
 services/keep/go.sh                                |  17 +
 .../keep/src/arvados.org/keepproxy/keepproxy.go    | 424 ++++++++++
 .../src/arvados.org/keepproxy/keepproxy_test.go    | 276 +++++++
 services/keep/src/keep/handler_test.go             | 453 +++++++++++
 services/keep/src/keep/keep.go                     | 375 ++++++++-
 services/keep/src/keep/keep_test.go                |   6 +-
 services/keep/src/keep/perms.go                    |  13 +-
 315 files changed, 14452 insertions(+), 3055 deletions(-)
 delete mode 100755 apps/admin/setup-new-user.rb
 delete mode 100644 apps/workbench/app/assets/javascripts/api_client_authorizations.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/authorized_keys.js.coffee
 create mode 100644 apps/workbench/app/assets/javascripts/event_log.js
 create mode 100644 apps/workbench/app/assets/javascripts/folders.js
 delete mode 100644 apps/workbench/app/assets/javascripts/groups.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/humans.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/job_tasks.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/jobs.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/links.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/logs.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/nodes.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/pipeline_templates.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/repositories.js.coffee
 create mode 100644 apps/workbench/app/assets/javascripts/select_modal.js
 delete mode 100644 apps/workbench/app/assets/javascripts/sessions.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/specimens.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/traits.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/user_agreements.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/users.js.coffee
 delete mode 100644 apps/workbench/app/assets/javascripts/virtual_machines.js.coffee
 create mode 100644 apps/workbench/app/assets/stylesheets/cards.css.scss
 create mode 100644 apps/workbench/app/assets/stylesheets/folders.css.scss
 create mode 100644 apps/workbench/app/assets/stylesheets/sb-admin.css.scss
 create mode 100644 apps/workbench/app/assets/stylesheets/select_modal.css.scss
 create mode 100644 apps/workbench/app/controllers/folders_controller.rb
 create mode 100644 apps/workbench/app/controllers/keep_services_controller.rb
 create mode 100644 apps/workbench/app/helpers/arvados_api_client_helper.rb
 create mode 100644 apps/workbench/app/helpers/folders_helper.rb
 copy apps/workbench/app/models/{keep_disk.rb => keep_service.rb} (70%)
 create mode 100644 apps/workbench/app/views/application/_show_object_button.html.erb
 create mode 100644 apps/workbench/app/views/collections/_sharing_button.html.erb
 delete mode 100644 apps/workbench/app/views/collections/_show_jobs.html.erb
 delete mode 100644 apps/workbench/app/views/collections/_show_provenance.html.erb
 delete mode 100644 apps/workbench/app/views/collections/_show_source_data.html.erb
 create mode 100644 apps/workbench/app/views/collections/sharing_popup.js.erb
 create mode 100644 apps/workbench/app/views/collections/show.html.erb
 create mode 100644 apps/workbench/app/views/collections/show_file_links.html.erb
 create mode 100644 apps/workbench/app/views/folders/_choose.html.erb
 create mode 100644 apps/workbench/app/views/folders/_choose.js.erb
 create mode 100644 apps/workbench/app/views/folders/_show_folders.html.erb
 create mode 100644 apps/workbench/app/views/folders/remove_item.js.erb
 create mode 100644 apps/workbench/app/views/folders/show.html.erb
 create mode 100644 apps/workbench/app/views/keep_disks/_content_layout.html.erb
 delete mode 100644 apps/workbench/app/views/logs/show.html.erb
 create mode 100644 apps/workbench/app/views/pipeline_instances/_show_inputs.html.erb
 delete mode 100644 apps/workbench/config/initializers/zzz_arvados_api_client.rb
 rename apps/workbench/config/{initializers/zza_load_config.rb => load_config.rb} (100%)
 copy apps/workbench/test/{unit/job_test.rb => functional/folders_controller_test.rb} (57%)
 create mode 100644 apps/workbench/test/integration/folders_test.rb
 create mode 100644 apps/workbench/test/integration/pipeline_instances_test.rb
 create mode 100644 apps/workbench/test/unit/helpers/folders_helper_test.rb
 create mode 100644 doc/api/methods/keep_services.html.textile.liquid
 create mode 100644 doc/api/schema/KeepService.html.textile.liquid
 delete mode 100644 doc/install/index.html.md.liquid
 create mode 100644 doc/install/index.html.textile.liquid
 create mode 100644 doc/sdk/java/index.html.textile.liquid
 create mode 100644 docker/jobs/Dockerfile
 create mode 100644 sdk/cli/test/test_arv-run-pipeline-instance.rb
 create mode 100755 sdk/go/go.sh
 create mode 100644 sdk/go/src/arvados.org/keepclient/hashcheck.go
 create mode 100644 sdk/go/src/arvados.org/keepclient/hashcheck_test.go
 create mode 100644 sdk/go/src/arvados.org/keepclient/keepclient.go
 create mode 100644 sdk/go/src/arvados.org/keepclient/keepclient_test.go
 create mode 100644 sdk/go/src/arvados.org/keepclient/support.go
 create mode 100644 sdk/go/src/arvados.org/streamer/streamer.go
 create mode 100644 sdk/go/src/arvados.org/streamer/streamer_test.go
 create mode 100644 sdk/go/src/arvados.org/streamer/transfer.go
 create mode 100644 sdk/java/.classpath
 create mode 100644 sdk/java/.project
 create mode 100644 sdk/java/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 sdk/java/ArvadosSDKJavaExample.java
 create mode 100644 sdk/java/ArvadosSDKJavaExampleWithPrompt.java
 create mode 100644 sdk/java/README
 create mode 100644 sdk/java/pom.xml
 create mode 100644 sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
 create mode 100644 sdk/java/src/main/java/org/arvados/sdk/java/MethodDetails.java
 create mode 100644 sdk/java/src/main/resources/log4j.properties
 create mode 100644 sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
 create mode 100644 sdk/java/src/test/resources/first_pipeline.json
 copy apps/workbench/app/mailers/.gitkeep => sdk/python/arvados/commands/__init__.py (100%)
 create mode 100644 sdk/python/arvados/commands/put.py
 create mode 100644 sdk/python/arvados/events.py
 delete mode 100644 sdk/python/arvados/fuse.py
 delete mode 100755 sdk/python/bin/arv-mount
 delete mode 100755 sdk/python/build.sh
 rename sdk/python/{setup.py.src => setup.py} (74%)
 create mode 100644 sdk/python/test_cmdline.py
 delete mode 100644 sdk/python/test_keep_client.py
 delete mode 100644 sdk/python/test_mount.py
 create mode 100644 sdk/python/tests/arvados_testutil.py
 rename sdk/python/{testdata => tests/data}/1000G_ref_manifest (100%)
 rename sdk/python/{testdata => tests/data}/jlake_manifest (100%)
 create mode 100644 sdk/python/tests/run_test_server.py
 create mode 100644 sdk/python/tests/test_arv-put.py
 rename sdk/python/{ => tests}/test_collections.py (68%)
 create mode 100644 sdk/python/tests/test_keep_client.py
 create mode 100644 sdk/python/tests/test_keep_locator.py
 rename sdk/python/{ => tests}/test_pipeline_template.py (76%)
 rename sdk/python/{ => tests}/test_util.py (100%)
 create mode 100644 sdk/python/tests/test_websockets.py
 delete mode 100644 sdk/ruby/Gemfile.lock
 create mode 100644 services/api/app/controllers/arvados/v1/keep_services_controller.rb
 create mode 100644 services/api/app/models/keep_service.rb
 create mode 100644 services/api/app/models/locator.rb
 delete mode 100644 services/api/config/initializers/assign_uuid.rb
 delete mode 100644 services/api/config/initializers/secret_token.rb
 create mode 100644 services/api/db/migrate/20140519205916_create_keep_services.rb
 create mode 100644 services/api/db/migrate/20140527152921_add_description_to_pipeline_templates.rb
 delete mode 100644 services/api/lib/assign_uuid.rb
 create mode 100644 services/api/lib/can_be_an_owner.rb
 create mode 100644 services/api/lib/has_uuid.rb
 delete mode 100755 services/api/script/import_commits.rb
 create mode 100644 services/api/test/fixtures/keep_services.yml
 create mode 100644 services/api/test/functional/arvados/v1/filters_test.rb
 create mode 100644 services/api/test/functional/arvados/v1/keep_services_controller_test.rb
 create mode 100644 services/api/test/integration/keep_proxy_test.rb
 create mode 100644 services/api/test/integration/user_sessions_test.rb
 create mode 100644 services/api/test/unit/arvados_model_test.rb
 copy apps/workbench/test/unit/job_test.rb => services/api/test/unit/keep_service_test.rb (61%)
 create mode 100644 services/api/test/unit/owner_test.rb
 create mode 100755 services/datamanager/experimental/datamanager.py
 create mode 100755 services/datamanager/experimental/datamanager_test.py
 create mode 120000 services/fuse/.gitignore
 create mode 100644 services/fuse/arvados_fuse/__init__.py
 create mode 100755 services/fuse/bin/arv-mount
 rename {sdk/python => services/fuse}/readme.llfuse (100%)
 create mode 100644 services/fuse/requirements.txt
 create mode 100644 services/fuse/setup.py
 create mode 120000 services/fuse/tests/run_test_server.py
 create mode 100644 services/fuse/tests/test_mount.py
 delete mode 100755 services/keep/build.sh
 create mode 100755 services/keep/go.sh
 create mode 100644 services/keep/src/arvados.org/keepproxy/keepproxy.go
 create mode 100644 services/keep/src/arvados.org/keepproxy/keepproxy_test.go
 create mode 100644 services/keep/src/keep/handler_test.go

       via  4609a76d9b84e0f63233cdf6dcbef376b1686b69 (commit)
       via  0c1c7fa2cba96aae542db0e6b6991c71d5ff578a (commit)
       via  b6ea1fe3bf38bf28823c80b3aef98239a1c0311b (commit)
       via  c1e7255a85dfc2807ba78e1cf9d109d896c80b42 (commit)
       via  b01252252e30851993c25817e07b574be66ce17f (commit)
       via  21485541dec5b6df36aaba7d4c2a1e96ba65dec6 (commit)
       via  8191d7365a61f4d4309c2f0b387188303320a889 (commit)
       via  39b2ed3024860262747fd6622433e0bf7ba39530 (commit)
       via  5b15dc0308bd3ddcc3c50828269888b5811d0007 (commit)
       via  15cc0bc32eb57c02b566826598c6de2a8587ef9f (commit)
       via  3107d80e87c4fd8a4c6f6e06d9a22537bc1f19b0 (commit)
       via  c7ee5e02cae78d3edff6ed393d776c4995441896 (commit)
       via  ffe3cdbc8c37e2b4a4e3ea4f67c1c9ca5d81e2ed (commit)
       via  c5f14dadb8306f55035dc0c54ec2bdd0acbcc705 (commit)
       via  3c68bb92a1f59bd762ac02b72f2e11f3296b40c9 (commit)
       via  0a4f2421e30dc0ae43908310a3328cc8553d7a76 (commit)
       via  8f65fcff76bdc20e5a15368a30b9ce27c262d57f (commit)
       via  83b6a3fdd9a0fe432758dd44acf252bbd129a930 (commit)
       via  06cf8e35c69540ae44890f8e96961e31cb7fbe66 (commit)
       via  347fcb3c09ba4cbcd0385c21b0dd409eebe3b93c (commit)
       via  6d23a7362308b808a10b698c84a022287d1668a6 (commit)
       via  8b7ea9235e5761beab0dbc92d9c400574f672a15 (commit)
       via  8f5755f5ec65da08ffe9dfc6856848ec747a31a8 (commit)
       via  aa384c3f2d8b7d1782ea059e1eb56c15f542a40c (commit)
       via  aa3d77be5c99f5f8724fb010336b3379f97985c3 (commit)
       via  f9eeccd5633231fdd3e4c7b2fb5c694dff137de9 (commit)
       via  475f5ad53cfe66375aa14fb28419c5b393cc946e (commit)
       via  bd7ce9eaf1081f760fe3b13a9b5f3c74dcd44855 (commit)
       via  0a5265697a17a6703f89df12f665068817b90fcf (commit)
       via  609b941f5f1787ea8380518551b63e259d36c657 (commit)
       via  d603426ef3b87a1a84e71122cbf8330074d68fef (commit)
       via  c63dcd2c097233f322e6980815347b0c47f9e5bf (commit)
       via  516d43a18765674c2a5d0f0bc2a4a4a789d4c61c (commit)
       via  0888e3a31a1af2041e316a2e7b3db74af1cea373 (commit)
       via  fe85ec515483d95ac36e00e5a411da9c1f76f2de (commit)
       via  58a78243026ac9a4569d6cc05bf77045bff7ab20 (commit)
       via  283154a1d4ebc745f03abeef96c0571d284d4a70 (commit)
       via  91e7c9058bf1f38ad50008a6fd2397c1e15d33eb (commit)
       via  5d3b5a301e1087531b087e06e9d8d4607ad66917 (commit)
       via  5c6e82a9eec78dea7c3a991aa735cdc5e87c5120 (commit)
       via  6c3086d313afba5e37e6949ecb454519b8d042e4 (commit)
       via  66db17f904a1591c135a1aa196865d8f53aa7632 (commit)
       via  bd4eb5f518a3253f7858128419f51e2a1b25f951 (commit)
       via  73dd64f9c81989aad456f1aee8f0ad909703b859 (commit)
       via  4406d50cdf2ae7b2c3e9846ddcf629ad535cf7fa (commit)
       via  601d191c37c7edcaca8a6176eae736982f750a89 (commit)
       via  ae4db6299b2d255bbc08a4c6fd3e77abcf030fb8 (commit)
       via  fc2b0d0b96456bd260f2f508c2da10d74aba22f2 (commit)
       via  3507e379566beba249c137c5decb062decc24cf2 (commit)
       via  29a07d251a7eecd0ae4965ac5113f9de7da4e6b7 (commit)
       via  878620a8b1827ed3f58e267a89f76c2dbeaa4b65 (commit)
       via  f87dd9682c5c1583e7d908cf8ed7fae6e4a53c7a (commit)
       via  1ee02554ce8b7ec41264f457897a9309ae3fe1a5 (commit)
       via  5cf3dd70bc2f2947ee42afadbced3f3cde81fa16 (commit)
       via  8dbe66a50a101509b921e9eba33f5f392ce6eed1 (commit)
       via  b2812e9406253ded204ac853fb47437e8118bcdd (commit)
       via  9d4f6f0284011fbc7a8edd203d1fab93a9a61321 (commit)
       via  057f835f3c2f28fcaad3baebe9c279a9d6548731 (commit)
       via  e9fc734bb270a5648c923ed0419ff745e283419c (commit)
       via  3d869c8fd045305bd1933f03f72da153dfd985af (commit)
       via  e9c5c59ee3dc288146eed9ec1e2405e44c99dc8c (commit)
       via  e1868aea69f51b3fb3d281a0dcca66b9de239cfa (commit)
       via  ba1b5732843a1b78c11fc311a52128acc1fb9f6d (commit)
       via  30b6c5a0f8dc91c76ca30ba4b5263b7eab858bdb (commit)
       via  c811cb98bce53f775a865a04ea0f01635dbe75f3 (commit)
       via  e947468785cfcd8ebd1324ca1b477351a55b10fd (commit)
       via  317064a4ddead0d64d6e312a21d2bb34504aa104 (commit)
       via  82b46502f25b6992c93bfe7689acc095aa447e5b (commit)
       via  19f4e54627a88c115e299fa328acf22504d1ce66 (commit)
       via  ebb166d65eb37f89edeccfc5be97014f3f2a73e2 (commit)
       via  46460c9615f07184ecb9917e4c948635712859da (commit)
       via  40b6a69496aa50349d07daa6b28ae36bddd8a6a4 (commit)
       via  e289f5b586c24baf0bbd74e206d906297751db56 (commit)
       via  a01f0a9b9860ca574e0078a0e95afb783e711dc1 (commit)
       via  83304d43227dce877cc86d87f8f25463a4fac096 (commit)
       via  6c92a0d8acd0a5525bbe566a3e202b93d498b370 (commit)
       via  4ac438924f1e365cf5231140c9640c004ad4f1ff (commit)
       via  5805fc322c7fd0c83eb9805a915aecd693cef5ee (commit)
       via  ec07cd1ad893c15d94844b3cf2d8d95ae5cfd611 (commit)
       via  f049df0d8d69b8f4e235869103be2c814382bcce (commit)
       via  747aa7b4d080b4ea95bf7d6d8643c43e70966f33 (commit)
       via  122e392ac6d9b36e376937f4dc2f910118b112ac (commit)
       via  9e4c1f166766dcbd0cfc8bc17ff13f7a2dc8508d (commit)
       via  b80867f0ae046c907cbd208facf7f98bee5a4f85 (commit)
       via  68f03bd3db859e60237507ec08c789a2c3a89ca9 (commit)
       via  fbb501e3c0efb10851c00a91c0538bedb8c5e454 (commit)
       via  ab5ff91383be492d5a5bcbfdcc008cb32f37a03d (commit)
       via  16413f6ebe1bba3a070cdff3d7436ad508db8514 (commit)
       via  319cc7b3862ff831798f92bcb2f0c921d208147d (commit)
       via  7199f034c15930a3a733e526e12fa93df7f9d4fb (commit)
       via  4d50cea3609918775bf2a07981f1ef719067502b (commit)
       via  fd7ac9bf21002cc8a3cdb9a5e16c588ff734dfab (commit)
       via  a5f005b1b1175771ea708daee632a76f502eb9e6 (commit)
       via  fba94dcc012a22c48b2b3b3bc9b0e134d605e725 (commit)
       via  7c810a0a2ad922e1bf966c026a96327c03ded77f (commit)
       via  30228998e995720e4c2e1a3f0b52be231d9fbb9a (commit)
       via  7ca1a382f7c59e29a03c765a6542f95a31ecdd07 (commit)
       via  93901e794e11dbb5717288b006714fac7d13cb21 (commit)
       via  fe84c84827af6092784408629e4cde0663fe6af8 (commit)
       via  1113b89204db5201806d03ecedaa99f177a91a2d (commit)
       via  a8da71bb7b0c4f319afd50ee6cd5d593f1237d33 (commit)
       via  facb17a2885e6b6d3e998e15862a3c6e970e8cf1 (commit)
       via  f60b9d7057fef32a7b61ea4de55b3d95b5b28f6c (commit)
       via  037ec427df8bb32953f5158d0cd9d074ace776e8 (commit)
       via  52bf3c0924da239488fff3ed9907c3478ee44e6b (commit)
       via  010a56c1ac501c8ae18b71198d53c17e60f9d9e3 (commit)
       via  8e60aa5c834a1a2a741a87a8155b8db9b4c46da3 (commit)
       via  a1e0f75938c65b827396e6796e9ccb99eecfe608 (commit)
       via  c61379a97dd46273da01792a83f4cae9736d6adf (commit)
       via  2b2adb421b9b82b75fe8a635442dfe8e1fab775a (commit)
       via  c3b30a4104264f78088133b7d758e1920b1525af (commit)
       via  69a1f282ad2983d36bd8fb7c41c681e1baa5dfa1 (commit)
       via  a8749c6b2c7d339c3355dd130ca37c9c876f72a5 (commit)
       via  86680eab88b02d7f8bfe2f76308668957c825c36 (commit)
       via  f7a3e11f6017b329bb381f7ef10f9bae9dcece8f (commit)
       via  9c4c0fd4015865e8f2f9f9c9867c7d847cd34aeb (commit)
       via  f4b7ce1ad093bd4c131ee603d053a329f003b754 (commit)
       via  6df740c374ba869fd2aba618ab6d26ef641b6efd (commit)
       via  6abd2d88cce48e0c5f908ed584cd5f575a82de90 (commit)
       via  8633979010e2f15b3b88cab2a610019a336745c7 (commit)
       via  31acc5982c7f002944e1c8cecf83ca98cc3c3e76 (commit)
       via  1e0a693f16e599bb05a11933154da0f73030ecf7 (commit)
       via  e96a00962a6f5fcf65529630e4f2850fbfde2b73 (commit)
       via  f36fe36bd5e64b55b8699fae187c6accb678db2b (commit)
       via  5cdf402cfc23ad287f1570b9db19a72a64b91fdc (commit)
       via  39e38f830e8a12c93d5a788d15a5834b6f911217 (commit)
       via  d269c98c322e0a65ef36730e6a57c98a1ed754fa (commit)
       via  b25c3bd978ccc68b42b3b68392863456fe4441fa (commit)
       via  7c8e4a8d357ad8140eab83687c36cafd4e110e71 (commit)
       via  521457373a8f1e46f44a43311be2d9242ad5d0a9 (commit)
       via  56d21dc3d5823117729df3db6186da96f277b328 (commit)
       via  651638a28db20a2016dff02e3baa106ab27ff945 (commit)
       via  7a82503a45c632918f8f032913dbbf6711a02e2e (commit)
       via  c0c0d769cd812e87efa392649380dc5ba8a25cd4 (commit)
       via  293b52241445edf9eb86e0a0f9b63fccc3aa7fbd (commit)
       via  b06affa05ffbb121512ae179feb06c0bf90541bd (commit)
       via  8570c81e79a9c00a314e2cf28a008b9aeae65037 (commit)
       via  8815915612d1d8fef2001083bec2a24b3ed2eb3f (commit)
       via  7331dca3c9f4a75e291b9b975f7cd570ad2b3f96 (commit)
       via  b668cb88f24085f92858b268120650c28d3a79af (commit)
       via  ec4e4a338f45ce39b4081f67c2b991c15fdf0fcd (commit)
       via  14eddaec927be590682e226b9998c3e616c0b72e (commit)
       via  216733543e5348ef8ef25ee5edbe6ed2dd35f5d3 (commit)
       via  34ab7b208c7eb14ccae1e31831286acf9ea29487 (commit)
       via  45d037864f655373dacd681d753ea3270f4ba997 (commit)
       via  744ca00ccd1e7fda9d4210b18c1f4a734f3b2261 (commit)
       via  ed101805b04c70bcbf1b070dceba2aee72170377 (commit)
       via  27ffca811e6f43225fc82d582d1962eebbd1ab6e (commit)
       via  b646cec74484bf07a54f4be2de712f50dc387aa0 (commit)
       via  b28565c8aa08cbf70762fa69e49c5067fcb57e96 (commit)
       via  140944b37fac0f631e8366222b2cbc5d5373ba8a (commit)
       via  1db007eb53d0401a7a0ba168add7c4a094790fa5 (commit)
       via  0d35501f448a8e7ca44152429d3d38edaa9bb30c (commit)
       via  f3dd3608f2c32fd4dcd9551bfa1b871d816954d5 (commit)
       via  8efba7f42f882b2126a15e1bbcf385a5ab207b11 (commit)
       via  8e5db2221d848c35e751b932da8126b559d292f0 (commit)
       via  43a2aef67a96033f54e9f19cd9788e059e72115a (commit)
       via  c95e2762749ac2eb98fd7aec45134549174213d8 (commit)
       via  e35cb0f48bbead47ad0c628c280bfc2cc32035ac (commit)
       via  d61f27791aa739dfc93c2f953236fffd4f0fcf6c (commit)
       via  2099a0a3f0ef3371ba30ed0955bbc75ffa332701 (commit)
       via  675794872a5d064cf0a8177d662555c04b0dae51 (commit)
       via  12f8c88325daf4c6af8cbf091ea64cc5d64566c0 (commit)
       via  575457ac8645c61ca71e94ce074291ec002b4c24 (commit)
       via  d5823126a51b7c31915e01fee100abe9468014e5 (commit)
       via  be92cf19aa7b61576ddcee0fd360103ca43ef5ea (commit)
       via  67492abc51acc09abec9e754fc1d845679db3e87 (commit)
       via  49a6ced3c7a540a7da7155ab1c3120a5227c620c (commit)
       via  86dffe03ec74387d14da9ceb17934bbdab1239b9 (commit)
       via  178f2834f7c9585485df30b1fe0e53b27e4edac5 (commit)
       via  fff404a0e2ebe2582f616526c486ad0dbecce3c8 (commit)
       via  66f1be77149feb033e3adc17c37a09a391eec6e9 (commit)
       via  2d4553d3d8e6f4d2e8f17e21664d46607a11dfb8 (commit)
       via  2328a5363e90f2588113cc6ea76329ef93197ca0 (commit)
       via  c66b82f901113491f8a16a046ee52fb40d8d2939 (commit)
       via  84decc8949fc51ec2eaf906fc2c4cbbb3df807dd (commit)
       via  5aac4c685edaa685c255dcf79aefde46c267e6d7 (commit)
       via  8ab98660dfc1973cced8b1deed355336cf4c5e64 (commit)
       via  540dbe405430bc8d58a07cfff141b4b4bc9811c1 (commit)
       via  ea17ec3d053bd2f792730c5ea74d03109ef942ce (commit)
       via  a46ebd3da9f41522abde23685bba92f538f76f03 (commit)
       via  c2e70e05178c9569e9de2ac5b3ef47440c49efc5 (commit)
       via  8f20c1723c0614fabedb2c2468932d9245a1fc86 (commit)
       via  77504f6d369bd7bd323748d5347d6d99ed9c75ca (commit)
       via  f8743ac8fa1ed9dc8c7c4f7a23803ffe8721cfa6 (commit)
       via  3ba5aa15ea0156a4fce63dcb43b7f972b4c760df (commit)
       via  d54a48fa6fe94e9b80bf32c1d357e4dc3b3d67c3 (commit)
       via  1b3750c9ffbec7a76b374023188c5c13882dc651 (commit)
       via  25bdeb97230abe28b9d5d7b13aa72549d93df87b (commit)
       via  45216b83b108a3c48cdd8b1aaf898ccd93188507 (commit)
       via  32eafceeb044696ac7db49bbe1d6329e0e3785c0 (commit)
       via  64d339fa3eb693908ea107a10a4c376ba3b51d7b (commit)
       via  1f43dd857829bd1134837c43a8ac5d653c0c68b1 (commit)
       via  123ce64a39849224481a67cc400a04c5022b639f (commit)
       via  52056c365c8936e34bc6b22a01bcacb556737914 (commit)
       via  83277602806099428b859b88745ad85836cd6ee4 (commit)
       via  a2c261dada5b47077c7930a2133bb000631fab66 (commit)
       via  dffa580d39b977746f6950b835b78b949a862c9d (commit)
       via  1924b28c8f715bc08752fb219d1fd8145ccfe84f (commit)
       via  0bec8ec8a130cb3af013b6097cf322938fce5671 (commit)
       via  fa6b0b65fb71b66e36f982f4f25e9751672d0834 (commit)
       via  661b2bcd6269fae643fd7d0c46649715716959eb (commit)
       via  f876a32276a73d89ab695e5954c9ea3816b38db9 (commit)
       via  2dc7f15f81ea7f460114482614d8ec5814c36fbf (commit)
       via  b64b0a4082eeba5d17705dca3bedf53b99ded617 (commit)
       via  77d3ed33f525bd6859580954c6d7b9b36b394b98 (commit)
       via  35cd1ab03e06910a2536bb473529511b8af20b94 (commit)
       via  49d953403625ca145081f9ccd914e70d49e51d49 (commit)
       via  4d1e1b22d470d2fec9078c64c058c69850e440d6 (commit)
       via  ebf002120164e185691b6bf418a17b23124614a8 (commit)
       via  bbaa4e880fd232bd270644bff24e33eb06784f85 (commit)
       via  1bb9f9ca3ffe077f2d90d7de65fbee37a717ef23 (commit)
       via  e5b58426fb9064da76b207cd6d8aaaff05331d64 (commit)
       via  b0d3b048f6f16dd80e119623e0d4cb558a6537f7 (commit)
       via  7d2ce5fa717f587963f64e466a9c3dd33faef27b (commit)
       via  0c5de14523d1e90297c091675ee621ce6664f65b (commit)
       via  cdec3d68520096ca95a66f73ecf22bb0b22363a1 (commit)
       via  e1d71c83e17ba6d06e2442ed775f7efd4ea32d84 (commit)
       via  735a268880783acc77a2b99a5ac32c819c154ad9 (commit)
       via  46e29d7fbf2628a01cb31ff7117732293129fd65 (commit)
       via  ea4b289bea3baebde1d23bbf38ded4e8da7ff298 (commit)
       via  8cc0ba260202de5627af49691d259928ad7ffcc6 (commit)
       via  43f38dbf96127a4036be5e8b01f9e82d825ad949 (commit)
       via  4b6ae0c2b418fd3192b8248b3e8a614502c47060 (commit)
       via  e5b3a58e1106fe71d781995560f8b197dbaecbca (commit)
       via  e817beda3c9aefd99b1ce9b9c77cd2f346e14a01 (commit)
       via  fc16a366bf1061bfc2dc08ab1477c7febf8c3c5a (commit)
       via  9a86712b5b6ca3490739e5b75d809be4c853e9a3 (commit)
       via  c6a6693dc36615effca5e3363b81199362007c59 (commit)
       via  38cef39fbdfeb8176e4c755d12e43a450e868439 (commit)
       via  89096c06922b406f7157082de410e40960f5c73e (commit)
       via  2f32f3483d18e9a89a8b5c13e022495c8681db04 (commit)
       via  9d6ce80869e187a7c5a574ea5a5272bb89dd81ce (commit)
       via  e2dc7f5b9068e23822391bd3cf987b6f14e83ec0 (commit)
       via  3986815ae5e7e61c48f3ed979c32358710ef7e20 (commit)
       via  a2273675f29a0f85cb80e62b3742e82d63c365e9 (commit)
       via  64aac6153e1819738d9d80e156572aeb9bf07f97 (commit)
       via  86a02fd0842381002c46b590d774c561dbbaf19a (commit)
       via  aa7ec423d92b977320cc5708bd9556021d50d77a (commit)
       via  1797ee0dea063ff59361740ee512c84d086dacaf (commit)
       via  2768b056f5d99952d2d2c4ba8cd1dfbb898901e3 (commit)
       via  c965f26c02b0f358eccf6989e49703d173206486 (commit)
       via  f1a04b3e3c61cc92501d18863ccf0abb162f9855 (commit)
       via  6d1b822d5a168166deb44d4256bf0abcfd618c67 (commit)
       via  9cdf7a2f51489403a488c3d06cf252a36b8e4198 (commit)
       via  040f1c94dfa1a53356d24e77afdbc0f2e5cfe91c (commit)
       via  ab710b74b2751f9a0d4eb5c5f950c6bb04865e79 (commit)
       via  10bcbe8343f6f91f3c8e338a4a53766f7ba26ef1 (commit)
       via  286c3627d978a7862b7f7eea366aa48ab930786d (commit)
       via  2f27ee200f6cc4c97d30084e34330efef2068ebf (commit)
       via  9c3beb526fe3bdfd6769abd0def5a1634074d353 (commit)
       via  ce2d2f5807822534756e52ac04bc272dd572d13d (commit)
       via  50a277569ad6277d95b7e3be83ddefc7b92661f4 (commit)
       via  a84be631958ac0bb45b5e06efdb2782f02fdb2af (commit)
       via  aad9cd74e61cff985944c400c40fe3f85907a1e7 (commit)
       via  efb58099eebde5bebb4cbfba9ce4ba70a142fc56 (commit)
       via  c08254d5d6afcb5104cd65109d16479bf44ebb85 (commit)
       via  c3367d7b827035d0cfc3418bc028a67142696e13 (commit)
       via  941bcf698f1cfb498510a13f23d3c9d403b0435f (commit)
       via  7ed1dcf8b0bfa8fc78f228a07b2318094b68abea (commit)
       via  9482cf9f326ce64f9ea100aa34680278bdd6018e (commit)
       via  5da718633e3663073a624db78274cd69e5dfe6e0 (commit)
       via  8a4b7ab667a30f883dfeb0892f9fe03defc47a8f (commit)
       via  d07841a4b10d5677a6e4f80df1ba4f1a8bd13be9 (commit)
       via  4e9567a57ed7af343e24eeb4dc403a1eb73b1f81 (commit)
       via  90744f405977dcfac40d5dea3dbe79391080b80d (commit)
       via  94abf66ab822425b025b8c88ebf9a2754b776ac3 (commit)
       via  1b6c6a52d0bba5b0a03524c7477ee9e8836c5f5b (commit)
       via  471cc718e0cf5a1846feb444887c35c285f33cdf (commit)
       via  5cf70c36dd291410cdf177786a1a0ea0c25c06cb (commit)
       via  e6805dea66e86c6cdad036407f16fe17f45b8f94 (commit)
       via  6ea7ba8654f7620a5e0ba4f66d653026b3f002fe (commit)
       via  e35566eddb0c1e383e437e95b228f7898e7a1c16 (commit)
       via  043002e8d0dfd2a5dbb3cfc135ac21732c199c05 (commit)
       via  278fe7048f9035b350a60e032432c9119f151add (commit)
       via  7a873b4adfd0a7f94a4e7dfa64eb088caece46df (commit)
       via  7b4d7faff279490a40190208bd571a86090e2bf5 (commit)
       via  d3b11ddc2506de37b8e6538be69237d6d2a60a4a (commit)
       via  c3a88cbf511aa0954dac271ce6bda9c6e4f3191c (commit)
       via  4ec57745d2106e955fea4442c9eccb2fce7246c4 (commit)
       via  cd85fc2c07a0e9d8c34b81e4523ee3d1ebd696e9 (commit)
       via  83c873af757aea4217648cc5a909fcadcf3e93e4 (commit)
       via  f2574ec2e4ddef03c9504cd58741e73426ea1b17 (commit)
       via  e2eca205db4e40de582117790b1e48dbf3e5bf3a (commit)
       via  48ffdd5ac196771381c8dc9ab47cfad5f1929720 (commit)
       via  949c388c5ec3bc4f8cc6b3d503c11dcd20e5bbd4 (commit)
       via  03395937ba05b9e3192e346a355c691f45cc7c85 (commit)
       via  cff5301bbc1e1c8f8421fb56dca5a76dfebb058c (commit)
       via  2d9f17f33a9d8737d97705b8b77e3e1c05f7b411 (commit)
       via  67176a2637ca895015908c7c3bdb1ab7688c1b2c (commit)
       via  a797b27604a0f5a277d73e2d3522dec033fd4ecf (commit)
       via  6ebfb077cbe7357aadccc7ae4f803c61d66d0279 (commit)
       via  a792aabc3159439c66098935fea2da685eee7ed2 (commit)
       via  7ec5dedd6301ae84db941de986f2f0eacc4532e7 (commit)
       via  130bd6ec07cf6844861e49602d33b07dd2402595 (commit)
       via  a46e35694b573fd5c9b355c51323992670fc87b4 (commit)
       via  93842871ab5266e45fb6a29da89462af102a6384 (commit)
       via  85ab544a82c685a74d814a0e10c48624810be0af (commit)
       via  bfa9ee952c1ae3f03fe2f9fa781a132411963030 (commit)
       via  ce5b843c32f6ee74f02a40044073dd4288d16dee (commit)
       via  fba37ca64631be9e0bdfd17ca70d85dd2c896bfa (commit)
       via  548f183c23606b9febcadbbfd658aa921c3baaf5 (commit)
       via  ea9592e911a3ccdbbbfeed8812b67e968fe1cc5f (commit)
       via  3dccfa028282d8b667a7b447ea061b7eecc8618f (commit)
       via  f5339841222a2ac17d3c04d4e9912c0608041b2f (commit)
       via  b12f667daa270a4e3c656d16f30620ca763f9578 (commit)
       via  eb8eaafa2351d8cb8d4ba7408e0052d47fd56a2f (commit)
       via  675118822f0a9968672dd99320d9b3494bc2b148 (commit)
       via  243a6df519ee539ad9e5476cd6fcb51e4b0a48fe (commit)
       via  27f5c1635d56c3f3cb6c5ef069c28db939eec2a1 (commit)
       via  b534e4a2b167185e59ca657369fee06e5effa6cc (commit)
       via  7ca81caa537132acf4be86811e300b8a6ed3baac (commit)
       via  e678f2a0e5d223ddd5b2a6c6a8d14a8afa6d463d (commit)
       via  b1c303302dbac2ea6e9ab6775aecaf661b5da9c8 (commit)
       via  2b19cf9f9522dd0e8774031a54ce695e73fb72fe (commit)
       via  fb8dd22df54d0c8f87e97f41e1a1677741a47892 (commit)
       via  96b9b6b0a45ffb1965412fe9a12e23d10260ea8e (commit)
       via  900f179c96733c2ce9140b2d7767f97feb9eaff6 (commit)
       via  b093bbdccf67d895337e47bf32b0ab6f22bea632 (commit)
       via  f71c9e59bfff91da4b89050ceae27dbe3edcdb6c (commit)
       via  b91db14a4dced9d6ea124e86be3c796e6f2c8e8c (commit)
       via  a6c79a723f05e11c3b40d459e902eeca894c27b8 (commit)
       via  fb7f238945e33b07f1c80b0623315c1ecf86bca2 (commit)
       via  ff60e33ff3d9ad8144b9c269d12d1e5f18455416 (commit)
       via  09559ebbb9f52c8b8a47e21d0a9c5720f3a2b7c6 (commit)
       via  5c2372f1e53184a60d9e1366d26ce41bf405a0a9 (commit)
       via  99cd188a0cbd9143b690750e21abc8d8d5e6dbad (commit)
       via  e5f3ce60249a14f4fafdd9e0f31be45d1886a888 (commit)
       via  e6e94ca43f788b28d61c03f81b15ab5647f22d4c (commit)
       via  acef63e2e3e629da8b6825f33e6de7bf6bcc4fc2 (commit)
       via  b08f16445f02a02ea9246094657e93b354999b38 (commit)
       via  3e6368d077fa4831f93255e271a18842788183fb (commit)
       via  f54395a1b98c4146a795ce7b18e04c23630ab631 (commit)
       via  4742810338ec15a0654d18532f97f5ae41d48c5a (commit)
       via  67f17818338153fc6f7b0c65f51e97bbb16f0cc7 (commit)
       via  d0b6bb76a0a7478794faebd3e1e5ab94b717596d (commit)
       via  82393afcb6101fe6f601f6a752589d10b0909f8f (commit)
       via  8ef62a19514b4cc0dd886b01902016f19be09ccf (commit)
       via  2a493a9215f604c63ab7bc6f0e0956d10af8ef10 (commit)
       via  66d5cdb1f34d614e5ecf1da5ef6efcad3a5a51ab (commit)
       via  a6f78c31607b37d207dcebada38ee05335deac50 (commit)
       via  d836cb04ab7e577b3f7896d6b49e78b97ed832f8 (commit)
       via  7ff85869345089297f5196c4be3cee6f7ee03c6b (commit)
       via  100e1ab71d64e21f1c21de2fc305a6f92fa244dc (commit)
       via  8aaf3a61c6981160eaa779fb32064895de00e5a6 (commit)
       via  d455c8373cf39f4310d2b0e13e7a9d02aca0b2ab (commit)
       via  81b517450a657fc56b91b25426505bf9b3937db7 (commit)
       via  90bf8cae5f1ba931c7cc3be7864cad8ecca1ca5e (commit)
       via  465b105b0282efcdd63d88e1fb4e2eae11a195bc (commit)
       via  9e0031c0bf48acdb76118ee643290d97a94926de (commit)
       via  95db3bc262b44b508462e1b2d9ce7a55c5ba1ffc (commit)
       via  fb95d0d2d09c9537f5bdc503e51cf4f091d02c46 (commit)
       via  def9a846a5d9dd91cc0a1ed9c50dee35b81425c0 (commit)
       via  33d63c6d42e824744305df3e720f8e9cbcc87d78 (commit)
       via  fadf2b0fe1240f607fc91d65d6831621262afeb1 (commit)
       via  cf32ef421c037692e7ae896f695c61d8e3670f01 (commit)
       via  6022ddd1b07217b9b4f31e73493fc259bd19b696 (commit)
       via  28195ca73b4c86e0f17ce2db74f3d5669d344e23 (commit)
       via  717bee7044a2cd44678e13e116ec1be2a83cfe60 (commit)
       via  952599738f3c9f8901c895858865fc90b5e30c1d (commit)
       via  34ac761cb1fd2b7b9438765d14ded85dfab0453b (commit)
       via  e19b02f69914c086f979ec31eb603bb3b456cd15 (commit)
       via  e7ebb0cb4f642fbb2297e1ed54591244cc886f81 (commit)
       via  eef1936a73c7c85ba530cca028230241f5171333 (commit)
       via  8dea7244cf5e50b9fa70bec15b1db3fd2cdd03bf (commit)
       via  9da4a83c2cb602e872bb606503fa438dd3296864 (commit)
       via  2d79630f56a010aa0b7544b876c7c31b122c70af (commit)
       via  3c3bc28bc6c991d8111dd66bfef6fe310e00f232 (commit)
       via  949e27e0dd0a97cf78f0b90636df387fa0d65be3 (commit)
       via  b20333af04a3507b85c52cc4e50a0e2c3fc04433 (commit)
       via  a7100af369a892a7f38eb2875320a7c742ec4da8 (commit)
       via  60c604d8e89501af180487ae7b39c1e25a66c8f3 (commit)
       via  faf355bede4c4a9b01ef5658fa925cec6e4b503f (commit)
       via  7c21045a213c5cc8846a263124271c93d38d78b1 (commit)
       via  b249529bb02dd34e54f8816222ebf81d778c957b (commit)
       via  a8ebe9f478e897334af0fcda79704de77c4dcea6 (commit)
       via  568d941d3fe4bc554af0bca6c1dc4d9fc66ce999 (commit)
       via  179c431787943f3711f2127d127c33a831378b06 (commit)
       via  4556f61d8f4ec294afa7980d1b00882e2a1ffdfa (commit)
       via  1a844d06238368c9d5c946a34c0c52485de1c435 (commit)
       via  dc068f04e966c35eee87af8da280bbbeb9ba3595 (commit)
       via  8fa8b34bcc334388d8c885e3f0e192503fdb7616 (commit)
       via  04ec74cf7dedfbb0becea0e0cb5018ccf55a31eb (commit)
       via  264b0a629a67888a9d982b3a4398c0e0e4119089 (commit)
       via  1ca9c477ffa476305a920a0df7ae1e8d5b69c8b2 (commit)
       via  087773f25a3df2d35e402f1afc6c7204a0852727 (commit)
       via  bfd037dee4c82f355816c449dd25921fc2923837 (commit)
       via  ef47dfeb871015d9da6d5e2e0a04100c2e9e8eee (commit)
       via  383aa9f906c32876a71599024084283627070adb (commit)
       via  f990e6880050eafaf3b6bfd063e36aa016e8682a (commit)
       via  28fe4303b1c04142bf0939b05280749e590673f0 (commit)
       via  f900ccf514a3653a64002fe07d9ce5b16adcfd51 (commit)
       via  a87ad3026e4f7e1cc2e22082a523fa7143388c88 (commit)
       via  b2a8e117cd2a02851c69136f76a1e63005386f1d (commit)
       via  97d8fa64264069fe6d8ae6c8131fd3cc2f347189 (commit)
       via  2a3f67fa270b9660d4dc17b55c48fa781bdba4bb (commit)
       via  c501af3c5d3216c2ca56ab77f4f05bd74198c622 (commit)
       via  5a977746e6df04e3ce1578299e98ed7ec645fcdd (commit)
       via  0c1af8806516569044c7354ff58f7371a510594d (commit)
       via  16af0b22def5b80a1861788907a2fc45b14e3273 (commit)
       via  15945ebab4fc71980b2c6ddceb149a3d7365c29e (commit)
       via  a9eaabb02fe7110f0e16bcd7f27d1a0cd5eab08b (commit)
       via  3aaf11c2dd372b5d34ba317a1a4b761d263f86d6 (commit)
       via  6132d8efbc522b71d0084160abaaa87031678bdc (commit)
       via  eed7af8f901adb263c870a2277ec166467a28d77 (commit)
       via  d97e3de81c48673b0e1d3927edaaf0e560a9a2ba (commit)
       via  14c312c452e0e010d617c02a33b94a178632ac26 (commit)
       via  06a0c1d9f2e6cf1d5a9fd00b53071d857252f9fa (commit)
       via  8b030cb82d414bfa0559a205c150f4bfe792caba (commit)
       via  5c3c04ad25cfabaa860bb0ea3f3dc078a9562008 (commit)
       via  5e968d7875c62a6145b7aefc39f070d14f4c97e8 (commit)
       via  eff3277fa6800bbc4ac81654f8883bbfd3a85d30 (commit)
       via  002f863605469cee7e112f4c16a78e3b6278672c (commit)
       via  6c2a704b7a2d721087976b2b8ec4f22cdaf44178 (commit)
       via  cdf7b162906cb37d4ecf88ff6c72433bcdd8fc84 (commit)
       via  722862465129f1f30cbb2432132140883d31b4ca (commit)
       via  27fa0d391eb95008acf41ba207bc13b8c4fe794c (commit)
       via  f7f61eca36d66a723b02ac34db888f5fbdc63fc8 (commit)
       via  2de827e57ae9ba1b0d322199d071ae900a5b7e0c (commit)
       via  d9aa5decc6edce30285df049277de2cf2c138c26 (commit)
       via  222ce386e36b3d146e718a5d2f64a95fb30996bb (commit)
       via  26d69329e87e343b84a132a4754068aca66ad132 (commit)
       via  036a701b45399e0114eed5b0e1ce6b478c614534 (commit)
       via  b4516edf0a7cd1b584442953a8c965fc65104906 (commit)
       via  a3cd0039e84373541d6648b76647457be5a7e098 (commit)
       via  8fcba3783d9a79bb18a00d339f9b3222f1eccd7f (commit)
       via  1c6bc4bcac86195a120e6be564703e7d2133dbe7 (commit)
       via  71143e41dbc8755d5ccb97990525bbb05aad69e9 (commit)
       via  31c711afc4ff8a1728aeb3e5f405a131047671c9 (commit)
       via  88590483c4d24904267b550cbb3af7d5a11d8953 (commit)
       via  5b252752cdfd8b129d10913f7e2ec7b47f544ead (commit)
       via  871a7250874ec52543bed51c8b6d14a3ab860eb8 (commit)
       via  2376147b3d039acf08456a53015d59f04eabbf82 (commit)
       via  fde1e4f00e82c7a776892c1ab9c5edacf05dc1c3 (commit)
       via  97252f1f34486073c778c0a1c9de25f2f275cacd (commit)
       via  ff6a6fb89b42d17693786be6405c267bee445c4d (commit)
       via  7fb83a3380e62721801a4980c48ba78208c7b2e2 (commit)
       via  45938e41f983ce41d8b55c3f980b7f31bc269124 (commit)
       via  f91c73aba940adf1e9fbd530d102931af45a63c5 (commit)
       via  d5c8f2dc3faf77da783c2016630808f6351a4d6f (commit)
       via  1a4846b2e916d3cf3958cf77117d710f72fa61cf (commit)
       via  297f48f2e6233da1e61cda57af30c9c6b64f0908 (commit)
       via  11b48e1b182cef419918d4df1a4998001d665a9a (commit)
       via  d70ff3d064c9a6da8b8678b249abf7f4b93b6370 (commit)
       via  1d5b46697b5d7c68b0bb159fc570ed63c1e3acc3 (commit)
       via  9736526e7abfd50eb8f18293f8ac312bf61937e4 (commit)
       via  52a3016af3ff21b8fb5402bf70d0aab07f5ee486 (commit)
       via  69141a18be1821daf4816046e65b2aea75a975be (commit)
       via  e65b2e685833e1d850c8d671fd1df9d4e4fea4a3 (commit)
       via  fdbea9e3c225a3184f8f7c2fac52abde643603c6 (commit)
       via  a04d67ef0823d6c87e8515cfe6cf88793ef5e3bb (commit)
       via  df2ce01533175ff7190a5d13fdca4b61f22befd3 (commit)
       via  638d136057f4d9ed19f132075079da396217d6fd (commit)
       via  f493dd4dfab89c228fab05e2b46851211c7fc586 (commit)
       via  ba764a7a0878b9cf0dd8d22ad4e12774d8e5f550 (commit)
       via  b63b4b51a7bdaa38960e0b4428141c16c0a07d7a (commit)
       via  2b8857f631f58df2baa93077185fb7a5a29c6aad (commit)
       via  facf07110e28fe552342fbad623d621b43e22b99 (commit)
       via  6f3853aef989e8c2243159bbf0ea352948ae4878 (commit)
       via  67b4630e47e0f70e3cdbcaa8a7d039543e3c6a34 (commit)
       via  7e049a91425a51398f38e6b1ee839a4070483267 (commit)
       via  c3fd48d0728c140fbe0ab038ad148cfae8104c97 (commit)
       via  b2979b0db0b6b5ee7ad3001ffcc8f76ff4d96f05 (commit)
       via  733269172b6b9802c2a00a8f8d19d6a520546a67 (commit)
       via  a2104e385abe47470dd42836a66360bf62afa57b (commit)
       via  17b0eecaa5dd1e0ac006b6ba757f6aee251a139e (commit)
       via  f45ce8083a98e29720cfba01e8043f6465327c40 (commit)
       via  35bc4e20adcc706ffdda3b1c9aeed1b34a20c51b (commit)
       via  7276cc563eb93589279f58b045f893a7c3b83835 (commit)
       via  fc4428224984cb71b961d17410205b535153c7f2 (commit)
       via  385ce6601ff872a0a4124071ef39869a4d3cfd53 (commit)
       via  32ca1dc4da9100a1a698d33a46c2919cf53fe606 (commit)
       via  a848b6ea430ee2b2c1daee80e846d4d3bd594920 (commit)
       via  35fb8a1cd59d1dc0ad4be89c64e8b48c750faaeb (commit)
       via  0ab985ff1da223e4065273fd1a549284ff3454ee (commit)
       via  e6aa5b48be1209d74c4c69be3eeca549f02418f3 (commit)
       via  2e524eb008f8b70ca1263ccde460365109c66a90 (commit)
       via  bdc9139d17c184a58e5088270f2ce6ba361fb8a7 (commit)
       via  3ac9fd0c91fe202a59e7c3611156bb1a9b8118fe (commit)
       via  01436e8b76300759ef4bfea30d7798445d50bf60 (commit)
       via  eee2c981d6a29eb7f15b8957570bbf8515d3d947 (commit)
       via  b5f193aa657134822d4df67cabc25c631926395b (commit)
       via  ff1e29f702d4f3036f5af014ad6e423b886ed0bb (commit)
       via  66f1ae7a9be590461592199c6d3646dbc4eba786 (commit)
       via  4bd14ccfa216fe1d115772508ac7d7c64ec59a48 (commit)
       via  16c58b75712ad4332d55e490d20b3946d2e05008 (commit)
       via  722e0c17507cc1fd21df7fafa43cc88965c092d8 (commit)
       via  79f70f03efbfca59ea80b344e56aa29ac1e72c47 (commit)
       via  1b1ddccffecf6e3d44aa2e1a632b54601ce282b6 (commit)
       via  aa0e6250280b5ac587b816f92127bae079d62dbc (commit)
       via  db1e389b74e37ecf4915168acdc72ea9ef624d9c (commit)
       via  7c8bfeb8d19db4f27b5fb5fd78e0afa3b7d07a89 (commit)
       via  43bcfeaa2d9953ff03f34c65b95be9e386152362 (commit)
       via  1b8120689041941db937883c3132a9c6819b56c5 (commit)
       via  cbf0429a8a5edd2f8a8d9b01ce39334e07e56bf8 (commit)
       via  121fb6bdcdf3731903ce3d21c0a284c20e6a6fca (commit)
       via  7871e324112f24527031f4100e4131ff2c6ab245 (commit)
       via  6abcf1f6bdb82b176a9fbb48b6c7cefa64970a9d (commit)
       via  8624ad6e91ed73876bd4f12fe8df2387e3e6330e (commit)
       via  cbcb69fcbf73a1bde0ae78be8c0ad25f84c3f7c3 (commit)
       via  611223d58fcdf5cc6ba434efed2c1ee9234b29a7 (commit)
       via  c6c3d3d23d1cca50381570d0558470d47e71fd95 (commit)
       via  2b03b05de753509c026b4c67857cd49a11f44dcf (commit)
       via  c52a78b386adeebf33c618b669f33ca87c466eee (commit)
       via  3e9576ef93a4d86882147b34ef9a28016375b865 (commit)
       via  ec56622b42f85aef2b4e8811378f8c99a6df24ea (commit)
       via  c6ad75e4241247ac18f5a5a8c397537dc6be1e3c (commit)
       via  02b233b2eb80de1b234f3658d86a0e446e33a032 (commit)
       via  428abec08e6ec59c38b7dc640396db950d42702b (commit)
       via  6ada98b925a7b82a87446aacd0f6cca28df1b510 (commit)
       via  11c6f1d759040f2af8a68d80ae78dd57a9b2d976 (commit)
       via  ccdaeb4b5b55c0e97e4fccc21445e5b9cc53dbe2 (commit)
       via  17d83fff53eea039e1483f86efd4a66056fed647 (commit)
       via  67fef1f4bec2d314c9d37bb05c55ff1067ba7b49 (commit)
       via  a998a520deb859216271567f1bf3623f310cf2d6 (commit)
       via  51928265eaf8ca6b6319dd231d74604ceb3af287 (commit)
       via  181fead894b660893e0e09274e609ec8ee4230a1 (commit)
       via  647c8b8c47ef521046bea7675af84b621c235e0f (commit)
       via  6f6235983d91e0b9fb5660d0a2825f510bbdac73 (commit)
       via  54897c8f978f127a44c0a9d20c1e87cea840b21f (commit)
       via  51af13e97bc4725e8cc010c72bbedb667b0a0e0f (commit)
       via  e9359f96365d629a688cbbc2f7d063fabf535a9f (commit)
       via  228f1ecbb98438fcd5bbe59465c830be637d38ce (commit)
       via  ee056b0ceb9ce569e0ee9a64b41ead728636772a (commit)
       via  3e237c89424489bad02cde9be33f715269e0c6b8 (commit)
       via  00ba956a67072f8b4a77fe71d3dc1e4dd8f70e98 (commit)
       via  98fd371d846022d8ccc25e8234d913e436ecce69 (commit)
       via  9c444153e80d3a872e11ca5898491c747a881a4d (commit)
       via  0f7fa46c1311ddd2aa6e7f0c280b98a6d69d4ec8 (commit)
       via  2e04dd8e9f872506922744dd449cccb99b55a847 (commit)
       via  752bd0d292c7fd6eb55b39cdc9d7373c7f35e0ec (commit)
       via  67c754c065dbe79e14a3c60640e6e604af32d0bd (commit)
       via  77c4def0b319e3720dba05a3c1fb0ab78323f227 (commit)
       via  65c155b7f691ce6a885125618bde3c9d68f6b47e (commit)
       via  d433ba0f548414219b3d976125e1ea530e1ba9ef (commit)
       via  d17ef1d036b4262f6c6c40324cc56d04d26581d3 (commit)
       via  c436da861845723ab18f56dba96052cf2569e539 (commit)
       via  6a7ffd91ec95950588b95d3f29599d07d8447c16 (commit)
       via  f263c987ad0b144393edd28f281c5b19e84fdf0b (commit)
       via  22233bfa18060d000e303d7734ec3016f7e80c8e (commit)
       via  ebddfbe7fbca80ecf852bbb20af9c6b584394691 (commit)
       via  603bccd66ac868c2accf9dff9c3ca6b7feeed962 (commit)
       via  b8dc9c22c0a76b5ed8b36a42d06c45bd3069b6f5 (commit)
       via  a8fd97bee8b0d194a7013dffa0c8bfb8533e669b (commit)
       via  1f763a5b1ad5c65a3265b4284958ecc0fe336f50 (commit)
       via  20cbe1178d370b71e7df2650afa7d6dc7e8c73b8 (commit)
       via  9143c3ec039d6c89512055f70c2fcc6e1065f1d7 (commit)
       via  4b9281d9e47bf308d229ca4dde8af499a6674c9c (commit)
       via  415347a3354031b48c22cae56c7bbfdcb76d607c (commit)
       via  a8918e636507200148758302dc6b9a081dc2f206 (commit)
       via  7f3b351ccea1beee195c1176be229ffa6d104d3e (commit)
       via  c19ef999c3b938e6d3cdc3746fab5bad8aba3403 (commit)
       via  c8444a1f49cb77bc32f62135247f12301f4927d7 (commit)
       via  70fa68ef9087dd85d6e18fba2ef11f94ddeb95a4 (commit)
       via  4aee1d7246e344099fe7e10264d009e49aeafee0 (commit)
       via  d02c4efcfdbe8f21fba895749988b14b7db41310 (commit)
       via  ec824d69dee0696b1ca4748fbe5b912634940d53 (commit)
       via  76b9eebf07b424ec2a8fde9b7760b8ce499063bc (commit)
       via  ac317fea1f11179b33eae7e06a60ba60df218f1c (commit)
       via  568ea04cdde8988a675754372f618d937d3757e0 (commit)
       via  a74ae790b5a0682fa00423626103482c145e1b91 (commit)
       via  66d12ae6dc72d45cc3cb3fcc007cb41371371616 (commit)
       via  f1b5f32b00d481e06d600cd6009d0995ecd19699 (commit)
       via  fca1b2bd47910761f0c2603e72681670443e4be8 (commit)
       via  4c19fb79d7b96bc18a1843182d3675c7a4de683d (commit)
       via  f23a72b89383c797663b5ec77d342bab20f239f4 (commit)
       via  6177a6474c312d5d5b9c1f0eaa3ebd089a64b5f1 (commit)
       via  e419f135d46050250fdeb10b6e2a2a254caa85d4 (commit)
       via  9820178bf518d9ddace8c27ea383e5c37d86c8fe (commit)
       via  b7161fff2cb2fdd2bc0975c75f1fbc32f625343b (commit)
       via  5d5c69bb5a60127aa509fac4bdfb8ea915eacadc (commit)
       via  aade22d7587e9f5921edb18ad76792a60eaa92fb (commit)
       via  0e69f5346c474da7b2244546db4476f8ca21946f (commit)
       via  3063c6106a83102214deb9d86ec621c0bb85d4b7 (commit)
       via  2e9a14d193db2948e14804539494f3b2384a87b8 (commit)
       via  c623120453858c2ce47ab135f250c33a627a344d (commit)
       via  20347d900fb2d75a3f3eef91d4da17a559b0ecd6 (commit)
       via  f107a5232d5e8788ae19daf1c5f6639f0c3cdb68 (commit)
       via  7df1885cee1d6eb0f65a010f13ca7e9ff59c80d9 (commit)
       via  c66afecd36cf7d91223b5db79f3e120954f8217d (commit)
       via  ba4fcbd29b2615d9cc64010d756de49eac5109a5 (commit)
       via  8ee3fe6685a716918a403f559c626c3b38e411f2 (commit)
       via  2e273679fbf3f73ac7b7cfcf9ef8380047e959a0 (commit)
       via  ab5ded7cdf302ad156c58d47f59ab07e3a14ec69 (commit)
       via  abcde4a0bed9e80fc0925e70d151c7893043bc82 (commit)
       via  cc22cd28f536fa6fd95732372177d36a94a4c08d (commit)
       via  c13b9d5300b7f778e2fc05f9d043db4122d15aa1 (commit)
       via  d39470cbc160b9d51033a564e0b8867388a5a1d3 (commit)
       via  1c45ed6a43b01a4f216cf8877b35d9ad18e1c5b5 (commit)
       via  c7fed8bfbd8a0e6edf83142b50bed4fe53c10c5c (commit)
       via  d28bf64e878b8d45e1ace6409e94027a039d3909 (commit)
       via  72493a2fef971fc685ecef42c2b697338da69d2c (commit)
       via  4d1481ed38e238e2e39d37775cb8cd86150bd04e (commit)
       via  c4fcddbe2a01ebbc3a4898dfa8744eb6fc45227e (commit)
       via  84c471b1cfb20116b2d7d26215c2517cb57ba53f (commit)
       via  a5034fccf4a829a36d6e2670a9f62e4f7a545f2f (commit)
       via  72c312b352a88740a44fba9e274d72bbabb489a7 (commit)
       via  ba4693cda66632d3da1a711b6910441958ecee01 (commit)
       via  2e5fef753892523984f18c26fc16cfd599115f34 (commit)
       via  420949e37a2903ab87f64f57278dfdc6a261a7f3 (commit)
       via  2943d9c3622e2c5bca081dc48fd5d8d148dac386 (commit)
       via  bd240259a9d95a4da53eb0ff8a3644d7acd7705d (commit)
       via  e35fb48f1485a92a64a30efe8b1c43a179b70260 (commit)
       via  7e8f99556391cc81c014b517a9fa6efed8fe8113 (commit)
       via  2f3e496712802324e5d184f9ae59866df1772ef0 (commit)
       via  bf15373590e21dafd696fa0c10906eb653610d1d (commit)
       via  8086f73aca674d7533e88bdd3850042553487d2b (commit)
       via  8b77f66275fd87f70dd79075a71d8062311541bc (commit)
       via  57dc9e64bb38f186e2b235a98d7437a5f986bc83 (commit)
       via  d7ccebe29c68df51633f6a18eba6aa6a982c3739 (commit)
       via  a0a7b1a0c6f43a80449a76c00fb0c30858d38233 (commit)
       via  bfb190a4c3f5bd995ccae37536c3234b14eaf3ed (commit)
       via  389f092ce9dc3a08245530fcf70d535783e62813 (commit)
       via  de9903cfc08ea7c3da459e7c4ee5a744d52a7c89 (commit)
       via  d034adbaf26a19e8fd48124cadd5108d2d3de642 (commit)
       via  a3650fa043500139ac36587a4b61ffed1a2dc1a3 (commit)
       via  f7538ca2df4a43ff60f87675f52a59edacfcdc7e (commit)
       via  f4925bb0e7d9de484579b71087f181b9dbea5bff (commit)
       via  ab66542f7c9c2dd4909e1bf3d03ef5df5f95a6f9 (commit)
       via  ec4e2b3707c030dab6081db499adc5ac369e61bd (commit)
       via  b189f5ed7a6fd3585535b9d9d3d587115cf383e7 (commit)
       via  2fce84531f36daa2323276f0c6b147efe82852ec (commit)
       via  5254bebf574f0f72bb0321e944d089ad6f6c25e2 (commit)
       via  42c9be2a3187291502efcebefc09ce603fd31106 (commit)
       via  b586267c7ff0a5973ecf2f83b3fa5eb452669cfc (commit)
       via  4efaeba6eb371d03aa8c8f052b63c2b3404de063 (commit)
       via  f76947a7c1ba973a11e563b0977d54a2ece2ce38 (commit)
       via  e3ce426fda2e7d2283d7092f988245c6900c8949 (commit)
       via  cd2672dc235efaacd533aadeef489994fe684a25 (commit)
       via  40cc2b01c2a3ff911549c2d31c8195905109633d (commit)
       via  74236320d68bf092f7f76f7ccf4f7a974735c6ab (commit)
       via  d0bf7a1ff103285e54433d3bcb67c2138b534542 (commit)
       via  bb6f6fb4021045b86ef58b3a975cf60b58807fa2 (commit)
       via  264c7fdb6c651ef73cfe4f0a280bf6672846eada (commit)
       via  1ea7294edb4aa80f13d805ef29875a39caab471c (commit)
      from  1eee45ce0bbae9e7d04a9382469d2c48fb0cfd3e (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 4609a76d9b84e0f63233cdf6dcbef376b1686b69
Merge: 0c1c7fa b6ea1fe
Author: Ward Vandewege <ward at curoverse.com>
Date:   Fri May 30 15:50:59 2014 -0400

    Merge branch 'master' into 2681-new-inactive-user-notification


commit 0c1c7fa2cba96aae542db0e6b6991c71d5ff578a
Author: Ward Vandewege <ward at curoverse.com>
Date:   Fri May 30 15:49:44 2014 -0400

    Refactor user notification tests

diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb
index 235e5cb..0d55633 100644
--- a/services/api/test/unit/user_test.rb
+++ b/services/api/test/unit/user_test.rb
@@ -95,7 +95,9 @@ class UserTest < ActiveSupport::TestCase
     user.save
 
     # verify there is one extra user in the db now
-    assert_equal @all_users.size+1, User.find(:all).size
+    # the API server also auto-creates the root system user after the first user
+    # is created, hence the test for the delta of 2.
+    assert_equal @all_users.size+2, User.find(:all).size
 
     user = User.find(user.id)   # get the user back
     assert_equal(user.first_name, 'first_name_for_newly_created_user')
@@ -109,134 +111,17 @@ class UserTest < ActiveSupport::TestCase
     assert_equal(user.first_name, 'first_name_for_newly_created_user_updated')
   end
 
-  test "create new inactive user with new_inactive_user_notification_recipients empty" do
+  test "create new user with notifications" do
     set_user_from_auth :admin
 
-    Rails.configuration.new_inactive_user_notification_recipients = ''
-
-    ActionMailer::Base.deliveries = []
-
-    user = User.new
-    user.first_name = "first_name_for_newly_created_user"
-    user.is_active = false
-    user.save
-
-    assert_equal '', Rails.configuration.new_inactive_user_notification_recipients
-
-    ActionMailer::Base.deliveries.each do |d|
-      assert_not_equal "#{Rails.configuration.email_subject_prefix}New inactive user notification", setup_email.subject
-    end
-
+    user_notification_helper true, 'active-notify-address at example.com', 'inactive-notify-address at example.com'
+    user_notification_helper true, 'active-notify-address at example.com', []
+    user_notification_helper true, [], []
+    user_notification_helper false, 'active-notify-address at example.com', 'inactive-notify-address at example.com'
+    user_notification_helper false, [], 'inactive-notify-address at example.com'
+    user_notification_helper false, [], []
   end
 
-  test "create new inactive user with new_user_notification_recipients empty" do
-    set_user_from_auth :admin
-
-    Rails.configuration.new_user_notification_recipients = ''
-
-    ActionMailer::Base.deliveries = []
-
-    user = User.new
-    user.first_name = "first_name_for_newly_created_user"
-    user.is_active = false
-    user.save
-
-    assert_equal '', Rails.configuration.new_user_notification_recipients
-
-    ActionMailer::Base.deliveries.each do |d|
-      assert_not_equal "#{Rails.configuration.email_subject_prefix}New user notification", d.subject
-    end
-
-  end
-
-  test "create new inactive user with new_user_notification_recipients and new_inactive_user_notification_recipients set" do
-    set_user_from_auth :admin
-
-    Rails.configuration.new_user_notification_recipients = 'foo_new at example.com'
-    Rails.configuration.new_inactive_user_notification_recipients = 'foo_new_inactive at example.com'
-
-    ActionMailer::Base.deliveries = []
-
-    user = User.new
-    user.first_name = "first_name_for_newly_created_user"
-    user.is_active = false
-    user.save
-
-    new_user_email = nil
-    new_inactive_user_email = nil
-    ActionMailer::Base.deliveries.each do |d|
-      if d.subject == "#{Rails.configuration.email_subject_prefix}New inactive user notification" then
-        new_inactive_user_email = d
-      end
-      if d.subject == "#{Rails.configuration.email_subject_prefix}New user notification" then
-        new_user_email = d
-      end
-    end
-
-    assert_not_nil new_inactive_user_email, 'Expected new inactive user email after setup'
-    assert_not_nil new_user_email, 'Expected new user email after setup'
-
-    assert_equal 'foo_new at example.com', Rails.configuration.new_user_notification_recipients
-    assert_equal 'foo_new_inactive at example.com', Rails.configuration.new_inactive_user_notification_recipients
-
-    assert_equal Rails.configuration.user_notifier_email_from, new_inactive_user_email.from[0]
-    assert_equal 'foo_new_inactive at example.com', new_inactive_user_email.to[0]
-    assert_equal "#{Rails.configuration.email_subject_prefix}New inactive user notification", new_inactive_user_email.subject
-
-    assert_equal Rails.configuration.user_notifier_email_from, new_user_email.from[0]
-    assert_equal 'foo_new at example.com', new_user_email.to[0]
-    assert_equal "#{Rails.configuration.email_subject_prefix}New user notification", new_user_email.subject
-  end
-
-  test "create new inactive user with new_user_notification_recipients set" do
-    set_user_from_auth :admin
-
-    Rails.configuration.new_user_notification_recipients = 'foo at example.com'
-
-    user = User.new
-    user.first_name = "first_name_for_newly_created_user"
-    user.is_active = false
-    user.save
-
-    new_user_email = nil
-
-    ActionMailer::Base.deliveries.each do |d|
-      if d.subject == "#{Rails.configuration.email_subject_prefix}New user notification" then
-        new_user_email = d
-        break
-      end
-    end
-
-    assert_not_nil new_user_email, 'Expected email after setup'
-
-    assert_equal 'foo at example.com', Rails.configuration.new_user_notification_recipients
-
-    assert_equal Rails.configuration.user_notifier_email_from, new_user_email.from[0]
-    assert_equal 'foo at example.com', new_user_email.to[0]
-    assert_equal "#{Rails.configuration.email_subject_prefix}New user notification", new_user_email.subject
-  end
-
-  test "create new active user with new_inactive_user_notification_recipients set" do
-    set_user_from_auth :admin
-
-    Rails.configuration.new_inactive_user_notification_recipients = 'foo at example.com'
-
-    ActionMailer::Base.deliveries = []
-
-    user = User.new
-    user.first_name = "first_name_for_newly_created_user"
-    user.is_active = true
-    user.save
-
-    assert_equal 'foo at example.com', Rails.configuration.new_inactive_user_notification_recipients
-
-    ActionMailer::Base.deliveries.each do |d|
-      assert_not_equal "#{Rails.configuration.email_subject_prefix}New inactive user notification", setup_email.subject
-    end
-
-  end
-
-
   test "update existing user" do
     set_user_from_auth :active    # set active user as current user
 
@@ -462,4 +347,55 @@ class UserTest < ActiveSupport::TestCase
     end
   end
 
+  def user_notification_helper (active, active_recipients, inactive_recipients)
+    Rails.configuration.new_user_notification_recipients = active_recipients
+    Rails.configuration.new_inactive_user_notification_recipients = inactive_recipients
+
+    assert_equal active_recipients, Rails.configuration.new_user_notification_recipients
+    assert_equal inactive_recipients, Rails.configuration.new_inactive_user_notification_recipients
+
+    ActionMailer::Base.deliveries = []
+
+    user = User.new
+    user.first_name = "first_name_for_newly_created_user"
+    user.is_active = active
+    user.save
+
+    new_user_email = nil
+    new_inactive_user_email = nil
+
+    ActionMailer::Base.deliveries.each do |d|
+      if d.subject == "#{Rails.configuration.email_subject_prefix}New user notification" then
+        new_user_email = d
+      elsif d.subject == "#{Rails.configuration.email_subject_prefix}New inactive user notification" then
+        new_inactive_user_email = d
+      end
+    end
+
+    if not active
+      if not inactive_recipients.empty? then
+        assert_not_nil new_inactive_user_email, 'Expected new inactive user email after setup'
+        assert_equal Rails.configuration.user_notifier_email_from, new_inactive_user_email.from[0]
+        assert_equal inactive_recipients, new_inactive_user_email.to[0]
+        assert_equal "#{Rails.configuration.email_subject_prefix}New inactive user notification", new_inactive_user_email.subject
+      else
+        assert_nil new_inactive_user_email, 'Did not expect new inactive user email after setup'
+      end
+    end
+
+    if active
+      assert_nil new_inactive_user_email, 'Expected email after setup'
+      if not active_recipients.empty? then
+        assert_not_nil new_user_email, 'Expected new user email after setup'
+        assert_equal Rails.configuration.user_notifier_email_from, new_user_email.from[0]
+        assert_equal active_recipients, new_user_email.to[0]
+        assert_equal "#{Rails.configuration.email_subject_prefix}New user notification", new_user_email.subject
+      else
+        assert_nil new_user_email, 'Did not expect new user email after setup'
+      end
+    end
+    ActionMailer::Base.deliveries = []
+
+  end
+
 end

commit e9fc734bb270a5648c923ed0419ff745e283419c
Author: Ward Vandewege <ward at curoverse.com>
Date:   Thu May 29 14:17:23 2014 -0400

    Switch to using auth helpers instead of messing with Thread.current in the user tests.

diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb
index e5352bf..235e5cb 100644
--- a/services/api/test/unit/user_test.rb
+++ b/services/api/test/unit/user_test.rb
@@ -3,27 +3,8 @@ require 'test_helper'
 class UserTest < ActiveSupport::TestCase
   include CurrentApiClient
 
-  # The fixture services/api/test/fixtures/users.yml serves as the input for this test case
-  setup do
-    # Make sure system_user exists before making "pre-test users" list
-    system_user
-
-    @all_users = User.find(:all)
-
-    @all_users.each do |user|
-      if user.uuid == system_user_uuid
-        @system_user = user
-      elsif user.is_admin && user.is_active
-        @admin_user = user
-      elsif user.is_active && !user.is_admin
-        @active_user = user
-      elsif !user.is_active && !user.is_invited
-        @uninvited_user = user
-      end
-    end
-  end
-
   test "check non-admin active user properties" do
+    @active_user = users(:active)     # get the active user
     assert !@active_user.is_admin, 'is_admin should not be set for a non-admin user'
     assert @active_user.is_active, 'user should be active'
     assert @active_user.is_invited, 'is_invited should be set'
@@ -35,12 +16,14 @@ class UserTest < ActiveSupport::TestCase
     assert @active_user.groups_i_can(:read).size > 0, "active user should be able read at least one group"
 
     # non-admin user cannot manage or write other user objects
+    @uninvited_user = users(:inactive_uninvited)     # get the uninvited user
     assert !(@active_user.can? :read=>"#{@uninvited_user.uuid}")
     assert !(@active_user.can? :write=>"#{@uninvited_user.uuid}")
     assert !(@active_user.can? :manage=>"#{@uninvited_user.uuid}")
   end
 
   test "check admin user properties" do
+    @admin_user = users(:admin)     # get the admin user
     assert @admin_user.is_admin, 'is_admin should be set for admin user'
     assert @admin_user.is_active, 'admin user cannot be inactive'
     assert @admin_user.is_invited, 'is_invited should be set'
@@ -56,12 +39,14 @@ class UserTest < ActiveSupport::TestCase
     assert @admin_user.groups_i_can(:manage).size > 0, "admin active user should be able manage at least one group"
 
     # admin user can also write or manage other users
+    @uninvited_user = users(:inactive_uninvited)     # get the uninvited user
     assert @admin_user.can? :read=>"#{@uninvited_user.uuid}"
     assert @admin_user.can? :write=>"#{@uninvited_user.uuid}"
     assert @admin_user.can? :manage=>"#{@uninvited_user.uuid}"
   end
 
   test "check inactive and uninvited user properties" do
+    @uninvited_user = users(:inactive_uninvited)     # get the uninvited user
     assert !@uninvited_user.is_admin, 'is_admin should not be set for a non-admin user'
     assert !@uninvited_user.is_active, 'user should be inactive'
     assert !@uninvited_user.is_invited, 'is_invited should not be set'
@@ -88,7 +73,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "full name should not contain spurious whitespace" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     user = User.create ({uuid: 'zzzzz-tpzed-abcdefghijklmno', email: 'foo at example.com' })
 
@@ -101,7 +86,9 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new user" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
+
+    @all_users = User.find(:all)
 
     user = User.new
     user.first_name = "first_name_for_newly_created_user"
@@ -123,7 +110,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new inactive user with new_inactive_user_notification_recipients empty" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     Rails.configuration.new_inactive_user_notification_recipients = ''
 
@@ -143,7 +130,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new inactive user with new_user_notification_recipients empty" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     Rails.configuration.new_user_notification_recipients = ''
 
@@ -163,7 +150,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new inactive user with new_user_notification_recipients and new_inactive_user_notification_recipients set" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     Rails.configuration.new_user_notification_recipients = 'foo_new at example.com'
     Rails.configuration.new_inactive_user_notification_recipients = 'foo_new_inactive at example.com'
@@ -202,7 +189,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new inactive user with new_user_notification_recipients set" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     Rails.configuration.new_user_notification_recipients = 'foo at example.com'
 
@@ -230,7 +217,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new active user with new_inactive_user_notification_recipients set" do
-    Thread.current[:user] = @admin_user   # set admin user as the current user
+    set_user_from_auth :admin
 
     Rails.configuration.new_inactive_user_notification_recipients = 'foo at example.com'
 
@@ -251,7 +238,10 @@ class UserTest < ActiveSupport::TestCase
 
 
   test "update existing user" do
-    Thread.current[:user] = @active_user    # set active user as current user
+    set_user_from_auth :active    # set active user as current user
+
+    @active_user = users(:active)     # get the active user
+
     @active_user.first_name = "first_name_changed"
     @active_user.save
 
@@ -259,7 +249,7 @@ class UserTest < ActiveSupport::TestCase
     assert_equal(@active_user.first_name, 'first_name_changed')
 
     # admin user also should be able to update the "active" user info
-    Thread.current[:user] = @admin_user # set admin user as current user
+    set_user_from_auth :admin # set admin user as current user
     @active_user.first_name = "first_name_changed_by_admin_for_active_user"
     @active_user.save
 
@@ -268,9 +258,10 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "delete a user and verify" do
+    @active_user = users(:active)     # get the active user
     active_user_uuid = @active_user.uuid
 
-    Thread.current[:user] = @admin_user
+    set_user_from_auth :admin
     @active_user.delete
 
     found_deleted_user = false
@@ -285,7 +276,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "create new user as non-admin user" do
-    Thread.current[:user] = @active_user
+    set_user_from_auth :active
 
     begin
       user = User.new
@@ -297,7 +288,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "setup new user" do
-    Thread.current[:user] = @admin_user
+    set_user_from_auth :admin
 
     email = 'foo at example.com'
     openid_prefix = 'http://openid/prefix'
@@ -330,7 +321,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   test "setup new user with junk in database" do
-    Thread.current[:user] = @admin_user
+    set_user_from_auth :admin
 
     email = 'foo at example.com'
     openid_prefix = 'http://openid/prefix'
@@ -374,7 +365,7 @@ class UserTest < ActiveSupport::TestCase
 
 
   test "setup new user in multiple steps" do
-    Thread.current[:user] = @admin_user
+    set_user_from_auth :admin
 
     email = 'foo at example.com'
     openid_prefix = 'http://openid/prefix'

commit e1868aea69f51b3fb3d281a0dcca66b9de239cfa
Author: Ward Vandewege <ward at curoverse.com>
Date:   Thu May 29 13:32:59 2014 -0400

    Provide link to users page in notification e-mails.

diff --git a/services/api/app/mailers/admin_notifier.rb b/services/api/app/mailers/admin_notifier.rb
index 871c901..e17f4a1 100644
--- a/services/api/app/mailers/admin_notifier.rb
+++ b/services/api/app/mailers/admin_notifier.rb
@@ -1,5 +1,8 @@
 class AdminNotifier < ActionMailer::Base
+  include AbstractController::Callbacks
+
   default from: Rails.configuration.admin_notifier_email_from
+  before_filter :load_variables
 
   def new_user(user)
     @user = user
@@ -23,4 +26,15 @@ class AdminNotifier < ActionMailer::Base
     end
   end
 
+private
+  def load_variables
+    if Rails.configuration.respond_to?('workbench_address') and
+       not Rails.configuration.workbench_address.nil? and
+       not Rails.configuration.workbench_address.empty? then
+      @wb_address = Rails.configuration.workbench_address.sub(/\/$/,'') + '/users'
+    else
+      @wb_address = ''
+    end
+  end
+
 end
diff --git a/services/api/app/views/admin_notifier/new_inactive_user.text.erb b/services/api/app/views/admin_notifier/new_inactive_user.text.erb
index 98c7037..f5c9a07 100644
--- a/services/api/app/views/admin_notifier/new_inactive_user.text.erb
+++ b/services/api/app/views/admin_notifier/new_inactive_user.text.erb
@@ -3,5 +3,11 @@ A new user landed on the inactive user page:
 
   <%= @user.full_name %> <<%= @user.email %>>
 
+<% if not @wb_address.empty? -%>
+Please see workbench for more information:
+
+  <%= not @wb_address %>
+
+<% end -%>
 Thanks,
 Your friendly Arvados robot.
diff --git a/services/api/app/views/admin_notifier/new_user.text.erb b/services/api/app/views/admin_notifier/new_user.text.erb
index 8858a62..374e46e 100644
--- a/services/api/app/views/admin_notifier/new_user.text.erb
+++ b/services/api/app/views/admin_notifier/new_user.text.erb
@@ -5,6 +5,12 @@ A new user has been created:
 
 This user is <%= @user.is_active ? '' : 'NOT ' %>active.
 
+<% if not @wb_address.empty? -%>
+Please see workbench for more information:
+
+  <%= @wb_address %>
+
+<% end -%>
 Thanks,
 Your friendly Arvados robot.
 

commit c811cb98bce53f775a865a04ea0f01635dbe75f3
Author: Ward Vandewege <ward at curoverse.com>
Date:   Thu May 29 11:16:21 2014 -0400

    Change default for
    
      new_user_notification_recipients
      new_inactive_user_notification_recipients
    
    in config/application.default.yml to an empty array, so that it is
    obvious how to specify multiple recipients.

diff --git a/services/api/config/application.default.yml b/services/api/config/application.default.yml
index 88a8aee..848675c 100644
--- a/services/api/config/application.default.yml
+++ b/services/api/config/application.default.yml
@@ -87,8 +87,8 @@ common:
   admin_notifier_email_from: arvados at example.com
   email_subject_prefix: "[ARVADOS] "
   user_notifier_email_from: arvados at example.com
-  new_user_notification_recipients: ''
-  new_inactive_user_notification_recipients: ''
+  new_user_notification_recipients: [ ]
+  new_inactive_user_notification_recipients: [ ]
 
   # Visitors to the API server will be redirected to the workbench
   workbench_address: https://workbench.local:3001/

commit ebb166d65eb37f89edeccfc5be97014f3f2a73e2
Merge: 1eee45c 40b6a69
Author: Ward Vandewege <ward at curoverse.com>
Date:   Wed May 28 20:29:12 2014 -0400

    Merge branch 'master' into 2681-new-inactive-user-notification


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


hooks/post-receive
-- 




More information about the arvados-commits mailing list