def get_and_create_policy()

in source/lambda/iot-dr-layer/device_replication.py [0:0]


def get_and_create_policy(c_iot, c_iot_primary, policy_name):
    try:
        primary_region = c_iot_primary.meta.region_name
        secondary_region = c_iot.meta.region_name
        logger.info(
            'primary_region: {} secondary_region: {} policy_name: {}'.format(
                primary_region, secondary_region, policy_name
            )
        )

        response = c_iot_primary.get_policy(policyName=policy_name)
        logger.debug(response)
        logger.info('primary_region: {} policy_document: {}'.format(
            primary_region, response['policyDocument']))
        policy_document_this_region = response['policyDocument'].replace(
            primary_region, secondary_region
        )
        logger.info('secondary_region: {} policy_document: {}'.format(
            secondary_region, policy_document_this_region))
        response = c_iot.create_policy(
            policyName=policy_name,
            policyDocument=policy_document_this_region
        )
        logger.info('policy_name: {}: create_policy: response: {}'.format(policy_name, response))
    except c_iot.exceptions.ResourceAlreadyExistsException:
        logger.warning(
            'policy_name {}: exists already - might have been created in a parallel thread'.format(
                policy_name
            )
        )
    except Exception as e:
        logger.error('policy_name: {}: get_and_create_policy: {}'.format(policy_name, e))
        raise DeviceReplicationCreateThingException(e)