Skip to content

Commit

Permalink
refactor: tenant name to tenant id (#2)
Browse files Browse the repository at this point in the history
* refactor: tenant name to tenant id

* feat: better doc strings
  • Loading branch information
John2360 authored Aug 21, 2024
1 parent 1ee613d commit 25783bb
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 33 deletions.
6 changes: 3 additions & 3 deletions examples/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# Create a tenant (if you do not provide a database_id, a new database will be created)
try:
fortress.create_tenant(
tenant_name="client1",
tenant_id="client1",
alias="Client 1",
database_id=database_id,
)
Expand All @@ -27,15 +27,15 @@
try:
databases = fortress.list_databases()
for database in databases:
print(database.id, database.alias, database.date_created)
print(database.id, database.alias, database.created_date)
except Exception as e:
print(f"Database listing failed: {e}")

# List all tenants
try:
tenants = fortress.list_tenants()
for tenant in tenants:
print(tenant.name, tenant.alias, tenant.database_id, tenant.date_created)
print(tenant.id, tenant.alias, tenant.database_id, tenant.created_date)
except Exception as e:
print(f"Tenant listing failed: {e}")

Expand Down
22 changes: 11 additions & 11 deletions fortress_sdk_python/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ class Database:
size: int
average_read_iops: int
average_write_iops: int
date_created: datetime.datetime
created_date: datetime.datetime


@dataclass
class Tenant:
name: str
id: str
alias: str
database_id: str
date_created: datetime.datetime
created_date: datetime.datetime


@dataclass
Expand Down Expand Up @@ -109,7 +109,7 @@ def get_uri(self, id: str, type: str) -> ConnectionDetails:
password=password,
)

