[ARVADOS] updated: b798b325087c82578b4b079df968ad844a93dfb3
git at public.curoverse.com
git at public.curoverse.com
Mon Nov 3 16:00:02 EST 2014
Summary of changes:
.../workbench/app/assets/javascripts/filterable.js | 51 ++
.../app/controllers/collections_controller.rb | 4 +-
apps/workbench/app/controllers/jobs_controller.rb | 4 -
.../controllers/pipeline_instances_controller.rb | 12 +-
.../app/controllers/projects_controller.rb | 27 +-
apps/workbench/app/helpers/application_helper.rb | 2 +
apps/workbench/app/helpers/provenance_helper.rb | 8 +-
apps/workbench/app/models/pipeline_instance.rb | 6 +-
.../app/views/collections/_show_files.html.erb | 33 +-
.../pipeline_instances/_running_component.html.erb | 2 +-
.../projects/_show_jobs_and_pipelines.html.erb | 1 +
.../app/views/projects/_show_tab_contents.html.erb | 2 +-
apps/workbench/config/application.yml.example | 9 +
.../config/environments/production.rb.example | 2 +-
.../controllers/collections_controller_test.rb | 49 +-
.../pipeline_instances_controller_test.rb | 76 +--
.../test/functional/collections_controller_test.rb | 8 +
.../workbench/test/integration/collections_test.rb | 39 ++
.../test/integration/pipeline_instances_test.rb | 30 +-
apps/workbench/test/integration/projects_test.rb | 2 +-
apps/workbench/test/unit/pipeline_instance_test.rb | 42 +-
doc/_config.yml | 11 +-
.../create-standard-objects.html.textile.liquid | 62 +-
doc/install/index.html.textile.liquid | 21 +-
doc/install/install-api-server.html.textile.liquid | 142 +++--
.../install-crunch-dispatch.html.textile.liquid | 8 +-
doc/install/install-keep.html.textile.liquid | 54 --
doc/install/install-keepproxy.html.textile.liquid | 84 +++
doc/install/install-keepstore.html.textile.liquid | 90 +++
.../install-manual-overview.html.textile.liquid | 16 +
...l-manual-prerequisites-ruby.html.textile.liquid | 31 +
...nstall-manual-prerequisites.html.textile.liquid | 46 ++
.../install-shell-server.html.textile.liquid | 17 +
doc/install/install-sso.html.textile.liquid | 9 +-
.../install-workbench-app.html.textile.liquid | 106 +++-
docker/api/Dockerfile | 9 +-
docker/api/application.yml.in | 2 +
docker/arvdock | 18 +-
docker/base/Dockerfile | 15 +-
docker/compute/Dockerfile | 11 +-
docker/compute/supervisor.conf | 5 +
docker/doc/Dockerfile | 4 +-
docker/java-bwa-samtools/Dockerfile | 4 +-
docker/passenger/Dockerfile | 13 +-
docker/shell/Dockerfile | 7 +-
docker/slurm/Dockerfile | 3 +-
docker/workbench/Dockerfile | 3 +-
sdk/cli/arvados-cli.gemspec | 2 +-
sdk/cli/bin/arv | 2 +-
sdk/cli/bin/arv-copy | 1 +
sdk/cli/bin/crunch-job | 99 +--
sdk/python/arvados/commands/arv_copy.py | 665 +++++++++++++++++++++
sdk/python/arvados/commands/keepdocker.py | 31 +-
sdk/python/arvados/config.py | 27 +-
sdk/python/arvados/keep.py | 5 +-
sdk/python/bin/arv-copy | 4 +
sdk/python/setup.py | 1 +
sdk/python/tests/test_keep_client.py | 7 +
sdk/ruby/arvados.gemspec | 2 +-
sdk/ruby/lib/arvados/keep.rb | 1 +
sdk/ruby/test/test_keep_manifest.rb | 22 +-
.../arvados/v1/collections_controller.rb | 9 +-
.../controllers/arvados/v1/groups_controller.rb | 2 +-
services/api/app/models/user.rb | 2 +
services/api/config/application.yml.example | 1 +
services/api/script/crunch-dispatch.rb | 144 +++--
.../test/fixtures/api_client_authorizations.yml | 7 +
services/api/test/fixtures/collections.yml | 43 +-
services/api/test/fixtures/groups.yml | 16 +-
services/api/test/fixtures/jobs.yml | 10 +-
services/api/test/fixtures/links.yml | 15 +
services/api/test/fixtures/pipeline_instances.yml | 39 +-
services/api/test/fixtures/pipeline_templates.yml | 22 +
services/api/test/fixtures/users.yml | 14 +
services/fuse/tests/test_mount.py | 66 +-
services/nodemanager/arvnodeman/jobqueue.py | 2 +-
services/nodemanager/tests/test_computenode.py | 3 +-
services/nodemanager/tests/test_jobqueue.py | 5 +
78 files changed, 1950 insertions(+), 519 deletions(-)
delete mode 100644 doc/install/install-keep.html.textile.liquid
create mode 100644 doc/install/install-keepproxy.html.textile.liquid
create mode 100644 doc/install/install-keepstore.html.textile.liquid
create mode 100644 doc/install/install-manual-overview.html.textile.liquid
create mode 100644 doc/install/install-manual-prerequisites-ruby.html.textile.liquid
create mode 100644 doc/install/install-manual-prerequisites.html.textile.liquid
create mode 100644 doc/install/install-shell-server.html.textile.liquid
create mode 120000 sdk/cli/bin/arv-copy
create mode 100755 sdk/python/arvados/commands/arv_copy.py
create mode 100755 sdk/python/bin/arv-copy
via b798b325087c82578b4b079df968ad844a93dfb3 (commit)
via 5dd7bd8a05d52838b1cb8df7b341a843abae7a0a (commit)
via 15dbb3110b3b7cc6712e58bdfbb9a5df7fab1882 (commit)
via 3978e8ae9c1b5bbc07c63fd062e189a81e52399c (commit)
via ae96829cc088d18c7aaf438eacb75830c7a40662 (commit)
via a6606b79fb6496e43eef6b2e8b04d5c1061f5635 (commit)
via 4498d81399482be11a00e5e2223ef08d0576ef06 (commit)
via 28053f8adcf1c36ba0a8cdf9c0b348765e68591a (commit)
via 313f5fedd4214d077e2b5c7c26bab4df3895c44a (commit)
via f39bdf87343e1e8a2c5c81221d262422c2651de2 (commit)
via 102582e4b0c70349fc6b9077fd7618782a1a49bd (commit)
via 27b534ddd7d2b56ff63cd2ca100fa3119df51a2f (commit)
via 4978c1e740700ec78c26a8046a457496fd9b974c (commit)
via 9ac37f367da0b11971f2ecf8a80a38ae60d43a61 (commit)
via afc70738e8dbbc96e177f1f920b1e8e5f2598fa9 (commit)
via 28ac1f93305968a913c394dd3d3581c4e290722d (commit)
via 7c3f2671d43770240a834b9bd5c34ec748acdc1d (commit)
via d14c0c8186517176ecf182cf2555aee8ba4ede6d (commit)
via ed4105d0c6a0d453143849afcea33960afc22117 (commit)
via c6a03a7abff947dc8242e8be18b4b5e6920a3e4a (commit)
via 4cbb39443fdd218773b4d192330e5e3632fdaaf7 (commit)
via b39e2b4e3f791d0c0afe9682183bd31d8341cea3 (commit)
via 6dabd04bf356cccdb2a7d366a6edd2146b90519a (commit)
via 92822dd390f4b3efeb183452b7ddf866c41bda17 (commit)
via a95a81202b12a79467018157afe54ed09deb9bda (commit)
via c199c0cf4a2fe22ce3e1dd0e6219937588711c50 (commit)
via ce6f044cfd55f761ec37112554aeab578b3ab476 (commit)
via 1bcfc05de27282f239de4124225e27d05a1d149a (commit)
via fd0ca9211847806adb2e97c0ae78e9312ef89ca1 (commit)
via 9b959a512c8cca0df65b2bf36ca4baf8eb7a809b (commit)
via da6674e4560229457d45abbb8a8aff9d4e305459 (commit)
via 51e79a3be745cfd37efc49471ae21a1d54662e7f (commit)
via 1bcf9398f365411b2a82388dbd2eb1fd1d570fe5 (commit)
via 1d2cdef7174db30cb926d42e321ccb8957d890f2 (commit)
via 52141835e85e4014a691e036f89bcd71a98bd6b2 (commit)
via e2fe6c0e5c1c62a37e03519590c04a5186a2cc9b (commit)
via c105f3566ef117227dae65396425618c586d9e10 (commit)
via 78fc6d80639659e30e4f15562c382c002ed6e1ef (commit)
via ddc1f6b0c54b72df395cfef26e0dc4eb8f65463d (commit)
via 7d8d1b78a10a7045d7ef2367a45c07b023272548 (commit)
via 9ee4a125d1796dd7b71ef1b9f255133e5cf0becc (commit)
via 5560cdf37024ba98bb0367a65bc2176c1577496b (commit)
via c19bb2a3554f8bcb17cadd9c133b6fb260e70513 (commit)
via 1edad4ad7a8c239b36b6f10565ee36cbeab67ddb (commit)
via 550997435f03118e51571994acc07273907bc6fd (commit)
via 89ba1124c9fd6d3167c50059dc8adea64e6147b5 (commit)
via f549c9f05860abfb394b550c0b2c30a5a7c33283 (commit)
via 2d244defaaa4f5f663a5ac11cf507d7203f704e3 (commit)
via fb2ee4033abfae93e8f9a9af367569e7f4fa3793 (commit)
via cbc29982e30fd776c194c47dc584710ff1b340c4 (commit)
via e34135f6779f58852558e03b1b95534c11ca07ae (commit)
via 81bb05b5a18c9501057876bf5b0e1923778dad26 (commit)
via f78b6578bc950b72f0ffac516bde9c8fde2416be (commit)
via fb1bf9fde205adb90386c81214e667823708a9f1 (commit)
via 97f3db9cb084efce35ef6a24c25d14308785a49a (commit)
via e1020f4ad01b6f583a9d3c2bf6d146cd9e0d9331 (commit)
via 337a0bdb43f518fbf716ed5ecd66eb5e569b8fdf (commit)
via 846ac5d419862e2b0051ec0843e71c601b35da44 (commit)
via f923effe2e0ae0b704b9236b4165866b171b6e81 (commit)
via fff7228b347fd12c15a18d6de47e37c2f72ae795 (commit)
via c330d58918b7c631307ec11bd584824bf0da7f47 (commit)
via e68bf42e440545bd2b760635039a232c4ef35fae (commit)
via 8c492b3940f398dddea54792f67a7a0e9d2383a6 (commit)
via af2ca91daa4cb9550226be5fad80da24ee426fb7 (commit)
via 2776ad1bd8f05cf58a2bab436db932289d80549a (commit)
via 30bdc9b4fd57e2291f2ace690412d1775eb6e6ab (commit)
via c79874f462520568509bd8a880b8dacab8036489 (commit)
via c0943b24a1deb33ef2d866e722f77bc4e564ead5 (commit)
via 0f9aaf18f1931984dcb34920515877d74d362841 (commit)
via a3db87c5a23f3a1e72ea82304d24db8c1757c095 (commit)
via 6ed159925434818e3da1f7ff9f6a777815f2a5a4 (commit)
via f1eb092c311510b60b8c9b00b64407780e2a0302 (commit)
via 3a47eb915b3865bea6d2e6536c7bc1f4a1afc8b4 (commit)
via 4e148ec9b5db231b22f8d9bd04527023fdbc23ba (commit)
via ef56ac56a0bac0710a486c0e5e9cdd3199eddc61 (commit)
via fb01e30424d20a3430f45826e57410b8e2e5440d (commit)
via 35ade8a042094a27e2ca5cfd5e9754aa3513410c (commit)
via 2c16f4fbf9408bb758a0f54cae4058dccef4c2a5 (commit)
via c1efd42bfbb5bc7ff9ac275643ee7a0c4e44012b (commit)
via 1bde97d8aa4d670c25015284e97281e1af163dda (commit)
via 87b2e5da50efa25671f1368e6cb162a5584fe030 (commit)
via 7086db26dce2ed43098daf1198a37412a5e42e48 (commit)
via 140012f16cc5945a8c469db3e11f13cc4493cc22 (commit)
via 4a774fdb7a95a241d4b95649ea57b505784f3362 (commit)
via 789e479916a89e57cdf1d65c49923449c4fb1bcf (commit)
via 21d6720325e567f78329662c286fa693a8688ff4 (commit)
via e8451457c28477a5c3716e878d09d0be147186d6 (commit)
via f8dab15791a8f19839f9db529a820b41f10440ae (commit)
via d3dbc2c0557801f0e269a035e257beb09fd53618 (commit)
via d501ef45757f78f5c1d2843eccf8016e8978345e (commit)
via 81c3241d08ced11ea118c7f68db62032ad5bc469 (commit)
via 8bd432b7fe67766d6f92902e20b5e63c9f18146d (commit)
via cdaf5c71016d2cad54d54e9b4b87bafe4554d376 (commit)
via b81c434401a503746ec54e53bf7058cf42beaa2f (commit)
via 36bf949652cf8544f6176f77e07273cd3bf9df77 (commit)
via 41c5cc5a3731417a31c8db685e78cb795bbbe91b (commit)
via b7f67c80916c2efa0c234ab5f4e92c24d47223c5 (commit)
via d0b0a2baec96a678284e3004b13dce85f36ba190 (commit)
via edf8405b6a3bbce4a7e11118bb9c706d36856460 (commit)
via d8bfa56903897394775f39b612f8dd84372c5433 (commit)
via 91a44b10f8c7eb1bee8fcd23a577a1969bcdb2e4 (commit)
via f4008e9c662be5b576f5e785a4c90cc1e2cfb5fa (commit)
via 153020da61fa3ca2341aaf5d279e56d8c489aaaa (commit)
via a7f12322bab34a27863d90de9ddb95f69697bf29 (commit)
via 72d24b26cac507988ba6583064451b81d1854d78 (commit)
via 12d990a6590e5f23a5998d29a2d8efdb0f733688 (commit)
via ab7c97818a088e7205d4d01db1e8a0c0709b9aa0 (commit)
via 8c5f7a869e1d7a7c8f6338d1836987567c32f626 (commit)
via 9cff4a0bf758ebb2e1a63df6a25c83f11752f8d8 (commit)
via fdbf1d6a692ae5991346e352916e8b37bd62cf19 (commit)
via 518e0fab098eb8e025e72b67d7b2ccd75f3deec9 (commit)
via ac22ee15271c0d0c144d9ec42e17da965168e213 (commit)
via 677eebc84a20221287c22b196dd81cf6ddb22fe1 (commit)
via 04a4fa5843c3511260a750065cf79203ae1663ee (commit)
via 963c9e8f87f09ff798e23e0c9ddca6eb7bbec796 (commit)
via f2170ad3c6c0f390d427c6b885527b1d1b09ffa3 (commit)
via e09e57378e5f98235e472a35c18a3e3a2bac97fb (commit)
via 1ecc9b7b0b0f88a4e1a96b9bcb77aa580f68cc89 (commit)
via 044d3d29476a8e59821ca4ebb7144f6c6b0b24ce (commit)
via b23bcfdc041fa9459d2beb423eea35e3ad34e64a (commit)
via bc59a822ddb8e55739fdbdb04e6fbd78d5116450 (commit)
via 6d84b6c8ebeaf59a40cd9e4db1a7e897bf76511c (commit)
via a0e2de21d7c0cb7d38a3fbfa279e2f8278c5280d (commit)
via 565198b9c115b5f9b5b190d76ca7a7a0901c9cc6 (commit)
via 4dac4271e852a29ea23f0fd8efb7db417b444f29 (commit)
via c18a47461c7515e46967b9621af01a6699d036cb (commit)
via 9fe1eb15e54fb07ba90f74043ecb044ce3c198f7 (commit)
via b056c28bcb5090bed22d78b84ac9a688dee27577 (commit)
via ee52a6f8505cc86e01a5488f8bbb954a676fb5fa (commit)
via 34aac296f4a0d2df0e369a9169924ef7849d6e85 (commit)
via 4b34d2584324664897467bb902599938710c9650 (commit)
via 3bbfa6d0fc44e8f9baf67ca9179bef84f92d35be (commit)
via 155c3adfcde63fcc40d6a1474cb14c73285703f6 (commit)
via 379f500eb5304c7a5a0550de567c04f047cc54eb (commit)
via 651dc72cbcadcbeba7012f835c945f15acb3606c (commit)
via ccc1d433b03a5b2d78bccfda15361abc0bdc88ed (commit)
via be5ce81414f6849ce50880bdc629600415d0f604 (commit)
via 6f793d4da23db743b1833c43ccdc006b9bfe7468 (commit)
via d613d109dd067be0161380b0c911204e6b47312b (commit)
via d7e750680bbf5e655d7c986ce0cff550c8022ca4 (commit)
via 1fbefb983066a6237664c883e8aa3d45e9f735f9 (commit)
via 6bb1e16453ba2464a8739d754b61bf69a6c5c581 (commit)
via e1ce0f420a72a205a81ee0b52ea04eaf2fb047d8 (commit)
via 5fcf5ebe7b89517edcb610bf1f1df8abf99df9ae (commit)
via 1f3035cfe645741753e45ff8d3cf43a3fc5b2385 (commit)
via 143bbe8d10d826b05357a531de6aa2a14f4cffb9 (commit)
from c4aefe62bd09b771c6e1cef7130645819af72cac (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 b798b325087c82578b4b079df968ad844a93dfb3
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Nov 3 16:00:00 2014 -0500
4031: Add owner_uuid to graph_test_collection fixtures.
diff --git a/services/api/test/fixtures/collections.yml b/services/api/test/fixtures/collections.yml
index fa0a6ab..daa421c 100644
--- a/services/api/test/fixtures/collections.yml
+++ b/services/api/test/fixtures/collections.yml
@@ -281,18 +281,21 @@ collection_with_files_in_subdir:
graph_test_collection1:
uuid: zzzzz-4zz18-bv31uwvy3neko22
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
name: bar_file
graph_test_collection2:
uuid: zzzzz-4zz18-uukreo9rbgwsujx
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
portable_data_hash: b519d9cb706a29fc7ea24dbea2f05851+93
manifest_text: ". 6a4ff0499484c6c79c95cd8c566bd25f+249025 0:249025:GNU_General_Public_License,_version_3.pdf\n"
name: "GNU General Public License, version 3"
graph_test_collection3:
uuid: zzzzz-4zz18-uukreo9rbgwsujj
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
name: "baz file"
commit 5dd7bd8a05d52838b1cb8df7b341a843abae7a0a
Merge: 15dbb31 3978e8a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Nov 3 15:07:10 2014 -0500
Merge remote-tracking branch 'origin/master' into 4031-fix-graph-connections
Conflicts:
services/api/test/fixtures/collections.yml
diff --cc services/api/test/fixtures/collections.yml
index 379bebd,caa8f56..fa0a6ab
--- a/services/api/test/fixtures/collections.yml
+++ b/services/api/test/fixtures/collections.yml
@@@ -279,24 -279,42 +279,60 @@@ collection_with_files_in_subdir
updated_at: 2014-02-03T17:22:54Z
manifest_text: ". 85877ca2d7e05498dd3d109baf2df106+95+A3a4e26a366ee7e4ed3e476ccf05354761be2e4ae at 545a9920 0:95:file_in_subdir1\n./subdir2/subdir3 2bbc341c702df4d8f42ec31f16c10120+64+A315d7e7bad2ce937e711fc454fae2d1194d14d64 at 545a9920 0:32:file1_in_subdir3.txt 32:32:file2_in_subdir3.txt\n./subdir2/subdir3/subdir4 2bbc341c702df4d8f42ec31f16c10120+64+A315d7e7bad2ce937e711fc454fae2d1194d14d64 at 545a9920 0:32:file1_in_subdir4.txt 32:32:file2_in_subdir4.txt"
+graph_test_collection1:
+ uuid: zzzzz-4zz18-bv31uwvy3neko22
+ portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
+ manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+ name: bar_file
+
+graph_test_collection2:
+ uuid: zzzzz-4zz18-uukreo9rbgwsujx
+ portable_data_hash: b519d9cb706a29fc7ea24dbea2f05851+93
+ manifest_text: ". 6a4ff0499484c6c79c95cd8c566bd25f+249025 0:249025:GNU_General_Public_License,_version_3.pdf\n"
+ name: "GNU General Public License, version 3"
+
+graph_test_collection3:
+ uuid: zzzzz-4zz18-uukreo9rbgwsujj
+ portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
+ manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
+ name: "baz file"
+
+ collection_1_owned_by_fuse:
+ uuid: zzzzz-4zz18-ovx05bfzormx3bg
+ portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
+ owner_uuid: zzzzz-tpzed-0fusedrivertest
+ created_at: 2014-02-03T17:22:54Z
+ modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+ modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+ modified_at: 2014-02-03T17:22:54Z
+ updated_at: 2014-02-03T17:22:54Z
+ manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+ name: "collection #1 owned by FUSE"
+
+ collection_2_owned_by_fuse:
+ uuid: zzzzz-4zz18-8ubpy4w74twtwzr
+ portable_data_hash: 1f4b0bc7583c2a7f9102c395f4ffc5e3+45
+ owner_uuid: zzzzz-tpzed-0fusedrivertest
+ created_at: 2014-02-03T17:22:54Z
+ modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+ modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+ modified_at: 2014-02-03T17:22:54Z
+ updated_at: 2014-02-03T17:22:54Z
+ manifest_text: ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n"
+ name: "collection #2 owned by FUSE"
+
+ collection_in_fuse_project:
+ uuid: zzzzz-4zz18-vx4mtkjqfrb534f
+ portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
+ owner_uuid: zzzzz-j7d0g-0000ownedbyfuse
+ created_at: 2014-02-03T17:22:54Z
+ modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+ modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+ modified_at: 2014-02-03T17:22:54Z
+ updated_at: 2014-02-03T17:22:54Z
+ manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
+ name: "collection in FUSE project"
+
# Test Helper trims the rest of the file
# Do not add your fixtures below this line as the rest of this file will be trimmed by test_helper
commit 15dbb3110b3b7cc6712e58bdfbb9a5df7fab1882
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Nov 3 15:06:09 2014 -0500
4031: Improve provenance graph tests for readability, use fixtures instead of
hardcoded hashes. Improve efficiency of matching collections in search_edges.
Remove spurious debug code.
diff --git a/apps/workbench/app/controllers/jobs_controller.rb b/apps/workbench/app/controllers/jobs_controller.rb
index 00ce0a5..5365182 100644
--- a/apps/workbench/app/controllers/jobs_controller.rb
+++ b/apps/workbench/app/controllers/jobs_controller.rb
@@ -24,10 +24,6 @@ class JobsController < ApplicationController
nodes[c[:portable_data_hash]] = c
end
- nodes.each do |n|
- puts "\n#{n.inspect}"
- end
-
@svg = ProvenanceHelper::create_provenance_graph nodes, "provenance_svg", {
:request => request,
:all_script_parameters => true,
diff --git a/apps/workbench/app/helpers/provenance_helper.rb b/apps/workbench/app/helpers/provenance_helper.rb
index 89d9ee6..e8850d5 100644
--- a/apps/workbench/app/helpers/provenance_helper.rb
+++ b/apps/workbench/app/helpers/provenance_helper.rb
@@ -218,7 +218,7 @@ module ProvenanceHelper
label = "#{v[0][:script]}"
- if label == "run-command"
+ if label == "run-command" and v[0][:script_parameters][:command].is_a? Array
label = v[0][:script_parameters][:command].join(' ')
end
@@ -234,7 +234,7 @@ module ProvenanceHelper
end
def encode_quotes value
- value.andand.to_s.gsub("\"", "\\\"").gsub("\n", "\\n")
+ value.to_s.gsub("\"", "\\\"").gsub("\n", "\\n")
end
end
@@ -301,7 +301,9 @@ edge [fontsize=10,fontname=\"Helvetica,Arial,sans-serif\"];
svg = svg.sub(/<svg /, "<svg id=\"#{svgId}\" ")
end
- # returns hash, uuid
+ # yields hash, uuid
+ # Position indicates whether it is a content hash or arvados uuid.
+ # One will hold a value, the other will always be nil.
def self.find_collections(sp, key=nil, &b)
case sp
when ArvadosBase
diff --git a/apps/workbench/test/controllers/collections_controller_test.rb b/apps/workbench/test/controllers/collections_controller_test.rb
index 95f9151..f4d9c49 100644
--- a/apps/workbench/test/controllers/collections_controller_test.rb
+++ b/apps/workbench/test/controllers/collections_controller_test.rb
@@ -20,7 +20,8 @@ class CollectionsControllerTest < ActionController::TestCase
test 'provenance graph' do
use_token 'admin'
- obj = Collection.where(uuid: 'zzzzz-4zz18-uukreo9rbgwsujj').results.first
+
+ obj = find_fixture Collection, "graph_test_collection3"
provenance = obj.provenance.stringify_keys
@@ -33,28 +34,26 @@ class CollectionsControllerTest < ActionController::TestCase
:direction => :bottom_up,
:combine_jobs => :script_only})
- # hash -> baz file
- assert /ea10d51bcf88862dbcc36eb292017dfd\+45->hash_f866587e2de5291fbd38d616d6d33eab/.match(prov_svg)
+ stage1 = find_fixture Job, "graph_stage1"
+ stage3 = find_fixture Job, "graph_stage3"
+ previous_job_run = find_fixture Job, "previous_job_run"
- # hash2 -> baz file
- assert /ea10d51bcf88862dbcc36eb292017dfd\+45->hash2_02a085407e751d00b5dc88f1bd5e8247/.match(prov_svg)
+ obj_id = obj.portable_data_hash.gsub('+', '\\\+')
+ stage1_out = stage1.output.gsub('+', '\\\+')
+ stage1_id = "#{stage1.script}_#{Digest::MD5.hexdigest(stage1[:script_parameters].to_json)}"
+ stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
- # owned_by_active -> hash
- assert /hash_f866587e2de5291fbd38d616d6d33eab->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+ assert /#{obj_id}->#{stage3_id}/.match(prov_svg)
- # owned_by_active -> hash2
- assert /hash2_02a085407e751d00b5dc88f1bd5e8247->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+ assert /#{stage3_id}->#{stage1_out}/.match(prov_svg)
- # File::open "./tmp/stuff3.svg", "w" do |f|
- # f.write "<?xml version=\"1.0\" ?>\n"
- # f.write prov_svg
- # end
+ assert /#{stage1_out}->#{stage1_id}/.match(prov_svg)
end
test 'used_by graph' do
use_token 'admin'
- obj = Collection.where(uuid: 'zzzzz-4zz18-bv31uwvy3neko22').results.first
+ obj = find_fixture Collection, "graph_test_collection1"
used_by = obj.used_by.stringify_keys
@@ -64,20 +63,22 @@ class CollectionsControllerTest < ActionController::TestCase
:combine_jobs => :script_only,
:pdata_only => true})
- # bar_file -> hash2
- assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_f866587e2de5291fbd38d616d6d33eab/.match(used_by_svg)
+ stage2 = find_fixture Job, "graph_stage2"
+ stage3 = find_fixture Job, "graph_stage3"
+
+ stage2_id = "#{stage2.script}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+ stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
+
+ obj_id = obj.portable_data_hash.gsub('+', '\\\+')
+ stage3_out = stage3.output.gsub('+', '\\\+')
- # hash -> baz file
- assert /hash_f866587e2de5291fbd38d616d6d33eab->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(used_by_svg)
+ assert /#{obj_id}->#{stage2_id}/.match(used_by_svg)
- # hash2 -> baz file
- assert /hash2_02a085407e751d00b5dc88f1bd5e8247->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(used_by_svg)
+ assert /#{obj_id}->#{stage3_id}/.match(used_by_svg)
+ assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)
- # File::open "./tmp/stuff4.svg", "w" do |f|
- # f.write "<?xml version=\"1.0\" ?>\n"
- # f.write used_by_svg
- # end
+ assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)
end
end
diff --git a/apps/workbench/test/controllers/pipeline_instances_controller_test.rb b/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
index 70b7493..718b5c4 100644
--- a/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
+++ b/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
@@ -84,14 +84,19 @@ class PipelineInstancesControllerTest < ActionController::TestCase
@controller.params['tab_pane'] = "Graph"
provenance, pips = @controller.graph([pipeline_for_graph])
+ graph_test_collection1 = find_fixture Collection, "graph_test_collection1"
+ stage1 = find_fixture Job, "graph_stage1"
+ stage2 = find_fixture Job, "graph_stage2"
+
['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage1',
'component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage2',
- 'zzzzz-8i9sb-graphstage10000',
- 'zzzzz-8i9sb-graphstage20000',
- 'b519d9cb706a29fc7ea24dbea2f05851+93',
- 'fa7aeb5140e2848d39b416daeef4ffc5+45',
- 'zzzzz-4zz18-bv31uwvy3neko22',
- 'zzzzz-4zz18-uukreo9rbgwsujx'].each do |k|
+ stage1.uuid,
+ stage2.uuid,
+ stage1.output,
+ stage2.output,
+ pipeline_for_graph[:components][:stage1][:output_uuid],
+ pipeline_for_graph[:components][:stage2][:output_uuid]
+ ].each do |k|
assert_not_nil provenance[k], "Expected key #{k} in provenance set"
assert_equal 1, pips[k], "Expected key #{k} in pips set" if !k.start_with? "component_"
@@ -104,16 +109,14 @@ class PipelineInstancesControllerTest < ActionController::TestCase
:pips => pips,
:only_components => true }
- # hash -> owned_by_active
- assert /hash_4fe459abe02d9b365932b8f5dc419439ab4e2577_99914b932bd37a50b983c5e7c90ae93b->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+ stage1_id = "#{stage1[:script]}_#{stage1[:script_version]}_#{Digest::MD5.hexdigest(stage1[:script_parameters].to_json)}"
+ stage2_id = "#{stage2[:script]}_#{stage2[:script_version]}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+
+ stage1_out = stage1[:output].gsub('+','\\\+')
- # owned_by_active -> hash2
- assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70/.match(prov_svg)
+ assert_match /#{stage1_id}->#{stage1_out}/, prov_svg
- #File::open "./tmp/stuff1.svg", "w" do |f|
- # f.write "<?xml version=\"1.0\" ?>\n"
- # f.write prov_svg
- #end
+ assert_match /#{stage1_out}->#{stage2_id}/, prov_svg
end
@@ -171,19 +174,25 @@ class PipelineInstancesControllerTest < ActionController::TestCase
@controller.params['tab_pane'] = "Graph"
provenance, pips = @controller.graph([pipeline_for_graph1, pipeline_for_graph2])
+ collection1 = find_fixture Collection, "graph_test_collection1"
+
+ stage1 = find_fixture Job, "graph_stage1"
+ stage2 = find_fixture Job, "graph_stage2"
+ stage3 = find_fixture Job, "graph_stage3"
+
[['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage1', nil],
['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage2', nil],
['component_zzzzz-d1hrv-9fm8l10i9z2kqc0_stage1', nil],
['component_zzzzz-d1hrv-9fm8l10i9z2kqc0_stage2', nil],
- ['zzzzz-8i9sb-graphstage10000', 3],
- ['zzzzz-8i9sb-graphstage20000', 1],
- ['zzzzz-8i9sb-graphstage30000', 2],
- ['b519d9cb706a29fc7ea24dbea2f05851+93', 1],
- ['fa7aeb5140e2848d39b416daeef4ffc5+45', 3],
- ['ea10d51bcf88862dbcc36eb292017dfd+45', 2],
- ['zzzzz-4zz18-bv31uwvy3neko22', 3],
- ['zzzzz-4zz18-uukreo9rbgwsujx', 1],
- ['zzzzz-4zz18-uukreo9rbgwsujj', 2]
+ [stage1.uuid, 3],
+ [stage2.uuid, 1],
+ [stage3.uuid, 2],
+ [stage1.output, 3],
+ [stage2.output, 1],
+ [stage3.output, 2],
+ [pipeline_for_graph1[:components][:stage1][:output_uuid], 3],
+ [pipeline_for_graph1[:components][:stage2][:output_uuid], 1],
+ [pipeline_for_graph2[:components][:stage2][:output_uuid], 2]
].each do |k|
assert_not_nil provenance[k[0]], "Expected key #{k[0]} in provenance set"
assert_equal k[1], pips[k[0]], "Expected key #{k} in pips" if !k[0].start_with? "component_"
@@ -196,22 +205,19 @@ class PipelineInstancesControllerTest < ActionController::TestCase
:pips => pips,
:only_components => true }
- # owned_by_active -> hash2 (stuff)
- assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70/.match(prov_svg)
+ collection1_id = collection1.portable_data_hash.gsub('+','\\\+')
- # owned_by_active -> hash2 (stuff2)
- assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_02a085407e751d00b5dc88f1bd5e8247/.match(prov_svg)
+ stage2_id = "#{stage2[:script]}_#{stage2[:script_version]}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+ stage3_id = "#{stage3[:script]}_#{stage3[:script_version]}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
- # hash2 (stuff) -> GPL
- assert /hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70->b519d9cb706a29fc7ea24dbea2f05851\+93/.match(prov_svg)
+ stage2_out = stage2[:output].gsub('+','\\\+')
+ stage3_out = stage3[:output].gsub('+','\\\+')
- # hash2 (stuff2) -> baz file
- assert /hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_02a085407e751d00b5dc88f1bd5e8247->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(prov_svg)
+ assert_match /#{collection1_id}->#{stage2_id}/, prov_svg
+ assert_match /#{collection1_id}->#{stage3_id}/, prov_svg
- # File::open "./tmp/stuff2.svg", "w" do |f|
- # f.write "<?xml version=\"1.0\" ?>\n"
- # f.write prov_svg
- # end
+ assert_match /#{stage2_id}->#{stage2_out}/, prov_svg
+ assert_match /#{stage3_id}->#{stage3_out}/, prov_svg
end
diff --git a/apps/workbench/test/integration/pipeline_instances_test.rb b/apps/workbench/test/integration/pipeline_instances_test.rb
index 3d7c348..6f95b3d 100644
--- a/apps/workbench/test/integration/pipeline_instances_test.rb
+++ b/apps/workbench/test/integration/pipeline_instances_test.rb
@@ -134,7 +134,7 @@ class PipelineInstancesTest < ActionDispatch::IntegrationTest
# since the pipeline component has a job, expect to see the graph
assert page.has_text? 'Graph'
click_link 'Graph'
- assert page.has_text? 'script_version'
+ page.assert_selector "#provenance_graph"
end
test 'pipeline description' do
diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb
index dbcc046..f546a4a 100644
--- a/services/api/app/controllers/arvados/v1/collections_controller.rb
+++ b/services/api/app/controllers/arvados/v1/collections_controller.rb
@@ -76,15 +76,16 @@ class Arvados::V1::CollectionsController < ApplicationController
if loc
# uuid is a portable_data_hash
- c = Collection.readable_by(*@read_users).where(portable_data_hash: loc.to_s).all
+ collections = Collection.readable_by(*@read_users).where(portable_data_hash: loc.to_s)
+ c = collections.limit(2).all
if c.size == 1
visited[loc.to_s] = c[0]
elsif c.size > 1
- named = c.select {|n| not n.name.nil? and not n.name.empty? }
- if named.any?
+ name = collections.limit(1).where("name <> ''").first
+ if name
visited[loc.to_s] = {
portable_data_hash: c[0].portable_data_hash,
- name: "#{named[0].name} + #{c.size-1} more"
+ name: "#{name.name} + #{collections.count-1} more"
}
else
visited[loc.to_s] = {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list