[ARVADOS] updated: 5608a875c36101c791e35c474abf5e3900aad071
git at public.curoverse.com
git at public.curoverse.com
Tue Jul 7 17:02:31 EDT 2015
Summary of changes:
.../controllers/arvados/v1/repositories_controller.rb | 19 +++++++++----------
.../arvados/v1/repositories_controller_test.rb | 11 +++++++++++
2 files changed, 20 insertions(+), 10 deletions(-)
via 5608a875c36101c791e35c474abf5e3900aad071 (commit)
via e06ea339d3d0c0f6fad81128b3cab34cdd4bd36f (commit)
from da80f4a198e734313a7991466244083dabd64b00 (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 5608a875c36101c791e35c474abf5e3900aad071
Merge: da80f4a e06ea33
Author: Brett Smith <brett at curoverse.com>
Date: Tue Jul 7 17:02:06 2015 -0400
Merge branch '5989-api-all-repos-permissions-wip'
Closes #5989, #6479.
commit e06ea339d3d0c0f6fad81128b3cab34cdd4bd36f
Author: Brett Smith <brett at curoverse.com>
Date: Sun Jul 5 07:39:09 2015 -0400
5989: API repo perms method always returns all repos.
Previously the method would not return repositories that were not
accessible to any authorized key. This change helps deployment tools
like update-gitolite do repository setup correctly with a single API
call.
diff --git a/services/api/app/controllers/arvados/v1/repositories_controller.rb b/services/api/app/controllers/arvados/v1/repositories_controller.rb
index b5123d9..fd6ab58 100644
--- a/services/api/app/controllers/arvados/v1/repositories_controller.rb
+++ b/services/api/app/controllers/arvados/v1/repositories_controller.rb
@@ -4,14 +4,20 @@ class Arvados::V1::RepositoriesController < ApplicationController
before_filter :admin_required, :only => :get_all_permissions
def get_all_permissions
@users = {}
- User.includes(:authorized_keys).all.each do |u|
+ User.includes(:authorized_keys).find_each do |u|
@users[u.uuid] = u
end
admins = @users.select { |k,v| v.is_admin }
@user_aks = {}
@repo_info = {}
- @repos = Repository.includes(:permissions).all
- @repos.each do |repo|
+ Repository.includes(:permissions).find_each do |repo|
+ @repo_info[repo.uuid] = {
+ uuid: repo.uuid,
+ name: repo.name,
+ push_url: repo.push_url,
+ fetch_url: repo.fetch_url,
+ user_permissions: {},
+ }
gitolite_permissions = ''
perms = []
repo.permissions.each do |perm|
@@ -45,13 +51,6 @@ class Arvados::V1::RepositoriesController < ApplicationController
}
end || []
if @user_aks[user_uuid].any?
- @repo_info[repo.uuid] ||= {
- uuid: repo.uuid,
- name: repo.name,
- push_url: repo.push_url,
- fetch_url: repo.fetch_url,
- user_permissions: {}
- }
ri = (@repo_info[repo.uuid][:user_permissions][user_uuid] ||= {})
ri[perm[:name]] = true
end
diff --git a/services/api/test/functional/arvados/v1/repositories_controller_test.rb b/services/api/test/functional/arvados/v1/repositories_controller_test.rb
index 7f4ed8e..7ba2183 100644
--- a/services/api/test/functional/arvados/v1/repositories_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/repositories_controller_test.rb
@@ -88,6 +88,17 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase
end
end
+ test "get_all_permissions lists repos with no authorized keys" do
+ authorize_with :admin
+ AuthorizedKey.destroy_all
+ get :get_all_permissions
+ assert_response :success
+ assert_equal(Repository.count, json_response["repositories"].size)
+ assert(json_response["repositories"].any? do |repo|
+ repo["user_permissions"].empty?
+ end, "test is invalid - all repositories have authorized keys")
+ end
+
test "default index includes fetch_url" do
authorize_with :active
get(:index)
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list