import boto3
import json
import cfnresponse
import os
eventbridge_client = boto3.client('events')


def lambda_handler(event, context):
    try:
        event_data = {
            "eventArn": "arn:aws:health:us-east-1::event/WORKSPACES/AWS_WORKSPACES_MAINTENANCE_SCHEDULED/AWS_WORKSPACES_MAINTENANCE_SCHEDULED_TEST",
                        "service": "WORKSPACES",
                        "eventScopeCode": "ACCOUNT_SPECIFIC",
                        "communicationId": "8f7ef91f0c9f2f3e3f68dffd0fa34fe299e56f323f06154df1de185d0e3f49bf",
                        "lastUpdatedTime": "Wed, 3 May 2023 13:30:55 GMT",
                        "eventRegion": "us-east-1",
                        "eventTypeCode": "AWS_WORKSPACES_MAINTENANCE_SCHEDULED",
                        "eventTypeCategory": "scheduledChange",
                        "startTime": "Wed, 3 May 2023 11:00:00 GMT",
                        "endTime": "Wed, 10 May 2023 14:00:00 GMT",
                        "account": "1234567890",
                        "accountName": "TestAccount",
                        "ingestionTime": "2023-05-22T00:07:57Z",
                        "eventSummary": "Test Event Summary",
                        "eventSource": "mocktest",
                        "monthlySpend": "0.0",
                        "eventDescription": [{
                            "language": "en_US",
                            "latestDescription": "This is a test AWS Health Event AWS_WORKSPACES_MAINTENANCE_SCHEDULED\n"
                        }],
            "affectedEntities": [{
                "entityValue": "test-resource"
            }]
        }
        # Send the event to EventBridge
        eventbridge_client.put_events(
            Entries=[
                {
                    'Source': 'awshealthtest',
                    'DetailType': 'awshealthtest',
                    'Detail': json.dumps(event_data),
                    'EventBusName': os.environ['EventHealthBusName']
                }
            ]
        )
        cfnresponse.send(event, context, cfnresponse.SUCCESS, {}, None)
        return {'statusCode': 200, 'body': 'Success'}
    except Exception as e:
        cfnresponse.send(event, context, cfnresponse.Fail, {}, None)
        return {'statusCode': 500, 'body': 'Fail'}