Skip to content

Commit

Permalink
feat: add config methods 2798
Browse files Browse the repository at this point in the history
  • Loading branch information
gg authored and oceane-sailorin committed Oct 25, 2022
1 parent 92b6c14 commit 3648f19
Show file tree
Hide file tree
Showing 16 changed files with 1,557 additions and 4 deletions.
3 changes: 2 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ omit =
jarvis_sdk/cmd/helper.py
jarvis_sdk/cmdconfig/helper.py
jarvis_sdk/model/unique_name_identifier.py

tests/*

[report]
Expand All @@ -18,3 +17,5 @@ exclude_lines =
def deserialize
def __init__
def __str__

show_missing = true
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ concurrency:

env:
INDYKITE_APPLICATION_CREDENTIALS: ${{ secrets.JARVIS_CREDENTIALS }}
INDYKITE_SERVICE_ACCOUNT_CREDENTIALS: ${{secrets.JARVIS_ACCOUNT_CREDENTIALS }}
INDYKITE_SERVICE_ACCOUNT_CREDENTIALS: ${{ secrets.JARVIS_ACCOUNT_CREDENTIALS }}

jobs:
tests:
Expand Down
4 changes: 2 additions & 2 deletions buf.gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ version: v1
managed:
enabled: true
plugins:
- remote: buf.build/protocolbuffers/plugins/python:v3.19.3-1
- remote: buf.build/protocolbuffers/plugins/python:v21.7.0-1
out: jarvis_sdk
- remote: buf.build/grpc/plugins/python:v1.44.0-1
- remote: buf.build/grpc/plugins/python:v1.49.1-1
out: jarvis_sdk
# https://buf.build/protocolbuffers/plugins/python
# https://buf.build/grpc/plugins/python
202 changes: 202 additions & 0 deletions jarvis_sdk/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,72 @@ def main():
delete_tenant_parser.add_argument("tenant_id", help="Tenant Id")
delete_tenant_parser.add_argument("etag", nargs='?', help="Optional Etag")

# application_id
application_id_parser = subparsers.add_parser("application_id")
application_id_parser.add_argument("application_id", help="Application id (gid)")

# application_name
application_name_parser = subparsers.add_parser("application_name")
application_name_parser.add_argument("application_name", help="Application name (not display name)")
application_name_parser.add_argument("app_space_id", help="AppSpace Id (gid)")

# create_application
create_application_parser = subparsers.add_parser("create_application")
create_application_parser.add_argument("app_space_id", help="AppSpace Id (gid)")
create_application_parser.add_argument("application_name", help="Application name (not display name)")
create_application_parser.add_argument("display_name", help="Display Name")

# update_application
update_application_parser = subparsers.add_parser("update_application")
update_application_parser.add_argument("application_id", help="Application Id")
update_application_parser.add_argument("etag", help="Etag")
update_application_parser.add_argument("display_name", help="Display Name")

# list_applications
list_applications_parser = subparsers.add_parser("list_applications")
list_applications_parser.add_argument("app_space_id", help="AppSpace Id (gid)")
list_applications_parser.add_argument("match_list", help="Matching names separated by ,",
type=lambda s: [str(item) for item in s.split(',')])
list_applications_parser.add_argument("bookmark", nargs='*', help="Optional list of bookmarks separated by space")

# delete_application
delete_application_parser = subparsers.add_parser("delete_application")
delete_application_parser.add_argument("application_id", help="Application Id")
delete_application_parser.add_argument("etag", nargs='?', help="Optional Etag")

# application_agent_id
application_agent_id_parser = subparsers.add_parser("application_agent_id")
application_agent_id_parser.add_argument("application_agent_id", help="Application agent id (gid)")

# application_agent_name
application_agent_name_parser = subparsers.add_parser("application_agent_name")
application_agent_name_parser.add_argument("application_agent_name", help="Application agent name (not display name)")
application_agent_name_parser.add_argument("app_space_id", help="AppSpace Id (gid)")

# create_application_agent
create_application_agent_parser = subparsers.add_parser("create_application_agent")
create_application_agent_parser.add_argument("application_id", help="Application Id (gid)")
create_application_agent_parser.add_argument("application_agent_name", help="Application agent name (not display name)")
create_application_agent_parser.add_argument("display_name", help="Display Name")

# update_application_agent
update_application_agent_parser = subparsers.add_parser("update_application_agent")
update_application_agent_parser.add_argument("application_agent_id", help="Application Agent Id")
update_application_agent_parser.add_argument("etag", help="Etag")
update_application_agent_parser.add_argument("display_name", help="Display Name")

# list_application_agents
list_application_agents_parser = subparsers.add_parser("list_application_agents")
list_application_agents_parser.add_argument("app_space_id", help="AppSpace Id (gid)")
list_application_agents_parser.add_argument("match_list", help="Matching names separated by ,",
type=lambda s: [str(item) for item in s.split(',')])
list_application_agents_parser.add_argument("bookmark", nargs='*', help="Optional list of bookmarks separated by space")

# delete_application_agent
delete_application_agent_parser = subparsers.add_parser("delete_application_agent")
delete_application_agent_parser.add_argument("application_agent_id", help="Application Agent Id")
delete_application_agent_parser.add_argument("etag", nargs='?', help="Optional Etag")

args = parser.parse_args()

local = args.local
Expand Down Expand Up @@ -483,6 +549,142 @@ def main():
print("Invalid delete_tenant_response response")
return delete_tenant_response

elif command == "application_id":
application_id = args.application_id
application = client_config.get_application_by_id(application_id)
if application:
print_response(application)
else:
print("Invalid application id")

elif command == "application_name":
application_name = args.application_name
app_space_id = args.app_space_id
application = client_config.get_application_by_name(app_space_id, application_name)
if application:
print_response(application)
else:
print("Invalid application name")

elif command == "create_application":
app_space_id = args.app_space_id
application_name = args.application_name
display_name = args.display_name
application_response = client_config.create_application(app_space_id, application_name, display_name,
"description", [])
if application_response:
print_response(application_response)
else:
print("Invalid application response")
return application_response

elif command == "update_application":
application_id = args.application_id
etag = args.etag
display_name = args.display_name
application_response = client_config.update_application(application_id, etag, display_name,"description update", [])
if application_response:
print_response(application_response)
else:
print("Invalid application response")
return application_response

elif command == "list_applications":
app_space_id = args.app_space_id
match_list = args.match_list
if args.bookmark:
bookmark = args.bookmark
else:
bookmark = []
list_applications_response = client_config.list_applications(app_space_id, match_list, bookmark)
if list_applications_response:
print(list_applications_response)
else:
print("Invalid list_applications response")
return list_applications_response

elif command == "delete_application":
application_id = args.application_id
if args.etag:
etag = args.etag
else:
etag = None

delete_application_response = client_config.delete_application(application_id, etag, [])
if delete_application_response:
print(delete_application_response)
else:
print("Invalid delete_application_response response")
return delete_application_response

elif command == "application_agent_id":
application_agent_id = args.application_agent_id
application_agent = client_config.get_application_agent_by_id(application_agent_id)
if application_agent:
print_response(application_agent)
else:
print("Invalid application agent id")

elif command == "application_agent_name":
application_agent_name = args.application_agent_name
app_space_id = args.app_space_id
application_agent = client_config.get_application_agent_by_name(app_space_id, application_agent_name)
if application_agent:
print_response(application_agent)
else:
print("Invalid application agent name")

elif command == "create_application_agent":
application_id = args.application_id
application_agent_name = args.application_agent_name
display_name = args.display_name
application_agent_response = client_config.create_application_agent(application_id, application_agent_name, display_name,
"description", [])
if application_agent_response:
print_response(application_agent_response)
else:
print("Invalid application agent response")
return application_agent_response

elif command == "update_application_agent":
application_agent_id = args.application_agent_id
etag = args.etag
display_name = args.display_name
application_agent_response = client_config.update_application_agent(application_agent_id, etag, display_name,"description update", [])
if application_agent_response:
print_response(application_agent_response)
else:
print("Invalid application agent response")
return application_agent_response

elif command == "list_application_agents":
app_space_id = args.app_space_id
match_list = args.match_list
if args.bookmark:
bookmark = args.bookmark
else:
bookmark = []
list_application_agents_response = client_config.list_application_agents(app_space_id, match_list, bookmark)
if list_application_agents_response:
print(list_application_agents_response)
else:
print("Invalid list_application_agents response")
return list_application_agents_response

elif command == "delete_application_agent":
application_agent_id = args.application_agent_id
if args.etag:
etag = args.etag
else:
etag = None

delete_application_agent_response = client_config.delete_application_agent(application_agent_id, etag, [])
if delete_application_agent_response:
print(delete_application_agent_response)
else:
print("Invalid delete_application_response_agent response")
return delete_application_agent_response


def print_verify_info(digital_twin_info): # pragma: no cover
print("Digital twin info")
Expand Down
3 changes: 3 additions & 0 deletions jarvis_sdk/cmdconfig/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,8 @@ def __init__(self, local=False):
from ._service_account import get_service_account
from ._app_space import get_app_space_by_id, get_app_space_by_name, create_app_space, update_app_space, list_app_spaces, delete_app_space
from ._tenant import get_tenant_by_id, get_tenant_by_name, create_tenant, update_tenant, list_tenants, delete_tenant
from ._application import get_application_by_id, get_application_by_name, create_application, update_application, list_applications, delete_application
from ._application_agent import get_application_agent_by_id, get_application_agent_by_name, create_application_agent, update_application_agent, \
list_application_agents, delete_application_agent


128 changes: 128 additions & 0 deletions jarvis_sdk/cmdconfig/_application.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
from jarvis_sdk.cmdconfig import helper
from jarvis_sdk.indykite.config.v1beta1 import config_management_api_pb2 as pb2
from jarvis_sdk.indykite.config.v1beta1 import model_pb2 as model
from jarvis_sdk.model.application import Application
from jarvis_sdk.indykite.config.v1beta1.model_pb2 import UniqueNameIdentifier
from jarvis_sdk.indykite.config.v1beta1.model_pb2 import google_dot_protobuf_dot_wrappers__pb2 as wrappers
from jarvis_sdk.model.create_application import CreateApplication
from jarvis_sdk.model.update_application import UpdateApplication


def get_application_by_id(self, application_id):
try:
response = self.stub.ReadApplication(
pb2.ReadApplicationRequest(
id=str(application_id)
)
)
except Exception as exception:
print(exception)
return None

if not response:
return None

return Application.deserialize(response.application)


def get_application_by_name(self, app_space_id, application_name):

try:
response = self.stub.ReadApplication(
pb2.ReadApplicationRequest(
name=UniqueNameIdentifier(location = app_space_id, name = application_name)
)
)
except Exception as exception:
print(exception)
return None

if not response:
return None

return Application.deserialize(response.application)


def create_application(self, app_space_id, name, display_name, description="", bookmarks=[]):

try:
response = self.stub.CreateApplication(
pb2.CreateApplicationRequest(
app_space_id=app_space_id, name=name, display_name=wrappers.StringValue(value=display_name),
description=wrappers.StringValue(value=description), bookmarks=bookmarks
)
)
except Exception as exception:
print(exception)
return None

if not response:
return None

return CreateApplication.deserialize(response)


def update_application(self, application_id, etag, display_name, description="", bookmarks=[]):

try:
response = self.stub.UpdateApplication(
pb2.UpdateApplicationRequest(
id=application_id,etag=wrappers.StringValue(value=etag),
display_name=wrappers.StringValue(value=display_name),
description=wrappers.StringValue(value=description), bookmarks=bookmarks
)
)
except Exception as exception:
print(exception)
return None

if not response:
return None

return UpdateApplication.deserialize(response)


def list_applications(self, app_space_id, match=[], bookmarks=[]):

try:
streams = self.stub.ListApplications(
pb2.ListApplicationsRequest(
app_space_id=app_space_id,match=match,
bookmarks=bookmarks
)
)
except Exception as exception:
print(exception)
return None

if not streams:
return None

responses = []
try:
for response in streams:
responses.append(response)
except Exception as exception:
print(exception)
return None

return responses


def delete_application(self, application_id, etag, bookmarks):

try:
response = self.stub.DeleteApplication(
pb2.DeleteApplicationRequest(
id=application_id, etag=wrappers.StringValue(value=etag),
bookmarks=bookmarks
)
)
except Exception as exception:
print(exception)
return None

if not response:
return None

return response

0 comments on commit 3648f19

Please sign in to comment.