hammer_cli_katello 0.0.24 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hammer_cli_katello.rb +1 -0
- data/lib/hammer_cli_katello/activation_key.rb +8 -6
- data/lib/hammer_cli_katello/capsule.rb +2 -21
- data/lib/hammer_cli_katello/commands.rb +2 -2
- data/lib/hammer_cli_katello/content_host.rb +3 -49
- data/lib/hammer_cli_katello/content_view.rb +19 -4
- data/lib/hammer_cli_katello/content_view_puppet_module.rb +8 -0
- data/lib/hammer_cli_katello/content_view_version.rb +69 -20
- data/lib/hammer_cli_katello/host.rb +4 -0
- data/lib/hammer_cli_katello/host_collection.rb +3 -22
- data/lib/hammer_cli_katello/host_errata.rb +1 -1
- data/lib/hammer_cli_katello/host_subscription.rb +31 -0
- data/lib/hammer_cli_katello/id_resolver.rb +45 -65
- data/lib/hammer_cli_katello/katello_environment_name_resolvable.rb +33 -0
- data/lib/hammer_cli_katello/lifecycle_environment_name_resolvable.rb +1 -13
- data/lib/hammer_cli_katello/ping.rb +4 -0
- data/lib/hammer_cli_katello/repository.rb +10 -8
- data/lib/hammer_cli_katello/search_options_creators.rb +70 -0
- data/lib/hammer_cli_katello/version.rb +1 -1
- data/test/data/3.0/foreman_api.json +1 -0
- data/test/functional/activaton_key/list_test.rb +69 -0
- data/test/functional/content_view/content_view_helpers.rb +10 -0
- data/test/functional/content_view/create_test.rb +119 -0
- data/test/functional/content_view/list_test.rb +67 -0
- data/test/functional/content_view/version/incremental_update_test.rb +91 -0
- data/test/functional/host/errata/apply_test.rb +46 -0
- data/test/functional/host/host_helpers.rb +10 -0
- data/test/functional/host/subscription/register_test.rb +53 -0
- data/test/functional/host/subscription/unregister_test.rb +37 -0
- data/test/functional/lifecycle_environment/lifecycle_environment_helpers.rb +17 -0
- data/test/functional/organization/organization_helpers.rb +10 -0
- data/test/functional/ping_test.rb +19 -0
- data/test/functional/product/product_helpers.rb +8 -0
- data/test/functional/repository/info_test.rb +46 -0
- data/test/functional/repository/list_test.rb +69 -0
- data/test/functional/repository/repository_helpers.rb +9 -0
- data/test/functional/repository/synchronize_test.rb +57 -0
- data/test/functional/repository/upload_test.rb +86 -0
- data/test/task_helper.rb +7 -0
- data/test/test_helper.rb +16 -3
- data/test/unit/id_resolver_test.rb +32 -0
- data/test/unit/search_options_creators_test.rb +107 -0
- metadata +53 -3
@@ -0,0 +1,10 @@
|
|
1
|
+
module ContentViewHelpers
|
2
|
+
|
3
|
+
def expect_content_view_search(org_id, name, id)
|
4
|
+
ex = api_expects(:content_views, :index, 'Find the content view') do |par|
|
5
|
+
par['name'] == name && par['organization_id'] == org_id
|
6
|
+
end
|
7
|
+
ex.returns(index_response([{'id' => id}]))
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper')
|
2
|
+
|
3
|
+
# Workaround for issue #14289
|
4
|
+
require 'hammer_cli_katello/content_view_puppet_module'
|
5
|
+
|
6
|
+
describe 'content-view create' do
|
7
|
+
before do
|
8
|
+
@cmd = %w(content-view create)
|
9
|
+
@base_params = ["--organization-id=#{org_id}", "--name=#{name}"]
|
10
|
+
end
|
11
|
+
let(:error_heading) { "Could not create the content view" }
|
12
|
+
let(:name) { 'test-cv' }
|
13
|
+
let(:org_id) { 1 }
|
14
|
+
let(:product) do
|
15
|
+
{ 'name' => 'product-1', 'id' => 1 }
|
16
|
+
end
|
17
|
+
let(:repositories) do
|
18
|
+
[
|
19
|
+
{'name' => 'repo-1', 'id' => '1'},
|
20
|
+
{'name' => 'repo-2', 'id' => '2'},
|
21
|
+
{'name' => 'repo-3', 'id' => '3'}
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'creates the content view with repositories specified by ids' do
|
26
|
+
wanted = repositories.take(2)
|
27
|
+
ids = wanted.map { |repo| repo['id'] }
|
28
|
+
params = %W(--repository-ids=#{ids.join(',')})
|
29
|
+
|
30
|
+
api_expects(:content_views, :create, 'Create content view') do |par|
|
31
|
+
par['name'] == name &&
|
32
|
+
par['repository_ids'] == ids &&
|
33
|
+
par['organization_id'] == org_id
|
34
|
+
end
|
35
|
+
|
36
|
+
expected_result = success_result("Content view created\n")
|
37
|
+
result = run_cmd(@cmd + @base_params + params)
|
38
|
+
assert_cmd(expected_result, result)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'create the content view with repositories specified by product id and names' do
|
42
|
+
wanted = repositories.take(2)
|
43
|
+
ids = wanted.map { |repo| repo['id'] }
|
44
|
+
names = wanted.map { |repo| repo['name'] }
|
45
|
+
params = %W(--product-id=#{product['id']} --repositories=#{names.join(',')})
|
46
|
+
|
47
|
+
api_repositories = api_expects(:repositories, :index,
|
48
|
+
'Find repositories belonging to product') do |par|
|
49
|
+
par['product_id'] == product['id'] && par['organization_id'] == org_id
|
50
|
+
end
|
51
|
+
api_repositories.returns(repositories)
|
52
|
+
|
53
|
+
api_expects(:content_views, :create, 'Create content view') do |par|
|
54
|
+
par['organization_id'] == org_id &&
|
55
|
+
par['name'] == name &&
|
56
|
+
par['repository_ids'] == ids
|
57
|
+
end
|
58
|
+
|
59
|
+
expected_result = success_result("Content view created\n")
|
60
|
+
result = run_cmd(@cmd + @base_params + params)
|
61
|
+
assert_cmd(expected_result, result)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'create the content view with repositories specified by product name and names' do
|
65
|
+
wanted = repositories.take(2)
|
66
|
+
ids = wanted.map { |repo| repo['id'] }
|
67
|
+
names = wanted.map { |repo| repo['name'] }
|
68
|
+
params = %W(--product=#{product['name']} --repositories=#{names.join(',')})
|
69
|
+
|
70
|
+
api_products = api_expects(:products, :index, 'Find ID of product') do |par|
|
71
|
+
par['organization_id'] == org_id && par['name'] == product['name']
|
72
|
+
end
|
73
|
+
api_products.returns(product)
|
74
|
+
|
75
|
+
api_repositories = api_expects(:repositories, :index,
|
76
|
+
'Find repositories belonging to product') do |par|
|
77
|
+
par['product_id'] == product['id'] && par['organization_id'] == org_id
|
78
|
+
end
|
79
|
+
api_repositories.returns(repositories)
|
80
|
+
|
81
|
+
api_expects(:content_views, :create, 'Create content view') do |par|
|
82
|
+
par['organization_id'] == org_id &&
|
83
|
+
par['name'] == name &&
|
84
|
+
par['repository_ids'] == ids
|
85
|
+
end
|
86
|
+
|
87
|
+
expected_result = success_result("Content view created\n")
|
88
|
+
result = run_cmd(@cmd + @base_params + params)
|
89
|
+
assert_cmd(expected_result, result)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'fails on providing repository names without product' do
|
93
|
+
params = %w(--repositories=repo-1,repo-2)
|
94
|
+
|
95
|
+
expected_result = usage_error_result(
|
96
|
+
@cmd,
|
97
|
+
'At least one of options --product-id, --product is required',
|
98
|
+
error_heading
|
99
|
+
)
|
100
|
+
|
101
|
+
api_expects_no_call
|
102
|
+
result = run_cmd(@cmd + @base_params + params)
|
103
|
+
assert_cmd(expected_result, result)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'fails on providing product and repository ids' do
|
107
|
+
params = %w(--product=testproduct --repository-ids=1,2,3,4,5)
|
108
|
+
|
109
|
+
expected_result = usage_error_result(
|
110
|
+
@cmd,
|
111
|
+
"You can't set any of options --product-id, --product",
|
112
|
+
error_heading
|
113
|
+
)
|
114
|
+
|
115
|
+
api_expects_no_call
|
116
|
+
result = run_cmd(@cmd + params)
|
117
|
+
assert_cmd(expected_result, result)
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__), '../lifecycle_environment/lifecycle_environment_helpers')
|
3
|
+
|
4
|
+
require 'hammer_cli_katello/content_view_puppet_module'
|
5
|
+
|
6
|
+
describe 'listing content-views' do
|
7
|
+
include LifecycleEnvironmentHelpers
|
8
|
+
|
9
|
+
before do
|
10
|
+
@cmd = %w(content-view list)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:org_id) { 1 }
|
14
|
+
let(:lifecycle_env_id) { 1 }
|
15
|
+
let(:empty_response) do {
|
16
|
+
"total" => 0,
|
17
|
+
"subtotal" => 0,
|
18
|
+
"page" => "1",
|
19
|
+
"per_page" => "1000",
|
20
|
+
"error" => nil,
|
21
|
+
"search" => nil,
|
22
|
+
"sort" => {
|
23
|
+
"by" => nil,
|
24
|
+
"order" => nil
|
25
|
+
},
|
26
|
+
"results" => []
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
it "lists an organizations content-views" do
|
31
|
+
params = ["--organization-id=#{org_id}"]
|
32
|
+
|
33
|
+
ex = api_expects(:content_views, :index, 'Organizations content-views list') do |par|
|
34
|
+
par['organization_id'] == org_id && par['page'] == 1 &&
|
35
|
+
par['per_page'] == 1000
|
36
|
+
end
|
37
|
+
|
38
|
+
ex.returns(empty_response)
|
39
|
+
expected_result = success_result("----------------|------|-------|-----------|---------------
|
40
|
+
CONTENT VIEW ID | NAME | LABEL | COMPOSITE | REPOSITORY IDS
|
41
|
+
----------------|------|-------|-----------|---------------
|
42
|
+
")
|
43
|
+
|
44
|
+
result = run_cmd(@cmd + params)
|
45
|
+
assert_cmd(expected_result, result)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "lists the content-views belonging to a lifecycle-environment by name" do
|
49
|
+
params = ["--organization-id=#{org_id}", '--lifecycle-environment=test']
|
50
|
+
|
51
|
+
expect_lifecycle_environment_search(org_id, 'test', lifecycle_env_id).at_least_once
|
52
|
+
|
53
|
+
ex = api_expects(:content_views, :index, 'lifecycles content-views list') do |par|
|
54
|
+
par['organization_id'] == org_id && par['page'] == 1 &&
|
55
|
+
par['per_page'] == 1000
|
56
|
+
end
|
57
|
+
|
58
|
+
ex.returns(empty_response)
|
59
|
+
expected_result = success_result("----------------|------|-------|-----------|---------------
|
60
|
+
CONTENT VIEW ID | NAME | LABEL | COMPOSITE | REPOSITORY IDS
|
61
|
+
----------------|------|-------|-----------|---------------
|
62
|
+
")
|
63
|
+
|
64
|
+
result = run_cmd(@cmd + params)
|
65
|
+
assert_cmd(expected_result, result)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__), '../../organization/organization_helpers')
|
3
|
+
require File.join(File.dirname(__FILE__),
|
4
|
+
'../../lifecycle_environment/lifecycle_environment_helpers')
|
5
|
+
|
6
|
+
describe 'content-view version incremental-update' do
|
7
|
+
include OrganizationHelpers
|
8
|
+
include LifecycleEnvironmentHelpers
|
9
|
+
include ForemanTaskHelpers
|
10
|
+
|
11
|
+
before do
|
12
|
+
@cmd = %w(content-view version incremental-update)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "performs incremental update with no updates" do
|
16
|
+
params = ['--errata-ids=FOO2012', '--lifecycle-environment-ids=1,2,3',
|
17
|
+
'--content-view-version-id=5']
|
18
|
+
|
19
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
20
|
+
par['update_hosts'].nil? &&
|
21
|
+
par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
|
22
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
23
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
24
|
+
end
|
25
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
26
|
+
|
27
|
+
expect_foreman_task('3')
|
28
|
+
|
29
|
+
result = run_cmd(@cmd + params)
|
30
|
+
assert(result.exit_code, 0)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "performs incremental update with update all hosts" do
|
34
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
|
35
|
+
'--lifecycle-environment-ids=1,2,3', '--content-view-version-id=5']
|
36
|
+
|
37
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
38
|
+
par['update_hosts']['included'][:search] == '' &&
|
39
|
+
par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
|
40
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
41
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
42
|
+
end
|
43
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
44
|
+
|
45
|
+
expect_foreman_task('3')
|
46
|
+
|
47
|
+
result = run_cmd(@cmd + params)
|
48
|
+
assert(result.exit_code, 0)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "performs incremental update with no environment" do
|
52
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012', '--content-view-version-id=5']
|
53
|
+
|
54
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
55
|
+
par['update_hosts']['included'][:search] == '' &&
|
56
|
+
par[:content_view_version_environments][0][:environment_ids].nil? &&
|
57
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
58
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
59
|
+
end
|
60
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
61
|
+
|
62
|
+
expect_foreman_task('3')
|
63
|
+
|
64
|
+
result = run_cmd(@cmd + params)
|
65
|
+
assert(result.exit_code, 0)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "performs incremental update with names" do
|
69
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
|
70
|
+
'--lifecycle-environments=trump,cruz,bernie',
|
71
|
+
'--content-view-version-id=5', '--organization=USA']
|
72
|
+
|
73
|
+
expect_organization_search('USA', 5)
|
74
|
+
expect_lifecycle_environments_request(5, [{'name' => 'trump', 'id' => 1},
|
75
|
+
{'name' => 'cruz', 'id' => 2},
|
76
|
+
{'name' => 'bernie', 'id' => 3}])
|
77
|
+
|
78
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
79
|
+
par['update_hosts']['included'][:search] == '' &&
|
80
|
+
par[:content_view_version_environments][0][:environment_ids] == [1, 2, 3] &&
|
81
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
82
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
83
|
+
end
|
84
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
85
|
+
|
86
|
+
expect_foreman_task('3')
|
87
|
+
|
88
|
+
result = run_cmd(@cmd + params)
|
89
|
+
assert(result.exit_code, 0)
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test_helper')
|
2
|
+
|
3
|
+
require 'hammer_cli_katello/content_view_puppet_module'
|
4
|
+
|
5
|
+
describe 'apply an errata' do
|
6
|
+
include ForemanTaskHelpers
|
7
|
+
|
8
|
+
before do
|
9
|
+
@cmd = %w(host errata apply)
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:errata_id) { "RHEA-1111:1111" }
|
13
|
+
let(:host_id) { 1 }
|
14
|
+
let(:task_id) { 5 }
|
15
|
+
let(:response) do {
|
16
|
+
'id' => task_id,
|
17
|
+
'state' => 'stopped'
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
it "applies an errata to a host" do
|
22
|
+
params = ["--errata-ids=#{errata_id}", "--host-id=#{host_id}"]
|
23
|
+
|
24
|
+
ex = api_expects(:host_errata, :apply, 'Host errata apply') do |par|
|
25
|
+
par['errata_ids'] == [errata_id] && par['host_id'] == host_id
|
26
|
+
end
|
27
|
+
|
28
|
+
ex.returns(response)
|
29
|
+
|
30
|
+
expect_foreman_task(task_id)
|
31
|
+
|
32
|
+
run_cmd(@cmd + params)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "applies an errata to a host with async flag" do
|
36
|
+
params = ["--errata-ids=#{errata_id}", "--host-id=#{host_id}", "--async"]
|
37
|
+
|
38
|
+
ex = api_expects(:host_errata, :apply, 'Host errata apply') do |par|
|
39
|
+
par['errata_ids'] == [errata_id] && par['host_id'] == host_id
|
40
|
+
end
|
41
|
+
|
42
|
+
ex.returns(response)
|
43
|
+
|
44
|
+
run_cmd(@cmd + params)
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__), '../../content_view/content_view_helpers')
|
3
|
+
require File.join(File.dirname(__FILE__), '../../organization/organization_helpers')
|
4
|
+
require File.join(File.dirname(__FILE__),
|
5
|
+
'../../lifecycle_environment/lifecycle_environment_helpers')
|
6
|
+
|
7
|
+
describe 'host subscription register' do
|
8
|
+
include OrganizationHelpers
|
9
|
+
include ContentViewHelpers
|
10
|
+
include LifecycleEnvironmentHelpers
|
11
|
+
|
12
|
+
before do
|
13
|
+
@cmd = %w(host subscription register)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "subscribe a host" do
|
17
|
+
params = ['--name=trump.wall.com', '--content-view-id=1', '--lifecycle-environment-id=2']
|
18
|
+
ex = api_expects(:host_subscriptions, :create, 'Host subscription register') do |par|
|
19
|
+
par['name'] == 'trump.wall.com' && par['content_view_id'] == 1 &&
|
20
|
+
par['lifecycle_environment_id'] == 2
|
21
|
+
end
|
22
|
+
ex.returns({})
|
23
|
+
|
24
|
+
expected_result = success_result(
|
25
|
+
'Host successfully registered
|
26
|
+
'
|
27
|
+
)
|
28
|
+
|
29
|
+
result = run_cmd(@cmd + params)
|
30
|
+
assert_cmd(expected_result, result)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "resolves ids from names" do
|
34
|
+
params = ['--name=trump.wall.com', '--content-view=someview', '--lifecycle-environment=someenv',
|
35
|
+
'--organization=trumporg']
|
36
|
+
|
37
|
+
api_expects(:host_subscriptions, :create, 'Host subscription register') do |par|
|
38
|
+
par['name'] == 'trump.wall.com' && par['content_view_id'] == 1 &&
|
39
|
+
par['lifecycle_environment_id'] == 2
|
40
|
+
end
|
41
|
+
|
42
|
+
expect_organization_search('trumporg', 3)
|
43
|
+
expect_content_view_search(3, 'someview', 1)
|
44
|
+
expect_lifecycle_environment_search(3, 'someenv', 2)
|
45
|
+
|
46
|
+
expected_result = success_result(
|
47
|
+
'Host successfully registered
|
48
|
+
'
|
49
|
+
)
|
50
|
+
result = run_cmd(@cmd + params)
|
51
|
+
assert_cmd(expected_result, result)
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__), '../host_helpers')
|
3
|
+
|
4
|
+
describe 'host subscription unregister' do
|
5
|
+
include HostHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@cmd = %w(host subscription unregister)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "unregisters the host" do
|
12
|
+
params = ['--host-id=3']
|
13
|
+
ex = api_expects(:host_subscriptions, :destroy, 'Host unregister') do |par|
|
14
|
+
par['host_id'] == 3
|
15
|
+
end
|
16
|
+
ex.returns({})
|
17
|
+
|
18
|
+
expected_result = success_result(
|
19
|
+
'Host unregistered
|
20
|
+
'
|
21
|
+
)
|
22
|
+
|
23
|
+
result = run_cmd(@cmd + params)
|
24
|
+
assert_cmd(expected_result, result)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "resolves id from name" do
|
28
|
+
params = ['--host=host1']
|
29
|
+
|
30
|
+
api_expects(:host_subscriptions, :destroy, 'Host unregister') do |par|
|
31
|
+
par['host_id'].to_i == 3
|
32
|
+
end
|
33
|
+
expect_host_search('host1', '3')
|
34
|
+
|
35
|
+
run_cmd(@cmd + params)
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module LifecycleEnvironmentHelpers
|
2
|
+
|
3
|
+
def expect_lifecycle_environment_search(org_id, name, id)
|
4
|
+
ex = api_expects(:lifecycle_environments, :index, 'Find the lifecycle environment') do |par|
|
5
|
+
par['name'] == name && par['organization_id'] == org_id
|
6
|
+
end
|
7
|
+
ex.returns(index_response([{'id' => id}]))
|
8
|
+
end
|
9
|
+
|
10
|
+
def expect_lifecycle_environments_request(org_id, results)
|
11
|
+
ex = api_expects(:lifecycle_environments, :index, 'List the lifecycle environments') do |par|
|
12
|
+
par['organization_id'] == org_id
|
13
|
+
end
|
14
|
+
ex.returns(index_response(results))
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|