Class: Aserto::Directory::V2::Client

Inherits:
Object
  • Object
show all
Includes:
Requests
Defined in:
lib/aserto/directory/v2/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(url: "directory.prod.aserto.com:8443", api_key: nil, tenant_id: nil, cert_path: nil) ⇒ Aserto::Directory::V2::Client

Creates a new Directory V2 Client

Parameters:

  • url (String) (defaults to: "directory.prod.aserto.com:8443")

    the gRpc url of the directory server

  • api_key (String) (defaults to: nil)

    the api key of the directory server(for hosted directory)

  • tenant_id (String) (defaults to: nil)

    the tenant id of the directory server(for hosted directory)

  • cert_path (String) (defaults to: nil)

    the path to the certificates folder



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/aserto/directory/v2/client.rb', line 21

def initialize(url: "directory.prod.aserto.com:8443", api_key: nil, tenant_id: nil, cert_path: nil)
  @reader_client = ::Aserto::Directory::Reader::V2::Reader::Stub.new(
    url,
    load_creds(cert_path),
    interceptors: [Interceptors::Headers.new(api_key, tenant_id)]
  )
  @writer_client = ::Aserto::Directory::Writer::V2::Writer::Stub.new(
    url,
    load_creds(cert_path),
    interceptors: [Interceptors::Headers.new(api_key, tenant_id)]
  )
end

Instance Method Details

#check_permission(subject:, permission:, object:, trace: false) ⇒ Boolean

Check permissions

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • permission (String)

    permission name to be checked

  • object (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • trace (Boolean) (defaults to: false)

    whether to enable tracing

Returns:

  • (Boolean)


42
43
44
# File 'lib/aserto/directory/v2/client.rb', line 42

def check_permission(subject:, permission:, object:, trace: false)
  reader_client.check_permission(check_permission_request(subject, permission, object, trace))
end

#check_relation(subject:, relation:, object:, trace: false) ⇒ Boolean

Check relation

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • relation (::Aserto::Directory::Common::V2::RelationTypeIdentifier)

    relation name to be checked

  • object (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • trace (Boolean) (defaults to: false)

    whether to enable tracing

Returns:

  • (Boolean)


54
55
56
# File 'lib/aserto/directory/v2/client.rb', line 54

def check_relation(subject:, relation:, object:, trace: false)
  reader_client.check_relation(check_relation_request(subject, relation, object, trace))
end

#delete_relation(subject:, relation:, object:) ⇒ Object

Delete a relation

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • relation (::Aserto::Directory::Common::V2::RelationTypeIdentifier)
  • object (::Aserto::Directory::Common::V2::ObjectIdentifier)

Returns:

  • nil



127
128
129
# File 'lib/aserto/directory/v2/client.rb', line 127

def delete_relation(subject:, relation:, object:)
  writer_client.delete_relation(delete_relation_request(subject, relation, object))
end

#object(type:, key:) ⇒ ::Aserto::Directory::Common::V2::Object

Get an object by type and key

Parameters:

  • type (String)

    the type of object

  • key (String)

    the key of the object

Returns:

  • (::Aserto::Directory::Common::V2::Object)


64
65
66
# File 'lib/aserto/directory/v2/client.rb', line 64

def object(type:, key:)
  reader_client.get_object(object_request(key, type)).result
end

#objects(type:, page: nil) ⇒ Array<::Aserto::Directory::Common::V2::Object>

Get a list of objects by type

Parameters:

  • type (String)

    the type of objects

  • page (::Aserto::Directory::Common::V2::PaginationRequest) (defaults to: nil)

Returns:

  • (Array<::Aserto::Directory::Common::V2::Object>)


83
84
85
# File 'lib/aserto/directory/v2/client.rb', line 83

def objects(type:, page: nil)
  reader_client.get_objects(objects_request(type, page)).results
end

#relation(subject: nil, relation: nil, object: nil) ⇒ ::Aserto::Directory::Common::V2::Relation

Get a relation

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier) (defaults to: nil)
  • relation (::Aserto::Directory::Common::V2::RelationTypeIdentifier) (defaults to: nil)
  • object (::Aserto::Directory::Common::V2::ObjectIdentifier) (defaults to: nil)

Returns:

  • (::Aserto::Directory::Common::V2::Relation)


94
95
96
# File 'lib/aserto/directory/v2/client.rb', line 94

def relation(subject: nil, relation: nil, object: nil)
  reader_client.get_relation(relation_request(subject, relation, object)).results
end

#relations(subject: nil, relation: nil, object: nil, page: nil) ⇒ Array<::Aserto::Directory::Common::V2::Relation>

Get a list of relations

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier) (defaults to: nil)
  • relation (::Aserto::Directory::Common::V2::RelationTypeIdentifier) (defaults to: nil)
  • object (::Aserto::Directory::Common::V2::ObjectIdentifier) (defaults to: nil)

Returns:

  • (Array<::Aserto::Directory::Common::V2::Relation>)


105
106
107
# File 'lib/aserto/directory/v2/client.rb', line 105

def relations(subject: nil, relation: nil, object: nil, page: nil)
  reader_client.get_relations(relations_request(subject, relation, object, page)).results
end

#set_object(object:) ⇒ ::Aserto::Directory::Common::V2::Object

Set an object

Parameters:

  • object (::Aserto::Directory::Common::V2::Object)

Returns:

  • (::Aserto::Directory::Common::V2::Object)

    the created/updated object



73
74
75
# File 'lib/aserto/directory/v2/client.rb', line 73

def set_object(object:)
  writer_client.set_object(new_object_request(object)).result
end

#set_relation(subject:, relation:, object:, hash: nil) ⇒ ::Aserto::Directory::Common::V2::Relation

Set a relation

Parameters:

  • subject (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • relation (String)

    name of the relation

  • object (::Aserto::Directory::Common::V2::ObjectIdentifier)
  • hash (String) (defaults to: nil)

    hash of the relation(required for updating a relation)

Returns:

  • (::Aserto::Directory::Common::V2::Relation)

    the created/updated relation



116
117
118
# File 'lib/aserto/directory/v2/client.rb', line 116

def set_relation(subject:, relation:, object:, hash: nil)
  writer_client.set_relation(new_relation_request(subject, relation, object, hash)).result
end