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

Constants included from Inventory::V1beta2

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

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: RequestPagination.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&.pagination&.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_typeObject



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_typeObject



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