def create_tenant()

in server/TenantManagementService/tenant-management.py [0:0]


def create_tenant(event, context):
    
    api_gateway_url = ''       
    tenant_details = json.loads(event['body'])

    dynamodb = boto3.resource('dynamodb')
    table_tenant_details = dynamodb.Table('ServerlessSaaS-TenantDetails')#TODO: read table names from env vars
    table_system_settings = dynamodb.Table('ServerlessSaaS-Settings')

    try:          
        # for pooled tenants the apigateway url is saving in settings during stack creation
        # update from there during tenant creation
        if(tenant_details['dedicatedTenancy'].lower()!= 'true'):
            settings_response = table_system_settings.get_item(
                Key={
                    'settingName': 'apiGatewayUrl-Pooled'
                } 
            )
            api_gateway_url = settings_response['Item']['settingValue']

        response = table_tenant_details.put_item(
            Item={
                    'tenantId': tenant_details['tenantId'],
                    'tenantName' : tenant_details['tenantName'],
                    'tenantAddress': tenant_details['tenantAddress'],
                    'tenantEmail': tenant_details['tenantEmail'],
                    'tenantPhone': tenant_details['tenantPhone'],
                    'tenantTier': tenant_details['tenantTier'],
                    'apiKey': tenant_details['apiKey'],
                    'userPoolId': tenant_details['userPoolId'],                 
                    'appClientId': tenant_details['appClientId'],
                    'dedicatedTenancy': tenant_details['dedicatedTenancy'],
                    'isActive': True,
                    'apiGatewayUrl': api_gateway_url
                }
            )                    

    except Exception as e:
        raise Exception('Error creating a new tenant', e)
    else:
        return utils.create_success_response("Tenant Created")