def update_tenant()

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


def update_tenant(event, context):
    
    table_tenant_details = __getTenantManagementTable(event)
    
    requesting_tenant_id = event['requestContext']['authorizer']['tenantId']    
    user_role = event['requestContext']['authorizer']['userRole']

    tenant_details = json.loads(event['body'])
    tenant_id = event['pathParameters']['tenantid']
    
    tracer.put_annotation(key="TenantId", value=tenant_id)
    
    logger.log_with_tenant_context(event, "Request received to update tenant")
    
    if ((auth_manager.isTenantAdmin(user_role) and tenant_id == requesting_tenant_id) or auth_manager.isSystemAdmin(user_role)):
        exiting_tenant_details = table_tenant_details.get_item(
                Key={
                    'tenantId': tenant_id,
                }    
            )             

        if (exiting_tenant_details['Item']['tenantTier'].upper() != tenant_details['tenantTier'].upper()):
            api_key = __getApiKey(tenant_details['tenantTier'])
        else:            
            api_key = exiting_tenant_details['Item']['apiKey']

        response_update = table_tenant_details.update_item(
            Key={
                'tenantId': tenant_id,
            },
            UpdateExpression="set tenantName = :tenantName, tenantAddress = :tenantAddress, tenantEmail = :tenantEmail, tenantPhone = :tenantPhone, tenantTier=:tenantTier, apiKey=:apiKey",
            ExpressionAttributeValues={
                    ':tenantName' : tenant_details['tenantName'],
                    ':tenantAddress': tenant_details['tenantAddress'],
                    ':tenantEmail': tenant_details['tenantEmail'],
                    ':tenantPhone': tenant_details['tenantPhone'],
                    ':tenantTier': tenant_details['tenantTier'],
                    ':apiKey': api_key,
                },
            ReturnValues="UPDATED_NEW"
            )             
            
        
        logger.log_with_tenant_context(event, response_update)     

        logger.log_with_tenant_context(event, "Request completed to update tenant")
        return utils.create_success_response("Tenant Updated")
    else:
        logger.log_with_tenant_context(event, "Request completed as unauthorized. Only tenant admin or system admin can update tenant!")        
        return utils.create_unauthorized_response()