from typing import Dict class CloudProviderInterface: # pragma: no cover def set_secret(self, secret_key: str, secret_value: str): raise NotImplementedError() def get_secret(self, secret_key: str): raise NotImplementedError() def root_creds(self) -> Dict: raise NotImplementedError() def create_environment(self, payload): """Create a new environment in the CSP. Arguments: auth_credentials -- Object containing CSP account credentials user -- ATAT user authorizing the environment creation environment -- ATAT Environment model Returns: string: ID of created environment Raises: AuthenticationException: Problem with the credentials AuthorizationException: Credentials not authorized for current action(s) ConnectionException: Issue with the CSP API connection UnknownServerException: Unknown issue on the CSP side EnvironmentExistsException: Environment already exists and has been created """ raise NotImplementedError() def create_or_update_user( self, auth_credentials: Dict, user_info, csp_role_id: str ) -> str: """Creates a user or updates an existing user's role. Arguments: auth_credentials -- Object containing CSP account credentials user_info -- instance of EnvironmentRole containing user data if it has a csp_user_id it will try to update that user csp_role_id -- The id of the role the user should be given in the CSP Returns: string: Returns the interal csp_user_id of the created/updated user account Raises: AuthenticationException: Problem with the credentials AuthorizationException: Credentials not authorized for current action(s) ConnectionException: Issue with the CSP API connection UnknownServerException: Unknown issue on the CSP side UserProvisioningException: User couldn't be created or modified """ raise NotImplementedError() def disable_user(self, tenant_id: str, role_assignment_cloud_id: str) -> bool: """Revoke all privileges for a user. Used to prevent user access while a full delete is being processed. Arguments: tenant_id -- CSP internal tenant identifier role_assignment_cloud_id -- CSP name of the role assignment to delete. Returns: bool -- True on success Raises: AuthenticationException: Problem with the credentials AuthorizationException: Credentials not authorized for current action(s) ConnectionException: Issue with the CSP API connection UnknownServerException: Unknown issue on the CSP side UserRemovalException: User couldn't be suspended """ raise NotImplementedError() def get_calculator_url(self) -> str: """Returns the calculator url for the CSP. This will likely be a static property elsewhere once a CSP is chosen. """ raise NotImplementedError() def get_environment_login_url(self, environment) -> str: """Returns the login url for a given environment This may move to be a computed property on the Environment domain object """ raise NotImplementedError()