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))