import certifi
import grpc
import os
import sys
from indykite_sdk.config import helper
from indykite_sdk.indykite.config.v1beta1 import config_management_api_pb2_grpc as config_pb2_grpc
[docs]class ConfigClient(object):
def __init__(self, local=False):
try:
cred = os.getenv('INDYKITE_SERVICE_ACCOUNT_CREDENTIALS')
# Load the config from File (secondary)
if not cred:
cred = os.getenv('INDYKITE_SERVICE_ACCOUNT_CREDENTIALS_FILE')
if not cred:
raise Exception("Missing INDYKITE_SERVICE_ACCOUNT_CREDENTIALS or "
"INDYKITE_SERVICE_ACCOUNT_CREDENTIALS_FILE environment variable")
credentials = os.path.join(os.path.dirname(cred), os.path.basename(cred))
credentials = helper.load_credentials(credentials)
# Load the credential json (primary)
else:
credentials = helper.load_json(cred)
service_account_token = helper.create_agent_jwt(credentials)
call_credentials = grpc.access_token_call_credentials(service_account_token.decode("utf-8"))
if local:
certificate_path = os.getenv('CAPEM')
endpoint = credentials.get("local_endpoint")
else:
certificate_path = certifi.where()
endpoint = credentials.get("endpoint")
with open(certificate_path, "rb") as cert_file:
channel_credentials = grpc.ssl_channel_credentials(cert_file.read())
composite_credentials = grpc.composite_channel_credentials(channel_credentials,
call_credentials)
self.channel = grpc.secure_channel(endpoint, composite_credentials)
self.stub = config_pb2_grpc.ConfigManagementAPIStub(channel=self.channel)
self.credentials = credentials
except Exception as exception:
tb = sys.exception().__traceback__
raise exception(...).with_traceback(tb)
# Imported methods
from .customer import read_customer_by_id, read_customer_by_name
from .service_account import read_service_account, read_service_account_by_name, create_service_account, \
update_service_account, delete_service_account
from .app_space import read_app_space_by_id, read_app_space_by_name, create_app_space, update_app_space, \
list_app_spaces, delete_app_space
from .tenant import read_tenant_by_id, read_tenant_by_name, create_tenant, update_tenant, list_tenants, delete_tenant
from .application import read_application_by_id, read_application_by_name, create_application, update_application, \
list_applications, delete_application
from .application_agent import read_application_agent_by_id, read_application_agent_by_name, \
create_application_agent, update_application_agent, \
list_application_agents, delete_application_agent
from .application_agent_credential import read_application_agent_credential, \
register_application_agent_credential_jwk, register_application_agent_credential_pem, \
delete_application_agent_credential
from .service_account_credential import read_service_account_credential, register_service_account_credential_jwk, \
register_service_account_credential_pem, delete_service_account_credential
from .config_node import create_email_service_config_node, read_config_node, \
update_email_service_config_node, delete_config_node, create_auth_flow_config_node, update_auth_flow_config_node, \
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_readid_provider_config_node, update_readid_provider_config_node, \
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, 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