Skip to content

Commit

Permalink
feat: add authz config node versioning
Browse files Browse the repository at this point in the history
Closing ENG-1751
  • Loading branch information
cowan-macady committed Sep 14, 2023
1 parent 850a833 commit 7565a8a
Show file tree
Hide file tree
Showing 13 changed files with 757 additions and 362 deletions.
16 changes: 15 additions & 1 deletion indykite_sdk/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,10 @@ def main():
delete_config_node_parser.add_argument("config_node_id", help="Config node id (gid)")
delete_config_node_parser.add_argument("etag", help="Etag")

# list_config_node_versions
list_config_node_versions_parser = subparsers.add_parser("list_config_node_versions")
list_config_node_versions_parser.add_argument("config_node_id", help="Config node id (gid)")

# create_auth_flow_config_node
create_auth_flow_config_node_parser = subparsers.add_parser("create_auth_flow_config_node")
create_auth_flow_config_node_parser.add_argument("app_space_id", help="AppSpace (gid)")
Expand Down Expand Up @@ -2007,7 +2011,8 @@ def main():
elif command == "read_config_node":
config_node_id = args.config_node_id
bookmark = [] # or value returned by last write operation
config_node = client_config.read_config_node(config_node_id, bookmark)
version = 0
config_node = client_config.read_config_node(config_node_id, bookmark, version)
if config_node:
api_helper.print_response(config_node)
else:
Expand Down Expand Up @@ -2075,6 +2080,15 @@ def main():
else:
print("Invalid delete config node response")

elif command == "list_config_node_versions":
config_node_id = args.config_node_id
list_config_nodes = client_config.list_config_node_versions(config_node_id)
if list_config_nodes:
api_helper.print_response(list_config_nodes)
else:
print("Invalid list_config_nodes response")
return list_config_nodes

elif command == "create_auth_flow_config_node":
location = args.app_space_id
name = args.name
Expand Down
2 changes: 1 addition & 1 deletion indykite_sdk/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def __init__(self, token_source=None):
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
auth_flow_config, list_config_node_versions
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, \
Expand Down
29 changes: 27 additions & 2 deletions indykite_sdk/config/config_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,22 @@ def create_email_service_config_node(self,
return CreateConfigNode.deserialize(response)


def read_config_node(self, config_node_id, bookmarks=[]):
def read_config_node(self, config_node_id, bookmarks=[], version=0):
"""
read a specific config node
:param self:
:param config_node_id: string gid id
:param bookmarks: list of strings with pattern: ^[a-zA-Z0-9_-]{40,}$
:param version: int
:return: deserialized ConfigNode instance
"""
sys.excepthook = logger.handle_excepthook
try:
response = self.stub.ReadConfigNode(
pb2.ReadConfigNodeRequest(
id=str(config_node_id), bookmarks=bookmarks
id=str(config_node_id),
bookmarks=bookmarks,
version=version
)
)
except Exception as exception:
Expand Down Expand Up @@ -796,3 +799,25 @@ def knowledge_graph_schema_config(self, 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
:param self:
:param id_config_node: string gid id
:return: list of deserialized ConfigNode instances
"""
sys.excepthook = logger.handle_excepthook
try:
list_config_nodes = self.stub.ListConfigNodeVersions(
pb2.ListConfigNodeVersionsRequest(
id=id_config_node
)
)
if not list_config_nodes:
return None
res = [ConfigNode.deserialize(config_node) for config_node in list_config_nodes.config_nodes]
return res
except Exception as exception:
return logger.logger_error(exception)
488 changes: 271 additions & 217 deletions indykite_sdk/indykite/config/v1beta1/config_management_api_pb2.py

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,11 @@ def __init__(self, channel):
request_serializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.DeleteConfigNodeRequest.SerializeToString,
response_deserializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.DeleteConfigNodeResponse.FromString,
)
self.ListConfigNodeVersions = channel.unary_unary(
'/indykite.config.v1beta1.ConfigManagementAPI/ListConfigNodeVersions',
request_serializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsRequest.SerializeToString,
response_deserializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsResponse.FromString,
)
self.CreateOAuth2Provider = channel.unary_unary(
'/indykite.config.v1beta1.ConfigManagementAPI/CreateOAuth2Provider',
request_serializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.CreateOAuth2ProviderRequest.SerializeToString,
Expand Down Expand Up @@ -584,6 +589,13 @@ def DeleteConfigNode(self, request, context):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')

def ListConfigNodeVersions(self, request, context):
"""ListConfigNodeVersions list previous versions of a given ConfigNode.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')

def CreateOAuth2Provider(self, request, context):
"""CreateOAuth2Provider under given Application Space.
"""
Expand Down Expand Up @@ -876,6 +888,11 @@ def add_ConfigManagementAPIServicer_to_server(servicer, server):
request_deserializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.DeleteConfigNodeRequest.FromString,
response_serializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.DeleteConfigNodeResponse.SerializeToString,
),
'ListConfigNodeVersions': grpc.unary_unary_rpc_method_handler(
servicer.ListConfigNodeVersions,
request_deserializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsRequest.FromString,
response_serializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsResponse.SerializeToString,
),
'CreateOAuth2Provider': grpc.unary_unary_rpc_method_handler(
servicer.CreateOAuth2Provider,
request_deserializer=indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.CreateOAuth2ProviderRequest.FromString,
Expand Down Expand Up @@ -1644,6 +1661,23 @@ def DeleteConfigNode(request,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

@staticmethod
def ListConfigNodeVersions(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.config.v1beta1.ConfigManagementAPI/ListConfigNodeVersions',
indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsRequest.SerializeToString,
indykite_dot_config_dot_v1beta1_dot_config__management__api__pb2.ListConfigNodeVersionsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

@staticmethod
def CreateOAuth2Provider(request,
target,
Expand Down
254 changes: 142 additions & 112 deletions indykite_sdk/indykite/config/v1beta1/model_pb2.py

Large diffs are not rendered by default.

0 comments on commit 7565a8a

Please sign in to comment.