Skip to content

Commit

Permalink
feat: add get_schema and refactor some config nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
cowan-macady committed Jun 21, 2023
1 parent 5a5a541 commit 20bbf5b
Show file tree
Hide file tree
Showing 9 changed files with 235 additions and 85 deletions.
2 changes: 2 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ omit =
indykite_sdk/validate/*
indykite_sdk/identity/helper.py
indykite_sdk/config/helper.py
indykite_sdk/config/get_schema.py
indykite_sdk/model/unique_name_identifier.py
indykite_sdk/model/email_attachment.py
indykite_sdk/model/oauth2_application.py
indykite_sdk/model/oauth2_application_config.py
indykite_sdk/model/oauth2_provider.py
indykite_sdk/model/oauth2_provider_config.py
indykite_sdk/model/import_digital_twin.py
indykite_sdk/model/get_schema.py
indykite_sdk/utils/hash_methods.py
indykite_sdk/utils/message_to_value.py
indykite_sdk/utils/logger.py
Expand Down
2 changes: 2 additions & 0 deletions codecov.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ ignore:
- "indykite_sdk/validate"
- "indykite_sdk/identity/helper.py"
- "indykite_sdk/config/helper.py"
- "indykite_sdk/config/get_schema.py"
- "indykite_sdk/model/unique_name_identifier.py"
- "indykite_sdk/model/email_attachment.py"
- "indykite_sdk/model/oauth2_application.py"
- "indykite_sdk/model/oauth2_application_config.py"
- "indykite_sdk/model/oauth2_provider.py"
- "indykite_sdk/model/oauth2_provider_config.py"
- "indykite_sdk/model/import_digital_twin.py"
- "indykite_sdk/model/get_schema.py"
- "indykite_sdk/utils/hash_methods.py"
- "indykite_sdk/utils/message_to_value.py"
- "indykite_sdk/utils/logger.py"
Expand Down
106 changes: 49 additions & 57 deletions indykite_sdk/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -650,14 +650,17 @@ def main():
get_refreshable_token_source = subparsers.add_parser("get_refreshable_token_source")

# ingest
ingest_record_digital_twin = subparsers.add_parser("ingest_record_digital_twin")
ingest_record_resource = subparsers.add_parser("ingest_record_resource")
ingest_record_relation = subparsers.add_parser("ingest_record_relation")
delete_record_relation_property = subparsers.add_parser("delete_record_relation_property")
delete_record_node_property = subparsers.add_parser("delete_record_node_property")
delete_record_relation = subparsers.add_parser("delete_record_relation")
delete_record_node = subparsers.add_parser("delete_record_node")
stream_records = subparsers.add_parser("stream_records")
ingest_record_digital_twin_parser = subparsers.add_parser("ingest_record_digital_twin")
ingest_record_resource_parser = subparsers.add_parser("ingest_record_resource")
ingest_record_relation_parser = subparsers.add_parser("ingest_record_relation")
delete_record_relation_property_parser= subparsers.add_parser("delete_record_relation_property")
delete_record_node_property_parser = subparsers.add_parser("delete_record_node_property")
delete_record_relation_parser = subparsers.add_parser("delete_record_relation")
delete_record_node_parser = subparsers.add_parser("delete_record_node")
stream_records_parser = subparsers.add_parser("stream_records")

# get_schema_helpers
get_schema_helpers_parser = subparsers.add_parser("get_schema_helpers")

args = parser.parse_args()
local = args.local
Expand Down Expand Up @@ -1375,9 +1378,9 @@ def main():
default_from_address_name="Test Config"

sendgrid = SendGridProviderConfig(
api_key="263343b5-983e-4d73-b666-069a98f1ef55",
api_key=os.getenv('SENDGRID_KEY'),
sandbox_mode=True,
ip_pool_name=wrappers.StringValue(value="100.45.21.65.28"),
ip_pool_name=wrappers.StringValue(value=os.getenv('SENDGRID_IP')),
host=wrappers.StringValue(value="https://api.sendgrid.com")
)

Expand Down Expand Up @@ -1427,11 +1430,11 @@ def main():
user_dict = json.loads(file_data)
user_dict = json.dumps(user_dict, indent=4, separators=(',', ': ')).encode('utf-8')

#only bare JSON or YAML source_format is support as input
auth_flow_config = AuthFlowConfig(
# only bare JSON or YAML source_format is support as input
auth_flow_config = client_config.auth_flow_config(
source_format="FORMAT_BARE_JSON",
source=bytes(user_dict),
default=wrappers.BoolValue(value=False)
source=user_dict,
default=False
)

create_auth_flow_config_node_response = client_config.create_auth_flow_config_node(location, name, display_name,
Expand All @@ -1454,10 +1457,11 @@ def main():
user_dict = json.loads(file_data)
user_dict = json.dumps(user_dict, indent=4, separators=(',', ': ')).encode('utf-8')

auth_flow_config = AuthFlowConfig(
# only bare JSON or YAML source_format is support as input
auth_flow_config = client_config.auth_flow_config(
source_format="FORMAT_BARE_JSON",
source=bytes(user_dict),
default=wrappers.BoolValue(value=False)
source=user_dict,
default=False
)

update_auth_flow_config_node_response = client_config.update_auth_flow_config_node(config_node_id, etag,display_name,
Expand Down Expand Up @@ -1522,8 +1526,8 @@ def main():
display_name = args.display_name
description = args.description

webauthn_provider_config = WebAuthnProviderConfig(
relying_parties={"http://localhost":"localhost"},
webauthn_provider_config = client_config.webauthn_provider_config(
relying_parties={"http://localhost": "localhost"},
attestation_preference="CONVEYANCE_PREFERENCE_NONE",
authenticator_attachment="AUTHENTICATOR_ATTACHMENT_DEFAULT",
require_resident_key=False,
Expand All @@ -1546,8 +1550,8 @@ def main():
display_name = args.display_name
description = args.description

webauthn_provider_config = WebAuthnProviderConfig(
relying_parties={"http://localhost":"localhost"},
webauthn_provider_config = client_config.webauthn_provider_config(
relying_parties={"http://localhost": "localhost"},
attestation_preference="CONVEYANCE_PREFERENCE_INDIRECT",
authenticator_attachment="AUTHENTICATOR_ATTACHMENT_DEFAULT",
require_resident_key=False,
Expand Down Expand Up @@ -1575,22 +1579,17 @@ def main():
name = args.name
display_name = args.display_name
description = args.description
submitter_secret = "8d300cd5-a417-478b-b5cb-3d6d7d1fa76a"
manager_secret = "55203ecc-7ed5-4d9b-8762-27146c16eab6"
submitter_password = "123456"
host_address = "<https://saas-preprod.readid.com>"
readid_property = client_config.readid_property("c.secondaryIdentifier", True)
property_map = {"givenname":readid_property}
unique_property_name = "propertyname"

readid_provider_config = client_config.readid_provider_config(
submitter_secret,
manager_secret,
submitter_password,
host_address,
property_map,
unique_property_name
submitter_secret="8d300cd5-a417-478b-b5cb-3d6d7d1fa76a",
manager_secret="55203ecc-7ed5-4d9b-8762-27146c16eab6",
submitter_password="123456",
host_address="<https://saas-preprod.readid.com>",
property_map={"givenname": readid_property},
unique_property_name="propertyname"
)

create_readid_provider_config_node_response = client_config.create_readid_provider_config_node(
location, name, display_name, description, readid_provider_config, [])
if create_readid_provider_config_node_response:
Expand All @@ -1604,21 +1603,15 @@ def main():
etag = args.etag
display_name = args.display_name
description = args.description
submitter_secret = "8d300cd5-a417-478b-b5cb-3d6d7d1fa76a"
manager_secret = "55203ecc-7ed5-4d9b-8762-27146c16eab6"
submitter_password = "12345689"
host_address = "<https://saas-preprod.readid.com>"
readid_property = client_config.readid_property("c.secondaryIdentifier", True)
property_map = {"givenname":readid_property}
unique_property_name = "propertyname2"

readid_provider_config = client_config.readid_provider_config(
submitter_secret,
manager_secret,
submitter_password,
host_address,
property_map,
unique_property_name
submitter_secret="8d300cd5-a417-478b-b5cb-3d6d7d1fa76a",
manager_secret="55203ecc-7ed5-4d9b-8762-27146c16eab6",
submitter_password="12345689",
host_address="<https://saas-preprod.readid.com>",
property_map={"givenname":readid_property},
unique_property_name="propertyname2"
)

update_readid_provider_config_node_response = client_config.update_readid_provider_config_node(
Expand All @@ -1645,11 +1638,7 @@ def main():
file_data = f.read()
policy_dict = json.loads(file_data)
policy_dict = json.dumps(policy_dict)
policy_config = AuthorizationPolicyConfig(
policy=str(policy_dict),
status="STATUS_ACTIVE",
tags=[]
)
policy_config = client_config.authorization_policy_config(str(policy_dict), "STATUS_ACTIVE", [])

create_authorization_policy_config_node_response = client_config.create_authorization_policy_config_node(
location,
Expand All @@ -1676,12 +1665,8 @@ def main():
file_data = f.read()
policy_dict = json.loads(file_data)
policy_dict = json.dumps(policy_dict)
policy_config = client_config.authorization_policy_config(str(policy_dict), "STATUS_ACTIVE", [])

policy_config = AuthorizationPolicyConfig(
policy=str(policy_dict),
status="STATUS_ACTIVE",
tags=[]
)
update_authorization_policy_config_node_response = client_config.update_authorization_policy_config_node(
config_node_id,
etag,
Expand All @@ -1703,9 +1688,8 @@ def main():
description = args.description
with open("utils/sdk_schema.txt", "r") as file:
file_data = "\n".join(file.read().split("\n"))
# print(file_data)
schema_config = client_config.knowledge_graph_schema_config(file_data)
# print(schema_config)

create_knowledge_graph_schema_config_node_response = client_config.create_knowledge_graph_schema_config_node(
location,
name,
Expand Down Expand Up @@ -2498,6 +2482,14 @@ def main():
print("Invalid ingestion")
return response

elif command == "get_schema_helpers":
get_schema_helpers = client_config.get_schema_helpers()
if get_schema_helpers:
print_response(get_schema_helpers)
else:
print("Invalid get schema helpers")
return get_schema_helpers


def print_verify_info(digital_twin_info): # pragma: no cover
print("Digital twin info")
Expand Down
4 changes: 3 additions & 1 deletion indykite_sdk/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,13 @@ def __init__(self, local=False):
create_readid_provider_config_node, update_readid_provider_config_node, readid_provider_config, \
readid_property, create_knowledge_graph_schema_config_node, update_knowledge_graph_schema_config_node, \
knowledge_graph_schema_config, validate_authenticator_attachment, validate_authorization_policy_status, \
validate_user_verification, validate_conveyance
validate_user_verification, validate_conveyance, authorization_policy_config, webauthn_provider_config, \
auth_flow_config
from .oauth2_provider import create_oauth2_provider, read_oauth2_provider, update_oauth2_provider, \
delete_oauth2_provider
from .oauth2_application import create_oauth2_application, read_oauth2_application, update_oauth2_application, \
delete_oauth2_application
from .create_application_with_agent_credentials import create_application_with_agent_credentials
from .get_schema import get_schema_helpers


79 changes: 79 additions & 0 deletions indykite_sdk/config/config_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,29 @@ def update_auth_flow_config_node(self, config_node_id, etag, display_name, descr
return UpdateConfigNode.deserialize(response)


def auth_flow_config(self, source_format,
source,
default):
"""
create AuthFlowConfig
:param self:
:param source_format: AuthFlowConfig.Format enum value
:param source: bytes of json string
:param default: google.protobuf.BoolValue
:return:
"""
sys.excepthook = logger.handle_excepthook
try:
auth_flow_config = model_pb2.AuthFlowConfig(
source_format=source_format,
source=bytes(source),
default=wrappers.BoolValue(value=default)
)
return auth_flow_config
except Exception as exception:
return logger.logger_error(exception)


def create_oauth2_client_config_node(self, location, name, display_name, description, oauth2_client_config,
bookmarks=[]):
sys.excepthook = logger.handle_excepthook
Expand Down Expand Up @@ -246,6 +269,41 @@ def update_webauthn_provider_config_node(self, config_node_id, etag, display_nam
return UpdateConfigNode.deserialize(response)


def webauthn_provider_config(self, relying_parties,
attestation_preference,
authenticator_attachment,
require_resident_key,
user_verification,
registration_timeout,
authentication_timeout):
"""
create WebAuthnProviderConfig
:param self:
:param relying_parties: map<string, string>
:param attestation_preference: ConveyancePreference enum value
:param authenticator_attachment: AuthenticatorAttachment enum value
:param require_resident_key: bool
:param user_verification: UserVerificationRequirement enum value
:param registration_timeout: google.protobuf.Duration (google.protobuf.duration_pb2.Duration)
:param authentication_timeout: google.protobuf.Duration (google.protobuf.duration_pb2.Duration)
:return: WebAuthnProviderConfig object
"""
sys.excepthook = logger.handle_excepthook
try:
webauthn_provider = model_pb2.WebAuthnProviderConfig(
relying_parties=relying_parties,
attestation_preference=attestation_preference,
authenticator_attachment=authenticator_attachment,
require_resident_key=bool(require_resident_key),
user_verification=user_verification,
registration_timeout=registration_timeout,
authentication_timeout=authentication_timeout
)
return webauthn_provider
except Exception as exception:
return logger.logger_error(exception)


def create_authorization_policy_config_node(self, location, name, display_name, description,
authorization_policy_config, bookmarks=[]):
sys.excepthook = logger.handle_excepthook
Expand Down Expand Up @@ -299,6 +357,27 @@ def update_authorization_policy_config_node(self, config_node_id, etag, display_
return UpdateConfigNode.deserialize(response)


def authorization_policy_config(self, policy, status, tags=[]):
"""
create AuthorizationPolicyConfig
:param self:
:param policy: JSON string format
:param status: AuthorizationPolicyConfig.Status
:param tags: list of strings
:return: AuthorizationPolicyConfig object
"""
sys.excepthook = logger.handle_excepthook
try:
policy_config = model_pb2.AuthorizationPolicyConfig(
policy=str(policy),
status=status,
tags=tags
)
return policy_config
except Exception as exception:
return logger.logger_error(exception)


def validate_conveyance(self, conveyance):
try:
conveyances = [c.value for c in ConveyancePreference]
Expand Down
22 changes: 22 additions & 0 deletions indykite_sdk/config/get_schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from indykite_sdk.indykite.config.v1beta1 import config_management_api_pb2 as pb2
from indykite_sdk.model.get_schema import GetSchemaHelpers
import sys
import indykite_sdk.utils.logger as logger


def get_schema_helpers(self):
"""
get knowledge graph schema helpers
:param self:
:return: GetSchemaHelpersResponse
"""
sys.excepthook = logger.handle_excepthook
try:
response = self.stub.GetSchemaHelpers(
pb2.GetSchemaHelpersRequest()
)
if not response:
return None
return GetSchemaHelpers.deserialize(response)
except Exception as exception:
return logger.logger_error(exception)

0 comments on commit 20bbf5b

Please sign in to comment.