def main()

in scripts/ad-connector-resource-handler.py [0:0]


def main(event, context):

    log.getLogger().setLevel(log.INFO)

    # This needs to change if there are to be multiple resources in the same stack
    physical_id = 'AdConnector'
    responseData = {}
    
    

    try:
        log.info('Input event: %s', event)

        if event['RequestType'] == 'Delete':
            responseData['Complete'] = "True"
            adConnectorID = event['PhysicalResourceId']
            client.delete_directory(DirectoryId=adConnectorID)
            cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, adConnectorID)

        # Check if this is a Create and we're failing Creates
        if event['RequestType'] == 'Create':

            IdentityAccountAdConnectorSecretArn = event['ResourceProperties']['IdentityAccountAdConnectorSecretArn']
            
            try:
                get_secret_value_response = smClient.get_secret_value(
                    SecretId=IdentityAccountAdConnectorSecretArn
                )
            except ClientError as e:
                raise e
            else:
                
                
                if 'SecretString' in get_secret_value_response:
                    secret = get_secret_value_response['SecretString']
                    log.info('PAULS')
                    log.info(secret)
                    secretDict = json.loads(secret)
                    
                    name = secretDict['DomainApex']
                    short_name = secretDict['DomainControllerShortName']
                    password = secretDict['password']
                    customerDnsIps0 = secretDict['DomainControllerDnsAddress0']
                    customerDnsIps1 = secretDict['DomainControllerDnsAddress1']
                    customerUserName = secretDict['AdConnectorServiceAccountUsername']
                    
                    description = event['ResourceProperties']['Description']
                    size = event['ResourceProperties']['Size']
                    vpcId = event['ResourceProperties']['VpcId']
                    subnetIds = event['ResourceProperties']['SubnetIds']
                       
                    response = client.connect_directory(
                        Name=name,
                        ShortName=short_name,
                        Password=password,
                        Description=description,
                        Size=size,
                        ConnectSettings={
                            'VpcId': vpcId,
                            'SubnetIds': subnetIds ,
                            'CustomerDnsIps': [customerDnsIps0, customerDnsIps1],
                            'CustomerUserName': customerUserName
                        }
                    )
                    responseData['reponse'] = response
                    connectorId = responseData['reponse']['DirectoryId']
                    log.info(responseData['reponse']['DirectoryId'])
                    
                    cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, connectorId)

    except Exception as e:
        log.exception(e)
        # cfnresponse's error message is always "see CloudWatch"
        cfnresponse.send(event, context, cfnresponse.FAILED, {}, physical_id)