Module: Kessel::RBAC::V2
- Includes:
- Inventory::V1beta2
- Defined in:
- lib/kessel/rbac/v2.rb,
lib/kessel/rbac/v2_http.rb,
lib/kessel/rbac/v2_helpers.rb
Defined Under Namespace
Classes: Workspace
Constant Summary
collapse
- WORKSPACE_ENDPOINT =
'/api/rbac/v2/workspaces/'
- DEFAULT_PAGE_LIMIT =
1000
Inventory::V1beta2::Allowed, Inventory::V1beta2::CheckBulkRequest, Inventory::V1beta2::CheckBulkRequestItem, Inventory::V1beta2::CheckBulkResponse, Inventory::V1beta2::CheckBulkResponseItem, Inventory::V1beta2::CheckBulkResponsePair, Inventory::V1beta2::CheckForUpdateRequest, Inventory::V1beta2::CheckForUpdateResponse, Inventory::V1beta2::CheckRequest, Inventory::V1beta2::CheckResponse, Inventory::V1beta2::Consistency, Inventory::V1beta2::ConsistencyToken, Inventory::V1beta2::DeleteResourceRequest, Inventory::V1beta2::DeleteResourceResponse, Inventory::V1beta2::ReportResourceRequest, Inventory::V1beta2::ReportResourceResponse, Inventory::V1beta2::ReporterReference, Inventory::V1beta2::RepresentationMetadata, Inventory::V1beta2::RepresentationType, Inventory::V1beta2::RequestPagination, Inventory::V1beta2::ResourceReference, Inventory::V1beta2::ResourceRepresentations, Inventory::V1beta2::ResponsePagination, Inventory::V1beta2::StreamedListObjectsRequest, Inventory::V1beta2::StreamedListObjectsResponse, Inventory::V1beta2::SubjectReference, Inventory::V1beta2::WriteVisibility
Instance Method Summary
collapse
-
#fetch_default_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil) ⇒ Object
-
#fetch_root_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil) ⇒ Object
-
#list_workspaces(inventory, subject, relation, continuation_token = nil) ⇒ Object
-
#principal_resource(id, domain) ⇒ Object
-
#principal_subject(id, domain) ⇒ Object
-
#role_resource(resource_id) ⇒ Object
-
#role_type ⇒ Object
-
#subject(resource_ref, relation = nil) ⇒ Object
-
#workspace_resource(resource_id) ⇒ Object
-
#workspace_type ⇒ Object
Instance Method Details
#fetch_default_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil) ⇒ Object
17
18
19
|
# File 'lib/kessel/rbac/v2.rb', line 17
def fetch_default_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil)
fetch_workspace(rbac_base_endpoint, org_id, 'default', auth: auth, http_client: http_client)
end
|
#fetch_root_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil) ⇒ Object
21
22
23
|
# File 'lib/kessel/rbac/v2.rb', line 21
def fetch_root_workspace(rbac_base_endpoint, org_id, auth: nil, http_client: nil)
fetch_workspace(rbac_base_endpoint, org_id, 'root', auth: auth, http_client: http_client)
end
|
#list_workspaces(inventory, subject, relation, continuation_token = nil) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/kessel/rbac/v2.rb', line 25
def list_workspaces(inventory, subject, relation, continuation_token = nil)
Enumerator.new do |yielder|
loop do
request = StreamedListObjectsRequest.new(
object_type: workspace_type,
relation: relation,
subject: subject,
pagination: .new(
limit: DEFAULT_PAGE_LIMIT,
continuation_token: continuation_token
)
)
has_responses = false
streamed_response = inventory.streamed_list_objects(request)
streamed_response.each do |response|
has_responses = true
yielder << response
continuation_token = response&.&.continuation_token
end
break if !has_responses || !continuation_token
end
end
end
|
#principal_resource(id, domain) ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 24
def principal_resource(id, domain)
ResourceReference.new(
resource_type: 'principal',
resource_id: "#{domain}/#{id}",
reporter: ReporterReference.new(
type: 'rbac'
)
)
end
|
#principal_subject(id, domain) ⇒ Object
54
55
56
57
58
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 54
def principal_subject(id, domain)
SubjectReference.new(
resource: principal_resource(id, domain)
)
end
|
#role_resource(resource_id) ⇒ Object
34
35
36
37
38
39
40
41
42
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 34
def role_resource(resource_id)
ResourceReference.new(
resource_type: 'role',
resource_id: resource_id,
reporter: ReporterReference.new(
type: 'rbac'
)
)
end
|
#role_type ⇒ Object
17
18
19
20
21
22
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 17
def role_type
RepresentationType.new(
resource_type: 'role',
reporter_type: 'rbac'
)
end
|
#subject(resource_ref, relation = nil) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 60
def subject(resource_ref, relation = nil)
SubjectReference.new(
resource: resource_ref,
relation: relation
)
end
|
#workspace_resource(resource_id) ⇒ Object
44
45
46
47
48
49
50
51
52
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 44
def workspace_resource(resource_id)
ResourceReference.new(
resource_type: 'workspace',
resource_id: resource_id,
reporter: ReporterReference.new(
type: 'rbac'
)
)
end
|
#workspace_type ⇒ Object
10
11
12
13
14
15
|
# File 'lib/kessel/rbac/v2_helpers.rb', line 10
def workspace_type
RepresentationType.new(
resource_type: 'workspace',
reporter_type: 'rbac'
)
end
|