You use Modular SDK to create, configure, and manage common entities, such as:
- Customers;
- Tenants;
- TenantSettings;
- Regions;
- Applications;
- Parents;
- Python 3.10+ required
- Make sure you have the latest version of PyPA’s build installed:
python3 -m pip install --upgrade build - Run the command form the same directory where
pyptoject.tomlis located:python3 -m build - This command should output a lot of text and once completed should generate two files in the dist directory:
dist/
modular_sdk-{version}.tar.gz
modular_sdk-{version}-py3-none-any.whl
pip install modular-sdk
To use Modular SDK, you must import, configure and indicate which service or services you're going to use:
from modular_sdk.modular import Modular
modular_sdk = Modular()
parent_service = modular_sdk.parent_service()
tenant_service = modular_sdk.tenant_service()For services that aren't tied to the service_mode configuration, you can use
ModularServiceProvider:
from modular_sdk.modular import ModularServiceProvider
modular_sdk = ModularServiceProvider()
thread_local_storage_service = modular_sdk.thread_local_storage_service()For now, Modular provides 3 ways of DB access. Depends on the way of database connection, different sets of env variables must be set:
- Onprem, Mongodb:
modular_service_mode:docker,
modular_mongo_user:$MONGO_USER,
modular_mongo_password:$MONGO_PASSWORD,
modular_mongo_url:$MONGO_URL,
modular_mongo_db_name:$MONGO_DB_NAME,
modular_mongo_srv:True, # Optional
Alternatively, instead of specifyingmodular_mongo_user,modular_mongo_password,
modular_mongo_url, andmodular_mongo_srv, you can use:
modular_mongo_uri:$MONGO_URI# Format:mongodb+srv://<USER>:<PASSWORD>@<URL>/ - SaaS, DynamoDB (cross-account access):
modular_service_mode:saas# Optional
modular_assume_role_arn:$ASSUME_ROLE_ARN - SAAS, DynamoDB (same AWS account):
modular_service_mode:saas# Optional
Alternatively, you can pass these parameters (fully or partially) on initialization:
from modular_sdk.modular import Modular
modular_sdk = Modular(modular_service_mode='docker',
modular_mongo_user='MONGO_USER',
modular_mongo_password='MONGO_PASSWORD',
modular_mongo_url='MONGO_URL',
modular_mongo_db_name='DB_NAME')
# initialize some services
application_service = modular_sdk.application_service()
parent_service = modular_sdk.parent_service()Example 1: List Maestro Customers
from modular_sdk.modular import Modular
# initializing application service
customer_service = Modular().customer_service()
# listing available customers
customers = customer_service.list()
# printing customer names
for customer in customers:
print(customer.name)Example 2: Update Maestro Application
from modular_sdk.modular import Modular
# initializing application service
application_service = Modular().application_service()
# extracting application by id
application = application_service.get_application_by_id(
application_id="$APP_ID")
# updating application description
description_to_set = 'Updated application description'
application_service.update(application=application,
description=description_to_set)
# saving updated application
application_service.save(application=application)Example 3: Delete Maestro Parent
from modular_sdk.modular import Modular
# initializing parent service
parent_service = Modular().parent_service()
# extracting parent by id
parent = parent_service.get_parent_by_id(parent_id="$PARENT_ID")
# deleting parent
parent_service.mark_deleted(parent=parent)