From 25783bb043e35b857a9fd51d57b47169d4c66e36 Mon Sep 17 00:00:00 2001 From: John Finberg Date: Wed, 21 Aug 2024 11:25:28 -0700 Subject: [PATCH] refactor: tenant name to tenant id (#2) * refactor: tenant name to tenant id * feat: better doc strings --- examples/test.py | 6 +-- fortress_sdk_python/client.py | 22 +++++----- fortress_sdk_python/fortress.py | 73 +++++++++++++++++++++++++-------- pyproject.toml | 2 +- 4 files changed, 70 insertions(+), 33 deletions(-) diff --git a/examples/test.py b/examples/test.py index 8e39535..f8524f9 100644 --- a/examples/test.py +++ b/examples/test.py @@ -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, ) @@ -27,7 +27,7 @@ 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}") @@ -35,7 +35,7 @@ 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}") diff --git a/fortress_sdk_python/client.py b/fortress_sdk_python/client.py index b84df6c..aca9bbb 100644 --- a/fortress_sdk_python/client.py +++ b/fortress_sdk_python/client.py @@ -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 @@ -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( @@ -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", "") ), ) @@ -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 @@ -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}, @@ -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", "") ), ) diff --git a/fortress_sdk_python/fortress.py b/fortress_sdk_python/fortress.py index 4a1c55f..fe30b33 100644 --- a/fortress_sdk_python/fortress.py +++ b/fortress_sdk_python/fortress.py @@ -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] @@ -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, @@ -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() diff --git a/pyproject.toml b/pyproject.toml index ce75a89..7240945 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 "] readme = "README.md"