def dynamo_db_autoscaling_target_policy()

in syndicate/core/transform/terraform/converter/tf_dynamo_db_converter.py [0:0]


def dynamo_db_autoscaling_target_policy(target_value,
                                        target_name,
                                        tf_resource_name,
                                        predefined_metric_type=None,
                                        resource_label=None,
                                        metric_name=None, namespace=None,
                                        dimensions=None, statistic=None,
                                        unit=None, scale_out_cooldown=None,
                                        scale_in_cooldown=None):
    resource_id = build_aws_appautoscaling_target_resource_id_ref(
        target_name=target_name)
    scalable_dimension = build_aws_appautoscaling_target_scalable_dimension_ref(
        target_name=target_name)
    service_namespace = build_aws_appautoscaling_target_service_namespace_ref(
        target_name=target_name)

    resource = {
        'name': f'dynamodb-read-capacity-utilization-{resource_id}',
        'policy_type': 'TargetTrackingScaling',
        'resource_id': resource_id,
        'scalable_dimension': scalable_dimension,
        'service_namespace': service_namespace,
    }

    target_scaling_config_dict = dict()
    if target_value:
        target_scaling_config_dict['target_value'] = target_value
    predefined_config_dict = dict()
    if predefined_metric_type:
        predefined_config_dict[
            'predefined_metric_type'] = predefined_metric_type
    if resource_label:
        predefined_config_dict['resource_label'] = resource_label
    if predefined_config_dict:
        target_scaling_config_dict[
            'predefined_metric_specification'] = predefined_config_dict

    customized_config_dict = dict()
    if metric_name:
        customized_config_dict['metric_name'] = metric_name
    if namespace:
        customized_config_dict['namespace'] = namespace
    if dimensions:
        customized_config_dict['dimensions'] = dimensions
    if statistic:
        customized_config_dict['statistic'] = statistic
    if unit:
        customized_config_dict['unit'] = unit
    if customized_config_dict:
        target_scaling_config_dict[
            'customized_metric_specification'] = customized_config_dict

    if scale_out_cooldown:
        target_scaling_config_dict['scale_out_cooldown'] = scale_out_cooldown
    if scale_in_cooldown:
        target_scaling_config_dict['scale_in_cooldown'] = scale_in_cooldown
    if target_scaling_config_dict:
        resource[
            'target_tracking_scaling_policy_configuration'] = target_scaling_config_dict

    resource = {
        tf_resource_name: resource
    }
    return resource