Skip to content

Commit

Permalink
feat: implement knowledge and objects v1beta2
Browse files Browse the repository at this point in the history
BREAKING CHANGE: ENG-2778
  • Loading branch information
cowan-macady committed Feb 13, 2024
1 parent 59978b9 commit 920e7ad
Show file tree
Hide file tree
Showing 25 changed files with 813 additions and 623 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release-notes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ jobs:
]
release-type: python
package-name: indykite-sdk-python
token: ${{ secrets.PAT_TOKEN }}
token: ${{ secrets.INDYKITEONE_PAT }}
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ jobs:
run:
pipenv run pytest --cov . --cov-report xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
flags: unittests
files: coverage.xml
660 changes: 335 additions & 325 deletions Pipfile.lock

Large diffs are not rendered by default.

30 changes: 11 additions & 19 deletions indykite_sdk/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2762,16 +2762,15 @@ def main():

elif command == "read_identity_knowledge":
# replace with actual values
input_params = {"external_id": "CJnoXYgnPNDAiMg"}
query = "MATCH (n:Resource) WHERE n.external_id = $external_id"
input_params = {"external_id": "CJnoXYgnPNDAiMg", "type": "Organization"}
query = "MATCH (n:Resource) WHERE n.external_id = $external_id and n.type=$type"
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.identity_knowledge_read(query, input_params, returns)
api_helper.print_response(responses)

elif command == "get_identity_by_id":
id = args.id
returns = [ReturnKnowledge(variable="n")]
response = client_knowledge.get_identity_by_id(id, returns)
response = client_knowledge.get_identity_by_id(id)
if response:
api_helper.print_response(response)
else:
Expand All @@ -2780,8 +2779,7 @@ def main():
elif command == "get_identity_by_identifier":
external_id = args.external_id
type = args.type
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.get_identity_by_identifier(external_id, type, returns)
responses = client_knowledge.get_identity_by_identifier(external_id, type)
if responses:
for response in responses:
api_helper.print_response(response)
Expand All @@ -2790,8 +2788,7 @@ def main():

elif command == "get_node_by_id":
id = args.id
returns = [ReturnKnowledge(variable="n")]
response = client_knowledge.get_node_by_id(id, returns)
response = client_knowledge.get_node_by_id(id)
if response:
api_helper.print_response(response)
else:
Expand All @@ -2800,26 +2797,23 @@ def main():
elif command == "get_node_by_identifier":
external_id = args.external_id
type = args.type
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.get_node_by_identifier(external_id, type, returns)
responses = client_knowledge.get_node_by_identifier(external_id, type)
if responses:
for response in responses:
api_helper.print_response(response)
else:
print("No result")

elif command == "list_nodes":
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.list_nodes(returns)
responses = client_knowledge.list_nodes()
if responses:
for response in responses:
api_helper.print_response(response)
else:
print("No result")

elif command == "list_identities":
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.list_identities(returns)
responses = client_knowledge.list_identities()
if responses:
for response in responses:
api_helper.print_response(response)
Expand All @@ -2828,9 +2822,8 @@ def main():

elif command == "list_nodes_by_property":
# replace by own values
property = {"colour": "green"}
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.list_nodes_by_property(property, returns)
property = {"role": "Employee"}
responses = client_knowledge.list_nodes_by_property(property)
if responses:
for response in responses:
api_helper.print_response(response)
Expand All @@ -2840,8 +2833,7 @@ def main():
elif command == "list_identities_by_property":
# replace by own values
property = {"last_name": "mushu"}
returns = [ReturnKnowledge(variable="n")]
responses = client_knowledge.list_identities_by_property(property, returns)
responses = client_knowledge.list_identities_by_property(property)
if responses:
for response in responses:
api_helper.print_response(response)
Expand Down
3 changes: 1 addition & 2 deletions indykite_sdk/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ def __init__(self, token_source=None):
create_oauth2_client_config_node, update_oauth2_client_config_node, \
create_webauthn_provider_config_node, update_webauthn_provider_config_node, \
create_authorization_policy_config_node, update_authorization_policy_config_node, \
create_knowledge_graph_schema_config_node, update_knowledge_graph_schema_config_node, \
knowledge_graph_schema_config, validate_authenticator_attachment, validate_authorization_policy_status, \
validate_authenticator_attachment, validate_authorization_policy_status, \
validate_user_verification, validate_conveyance, authorization_policy_config, webauthn_provider_config, \
auth_flow_config, list_config_node_versions
from .oauth2_provider import create_oauth2_provider, read_oauth2_provider, update_oauth2_provider, \
Expand Down
84 changes: 0 additions & 84 deletions indykite_sdk/config/config_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -606,90 +606,6 @@ def validate_authorization_policy_status(self, status):
return logger.logger_error(exception)


