in cid/helpers/quicksight.py [0:0]
def update_dashboard(self, dashboard: Dashboard, **kwargs):
""" Updates an AWS QuickSight dashboard """
DataSetReferences = list()
for k, v in dashboard.datasets.items():
DataSetReferences.append({
'DataSetPlaceholder': k,
'DataSetArn': v
})
update_parameters = {
'AwsAccountId': self.account_id,
'DashboardId': dashboard.id,
'Name': dashboard.name,
'SourceEntity': {
'SourceTemplate': {
'Arn': f"{dashboard.sourceTemplate.get('Arn')}/version/{dashboard.latest_version}",
'DataSetReferences': DataSetReferences
}
}
}
update_parameters = always_merger.merge(update_parameters, kwargs)
logger.debug(f"Update parameters: {update_parameters}")
update_status = self.client.update_dashboard(**update_parameters)
logger.debug(update_status)
updated_version = int(update_status['VersionArn'].split('/')[-1])
dashboard = self.describe_dashboard(poll=True, DashboardId=dashboard.id, VersionNumber=updated_version)
if not dashboard.health:
failure_reason = dashboard.version.get('Errors')
raise Exception(failure_reason)
update_params = {
'AwsAccountId': self.account_id,
'DashboardId': dashboard.id,
'VersionNumber': updated_version
}
result = self.client.update_dashboard_published_version(**update_params)
if result['Status'] != 200:
raise Exception(result)
return result