def create_dashboard()

in Migration-scripts/cdk/lambda/quicksight_migration/quicksight_migration/quicksight_utils.py [0:0]


def create_dashboard(session, dashboard, name,
    principal, source_entity, version, theme_arn, filter='ENABLED',
    csv='ENABLED', sheetcontrol='EXPANDED'):

    qs_client = session.client('quicksight')
    sts_client = session.client("sts")
    account_id = sts_client.get_caller_identity()["Account"]
    try:
        if theme_arn == '':
            response = qs_client.create_dashboard(
                AwsAccountId=account_id,
                DashboardId=dashboard,
                Name=name,
                Permissions=[
                    {
                        'Principal': principal,
                        'Actions': [
                            'quicksight:DescribeDashboard',
                            'quicksight:ListDashboardVersions',
                            'quicksight:UpdateDashboardPermissions',
                            'quicksight:QueryDashboard',
                            'quicksight:UpdateDashboard',
                            'quicksight:DeleteDashboard',
                            'quicksight:DescribeDashboardPermissions',
                            'quicksight:UpdateDashboardPublishedVersion'
                        ]
                    },
                ],
                SourceEntity=source_entity,
                VersionDescription=version,
                DashboardPublishOptions={
                    'AdHocFilteringOption': {
                        'AvailabilityStatus': filter
                    },
                    'ExportToCSVOption': {
                        'AvailabilityStatus': csv
                    },
                    'SheetControlsOption': {
                        'VisibilityState': sheetcontrol
                    }
                }
            )
        else:
            response = qs_client.create_dashboard(
                AwsAccountId=account_id,
                DashboardId=dashboard,
                Name=name,
                Permissions=[
                    {
                        'Principal': principal,
                        'Actions': [
                            'quicksight:DescribeDashboard',
                            'quicksight:ListDashboardVersions',
                            'quicksight:UpdateDashboardPermissions',
                            'quicksight:QueryDashboard',
                            'quicksight:UpdateDashboard',
                            'quicksight:DeleteDashboard',
                            'quicksight:DescribeDashboardPermissions',
                            'quicksight:UpdateDashboardPublishedVersion'
                        ]
                    },
                ],
                SourceEntity=source_entity,
                VersionDescription=version,
                DashboardPublishOptions={
                    'AdHocFilteringOption': {
                        'AvailabilityStatus': filter
                    },
                    'ExportToCSVOption': {
                        'AvailabilityStatus': csv
                    },
                    'SheetControlsOption': {
                        'VisibilityState': sheetcontrol
                    }
                },
                ThemeArn=theme_arn
            )
    except ClientError as exc:
        logger.error("Failed to create dashboard %s", dashboard)
        logger.error(exc.response['Error']['Message'])
    return response