def delete_policy()

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


def delete_policy(c_iot, policy_name):
    logger.info('policy_name: {}'.format(policy_name))
    try:
        response = c_iot.list_targets_for_policy(policyName=policy_name, pageSize=10)
        targets = response['targets']
        logger.debug('targets: {}'.format(targets))

        if targets:
            logger.info(
                'policy_name: {}: targets attached, policy will not be deleted'.format(
                    policy_name
                )
            )
            return

        response = c_iot.list_policy_versions(policyName=policy_name)
        logger.info('policy_name: {} versions: {}'.format(
            policy_name, response['policyVersions']))

        for version in response["policyVersions"]:
            if not version['isDefaultVersion']:
                logger.info(
                    'policy_name: {} deleting policy version: {}'.format(
                        policy_name, version['versionId']
                    )
                )
                c_iot.delete_policy_version(policyName=policy_name,
                    policyVersionId=version['versionId'])
        logger.info('deleting policy: policy_name: {}'.format(policy_name))
        c_iot.delete_policy(policyName=policy_name)

    except c_iot.exceptions.ResourceNotFoundException:
        logger.info('policy_name: {}: does not exist'.format(policy_name))

    except Exception as e:
        logger.error('delete_policy: {}'.format(e))
        raise DeviceReplicationGeneralException(e)