def create_knowledge_graph_schema_config_node(self, location, name, display_name, description,
knowledge_graph_schema_config,
bookmarks=[]):
"""
create a schema and a KG DB
:param self:
:param location: appSpace GID id
:param name: String min_len: 2, max_len: 63, pattern: "^[a-z](?:[-a-z0-9]{0,61}[a-z0-9])$"
:param display_name: String
:param description: String
:param knowledge_graph_schema_config: KnowledgeGraphSchemaConfig object
:param bookmarks: []
:return: CreateConfigNodeResponse
"""
sys.excepthook = logger.handle_excepthook
try:
response = self.stub.CreateConfigNode(
pb2.CreateConfigNodeRequest(
location=location,
name=name,
display_name=wrappers.StringValue(value=display_name),
description=wrappers.StringValue(value=description),
knowledge_graph_schema_config=knowledge_graph_schema_config,
bookmarks=bookmarks
)
)
except Exception as exception:
return logger.logger_error(exception)

if not response:
return None
return CreateConfigNode.deserialize(response)


def update_knowledge_graph_schema_config_node(self, config_node_id, etag, display_name, description,
knowledge_graph_schema_config,
bookmarks=[]):
"""
Update a knowledge graph config node
:param self:
:param config_node_id: config node gid ID
:param etag: string
:param display_name: string
:param description: string
:param knowledge_graph_schema_config: KnowledgeGraphSchemaConfig object
:param bookmarks: []
:return: UpdateConfigNodeResponse
"""
sys.excepthook = logger.handle_excepthook
try:
response = self.stub.UpdateConfigNode(
pb2.UpdateConfigNodeRequest(
id=config_node_id,
etag=wrappers.StringValue(value=etag),
display_name=wrappers.StringValue(value=display_name),
description=wrappers.StringValue(value=description),
knowledge_graph_schema_config= knowledge_graph_schema_config,
bookmarks=bookmarks
)
)
except Exception as exception:
return logger.logger_error(exception)

if not response:
return None
return UpdateConfigNode.deserialize(response)


def knowledge_graph_schema_config(self, schema):
"""
create KnowledgeGraphSchemaConfig object
:param schema: string (stringified json)
:return: KnowledgeGraphSchemaConfig object
"""
sys.excepthook = logger.handle_excepthook
try:
knowledge_graph_schema = model_pb2.KnowledgeGraphSchemaConfig(
schema=str(schema)
)
return knowledge_graph_schema
except Exception as exception:
return logger.logger_error(exception)


def list_config_node_versions(self, id_config_node):
"""
list config nodes versions of the specified config node
Expand Down
30 changes: 15 additions & 15 deletions indykite_sdk/indykite/auditsink/v1beta1/config_pb2.py

Large diffs are not rendered by default.

54 changes: 27 additions & 27 deletions indykite_sdk/indykite/config/v1beta1/model_pb2.py

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions indykite_sdk/indykite/ingest/v1beta3/ingest_api_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

102 changes: 102 additions & 0 deletions indykite_sdk/indykite/ingest/v1beta3/ingest_api_pb2_grpc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from indykite_sdk.indykite.ingest.v1beta3 import ingest_api_pb2 as indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2


class IngestAPIStub(object):
"""IngestAPI represents the service interface for data ingestion.
"""

def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.StreamRecords = channel.stream_stream(
'/indykite.ingest.v1beta3.IngestAPI/StreamRecords',
request_serializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsRequest.SerializeToString,
response_deserializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsResponse.FromString,
)
self.IngestRecord = channel.unary_unary(
'/indykite.ingest.v1beta3.IngestAPI/IngestRecord',
request_serializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordRequest.SerializeToString,
response_deserializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordResponse.FromString,
)


class IngestAPIServicer(object):
"""IngestAPI represents the service interface for data ingestion.
"""

def StreamRecords(self, request_iterator, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')

def IngestRecord(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')


def add_IngestAPIServicer_to_server(servicer, server):
rpc_method_handlers = {
'StreamRecords': grpc.stream_stream_rpc_method_handler(
servicer.StreamRecords,
request_deserializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsRequest.FromString,
response_serializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsResponse.SerializeToString,
),
'IngestRecord': grpc.unary_unary_rpc_method_handler(
servicer.IngestRecord,
request_deserializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordRequest.FromString,
response_serializer=indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'indykite.ingest.v1beta3.IngestAPI', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))


# This class is part of an EXPERIMENTAL API.
class IngestAPI(object):
"""IngestAPI represents the service interface for data ingestion.
"""

@staticmethod
def StreamRecords(request_iterator,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.stream_stream(request_iterator, target, '/indykite.ingest.v1beta3.IngestAPI/StreamRecords',
indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsRequest.SerializeToString,
indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.StreamRecordsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

@staticmethod
def IngestRecord(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/indykite.ingest.v1beta3.IngestAPI/IngestRecord',
indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordRequest.SerializeToString,
indykite_dot_ingest_dot_v1beta3_dot_ingest__api__pb2.IngestRecordResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

0 comments on commit 920e7ad

Please sign in to comment.