def createDashboard()

in visualizeConnectData/scripts/quicksight/deploy.py [0:0]


def createDashboard(
    accountId, 
    qsUserArn, 
    templateArn, 
    templateDatasetPlaceholder, 
    datasetArn, 
    name):
        
    deleteDashboard(accountId, name)
        
    cdResp = qsClient.create_dashboard(
        AwsAccountId = accountId,
        DashboardId = name,
        Name = name,
        SourceEntity = {
            'SourceTemplate': {
                'DataSetReferences': [
                    {
                        'DataSetPlaceholder': templateDatasetPlaceholder,
                        'DataSetArn': datasetArn
                    }
                ],
                'Arn': templateArn
            }
        },
        DashboardPublishOptions={
            'AdHocFilteringOption': {
                'AvailabilityStatus': 'ENABLED'
            },
            'ExportToCSVOption': {
                'AvailabilityStatus': 'ENABLED'
            },
            'SheetControlsOption': {
                'VisibilityState': 'EXPANDED'
            }
        }
    )
    logger.info(cdResp)
    
    dbId = cdResp['DashboardId']
    
    while True:
        time.sleep(sleepTime)
        
        ddResp = qsClient.describe_dashboard(
            AwsAccountId = accountId,
            DashboardId = dbId
        )
        logger.info(ddResp)
        
        dbStatus = ddResp['Dashboard']['Version']['Status']
        logger.info(dbStatus)
        
        if dbStatus != 'CREATION_IN_PROGRESS':
            break
    
    if dbStatus == 'CREATION_SUCCESSFUL':
        udpResp = qsClient.update_dashboard_permissions(
            AwsAccountId=accountId,
            DashboardId=dbId,
            GrantPermissions=[
                {
                    'Principal': qsUserArn,
                    'Actions': [
                        'quicksight:DescribeDashboard',
                        'quicksight:ListDashboardVersions',
                        'quicksight:UpdateDashboardPermissions',
                        'quicksight:QueryDashboard',
                        'quicksight:UpdateDashboard',
                        'quicksight:DeleteDashboard',
                        'quicksight:DescribeDashboardPermissions',
                        'quicksight:UpdateDashboardPublishedVersion'
                    ]
                }
            ]
        )
        logger.info(udpResp)
    else:
        raise RuntimeError('{0} failed'.format(name))