import os
import grpc
import protobufs.fortanix_pb2_grpc as pb2_grpc
import protobufs.fortanix_pb2 as pb2

#channel = grpc.insecure_channel('localhost:50051')
#client = pb2_grpc.ConsumerStub(channel)

consumer_host = os.getenv("CONSUMER_HOST", "consumer.local")
with open("ca.pem", "rb") as fp:
    ca_cert = fp.read()
options = {
    'grpc.ssl_target_name_override' : 'localhost',
    'grpc.default_authority': 'localhost'
}
recommendations_channel = grpc.secure_channel(
    f"{consumer_host}:8445", grpc.ssl_channel_credentials(ca_cert)
)

client = pb2_grpc.ConsumerStub(recommendations_channel)

request = pb2.AccountToCreate(acct_name="Demo Micro")
response = client.CreateAccount(request)

acct = response.res[0]

request_role = pb2.RoleToCreate(role_name="Account Role",role_desc="Default Role",acct_id=acct.id)
response_role = client.CreateAccountRole(request_role)

acct_role = response_role.res[0]

request_group = pb2.GroupToCreate(group_name="Apps Container",group_desc="Apps",acct_id=acct.id)
response_group = client.CreateGroup(request_group)

group= response_group.res[0]

request_grole = pb2.RoleToCreate(role_name="App Auditor",role_desc="Group Role",acct_id=acct.id)
response_grole = client.CreateGroupRole(request_grole)

group_role = response_grole.res[0]

request_user = pb2.UserToCreate(mail="YHALVARA@uninet.com.mx",group_id=group.id,group_role=group_role.id,acct_id=acct.id,acct_role=acct_role.id)
response_user = client.CreateUser(request_user)

user = response_user.res[0]
# a_id="83851612-50bf-4708-bc04-c31917152182"
# g_id="cd31408b-bda0-4443-b752-a5558b4d20c0"

# request_apps = pb2.AppsByGroup(group_id=g_id,acct_id=a_id)
# response_apps = client.GetApps(request_apps)

# apps = response_apps.res

# for app in apps:
#     print(app)

# app_id = "5cfb84e2-7cd8-4eb7-8a5c-320b712dbbe0"

# request_delete_app = pb2.App(app_id=app_id,acct_id=a_id)
# response_delete_app = client.DeleteApp(request_delete_app)

# print(response_delete_app.res)

# request_apps = pb2.AppsByGroup(group_id=g_id,acct_id=a_id)
# response_apps = client.GetApps(request_apps)

# apps = response_apps.res

print(acct)
print(acct_role)
print(group)
print(group_role)
print(user)
# for app in apps:
#     print(app)