def createDataSource()

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


def createDataSource(accountId, qsUserArn, name):
    deleteDataSource(accountId, name)

    cdsResp = qsClient.create_data_source(
        AwsAccountId = accountId,
        DataSourceId = name,
        Name = name,
        Type = 'ATHENA',
        DataSourceParameters = {
            'AthenaParameters': {
                'WorkGroup': 'primary'
            }
        }
    )
    
    logger.info(cdsResp)
    
    dsArn = cdsResp['Arn']
    dsId = cdsResp['DataSourceId']
    
    while True:
        time.sleep(sleepTime)
        
        ddsResp = qsClient.describe_data_source(
            AwsAccountId = accountId,
            DataSourceId = dsId
        )
        logger.info(ddsResp)
        
        dsStatus = ddsResp['DataSource']['Status']
        logger.info(dsStatus)
        
        if dsStatus != 'CREATION_IN_PROGRESS':
            break
        
    if dsStatus == 'CREATION_SUCCESSFUL':
        udspResp = qsClient.update_data_source_permissions(
            AwsAccountId=accountId,
            DataSourceId=dsId,
            GrantPermissions=[
                {
                    'Principal': qsUserArn,
                    'Actions': [
                        'quicksight:UpdateDataSourcePermissions',
                        'quicksight:DescribeDataSource',
                        'quicksight:DescribeDataSourcePermissions',
                        'quicksight:PassDataSource',
                        'quicksight:UpdateDataSource',
                        'quicksight:DeleteDataSource',
                    ]
                }
            ]
        )
        logger.info(udspResp)
    
        return dsArn
    else:
        raise RuntimeError('{0} failed'.format(name))