def create_database(self, alias: str) -> str:
def create_database(self, alias: str = "") -> str:
endpoint = f"{self.base_url}/v1/organization/{self.org_id}/database"
payload = {"alias": alias}
response = requests.post(
Expand Down Expand Up @@ -170,7 +170,7 @@ def list_databases(self) -> list[Database]:
size=data.get("sizeBytes", 0),
average_read_iops=data.get("averageReadIOPS", 0),
average_write_iops=data.get("averageWriteIOPS", 0),
date_created=datetime.datetime.fromisoformat(
created_date=datetime.datetime.fromisoformat(
data.get("createdDate", "")
),
)
Expand All @@ -180,9 +180,9 @@ def list_databases(self) -> list[Database]:
return databases

def create_tenant(
self, tenant_name: str, alias: str, database_id: str = ""
self, tenant_id: str, alias: str = "", database_id: str = ""
) -> None:
endpoint = f"{self.base_url}/v1/organization/{self.org_id}/tenant/{tenant_name}"
endpoint = f"{self.base_url}/v1/organization/{self.org_id}/tenant/{tenant_id}"
payload = {"alias": alias}
if database_id:
payload["databaseId"] = database_id
Expand All @@ -202,8 +202,8 @@ def create_tenant(
json_response.get("message", "Internal Server Error")
)

def delete_tenant(self, tenant_name: str) -> None:
endpoint = f"{self.base_url}/v1/organization/{self.org_id}/tenant/{tenant_name}"
def delete_tenant(self, tenant_id: str) -> None:
endpoint = f"{self.base_url}/v1/organization/{self.org_id}/tenant/{tenant_id}"
response = requests.delete(
endpoint,
headers={"Api-Key": self.api_key},
Expand Down Expand Up @@ -236,10 +236,10 @@ def list_tenants(self) -> list[Tenant]:

tenants = [
Tenant(
name=data.get("tenantName", ""),
name=data.get("tenantId", ""),
alias=data.get("alias", ""),
database_id=data.get("databaseId", ""),
date_created=datetime.datetime.fromisoformat(
created_date=datetime.datetime.fromisoformat(
data.get("createdDate", "")
),
)
Expand Down
73 changes: 55 additions & 18 deletions fortress_sdk_python/fortress.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ def __init__(self, org_id: str, api_key: str) -> None:
self.__tenant_to_database = {}

def connect_database(self, database_id: str) -> Connection:
"""Connect to a database on the Fortress platform"""
"""
Connect to a database on the Fortress platform
:param database_id: ID of the database
:return: Connection object to the database
"""
if database_id in self.__connection_cache:
return self.__connection_cache[database_id]

Expand All @@ -39,26 +44,44 @@ def connect_database(self, database_id: str) -> Connection:
self.__connection_cache[database_id] = connection
return connection

def create_database(self, alias: str) -> str:
"""Create a new database on the Fortress platform"""
def create_database(self, alias: str = "") -> str:
"""
Create a new database on the Fortress platform
Returns the ID of the created
:param alias: Alias for the database (optional)
"""
return self.__fortress.create_database(alias=alias)

def delete_database(self, database_id: str) -> None:
"""Delete a database on the Fortress platform"""
"""
Delete a database on the Fortress platform
:param database_id: ID of the database to delete
"""
self.__fortress.delete_database(database_id=database_id)

def list_databases(self) -> list[Database]:
"""List all databases on the Fortress platform"""
"""
List all databases on the Fortress platform
:return: List of databases
"""
return self.__fortress.list_databases()

def connect_tenant(self, tenant_name: str) -> Connection:
"""Connect to a tenant's database on the Fortress platform"""
if tenant_name in self.__tenant_to_database:
def connect_tenant(self, tenant_id: str) -> Connection:
"""
Connect to a tenant's database on the Fortress platform
:param tenant_id: ID of the tenant
:return: Connection object to the tenant's database
"""
if tenant_id in self.__tenant_to_database:
return self.connect_database(
self.__connection_cache[self.__tenant_to_database[tenant_name]]
self.__connection_cache[self.__tenant_to_database[tenant_id]]
)

response = self.__fortress.get_uri(tenant_name, "tenant")
response = self.__fortress.get_uri(tenant_id, "tenant")

connection = PostgresClient(
response.url,
Expand All @@ -68,22 +91,36 @@ def connect_tenant(self, tenant_name: str) -> Connection:
response.database,
).connect()

self.__tenant_to_database[tenant_name] = response.database_id
self.__tenant_to_database[tenant_id] = response.database_id
self.__connection_cache[response.database_id] = connection
return connection

def create_tenant(
self, tenant_name: str, alias: str, database_id: str = ""
self, tenant_id: str, alias: str = "", database_id: str = ""
) -> None:
"""Create a new tenant on the Fortress platform"""
"""
Create a new tenant on the Fortress platform
:param tenant_id: ID of the tenant
:param alias: Alias for the tenant (optional)
:param database_id: ID of the database to assign the tenant to or if not provided a database will be created (optional)
"""
self.__fortress.create_tenant(
tenant_name=tenant_name, alias=alias, database_id=database_id
tenant_id=tenant_id, alias=alias, database_id=database_id
)

def delete_tenant(self, tenant_name: str) -> None:
"""Delete a tenant on the Fortress platform"""
self.__fortress.delete_tenant(tenant_name=tenant_name)
def delete_tenant(self, tenant_id: str) -> None:
"""
Delete a tenant on the Fortress platform
:param tenant_id: ID of the tenant to delete
"""
self.__fortress.delete_tenant(tenant_id=tenant_id)

def list_tenants(self) -> list[Tenant]:
"""List all tenants on the Fortress platform"""
"""
List all tenants on the Fortress platform
:return: List of tenants
"""
return self.__fortress.list_tenants()
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "fortress-sdk-python"
version = "0.1.8"
version = "0.1.9"
description = "Fortress Platform Python API SDK"
authors = ["Fortress <[email protected]>"]
readme = "README.md"
Expand Down

0 comments on commit 25783bb

Please sign in to comment.