#!/bin/bash

# v1 handles S3 only
#***********************************************************************************************************
#
# Starfish Storage Corporation ("Starfish") CONFIDENTIAL
# Unpublished Copyright (c) 2011 - present Starfish Storage Corporation, All Rights Reserved.
#
# NOTICE: This file and its contents (1) constitute Starfish's "External Code" under Starfish's most-recent
# Limited Software End-User License Agreement, and (2) is and remains the property of Starfish. The
# intellectual and technical concepts contained herein are proprietary to Starfish and may be covered by
# U.S. and/or foreign patents or patents in process, and are protected by trade secret or copyright law.
# Dissemination of this information or reproduction of this material is strictly forbidden unless prior
# written permission is obtained from Starfish. Access to the source code contained herein is hereby
# forbidden to anyone except (A) current Starfish employees, managers, or contractors who have executed
# confidentiality or nondisclosure agreements explicitly covering such access, and (B) licensees of
# Starfish's software.
#
# ANY REPRODUCTION, COPYING, MODIFICATION, DISTRIBUTION, PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR
# THROUGH USE OF THIS SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF STARFISH IS STRICTLY PROHIBITED
# AND IS IN VIOLATION OF APPLICABLE LAWS AND INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS
# FILE OR ITS CONTENTS AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS TO REPRODUCE,
# DISCLOSE, OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN
# WHOLE OR IN PART.
#
# FOR U.S. GOVERNMENT CUSTOMERS REGARDING THIS DOCUMENTATION/SOFTWARE
#   These notices shall be marked on any reproduction of this data, in whole or in part.
#   NOTICE: Notwithstanding any other lease or license that may pertain to, or accompany the delivery of,
#   this computer software, the rights of the Government regarding its use, reproduction and disclosure are
#   as set forth in Section 52.227-19 of the FARS Computer Software-Restricted Rights clause.
#   RESTRICTED RIGHTS NOTICE: Use, duplication, or disclosure by the Government is subject to the
#   restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer
#   Software clause at DFARS 52.227-7013.
#
#***********************************************************************************************************


set -euo pipefail

usage() {
    cat <<EOF
Given a starfish query predicated, estimate the cost by
S3 class of storage.
Note, under the hood, this uses sf query to get the sum total and
it adds the flags --group-by "" and --type f.

Usage:
    cost_estimator <starfish query arguments>

Example:
    $ cost_estimator home: --ext bam --user bill
    S3 estimated costs $/mo
    Standard         IA     Glacier   Deep Arc
        0.03       0.02       0.00       0.00

EOF
}

if [[ $? -ge 0 && ("$1" = "-h" || "$1" = "-?" || "$1" = "--help") ]]; then
    usage
    exit 0
fi

# we want to match literal type
# shellcheck disable=SC2076
if [[ "$*" =~ "-typ" ]]; then
    echo "Error: type is not a valid argument to this. Type is always set to 'f'"
    exit 1
fi

if [ $? -lt 0 ]; then
    echo "Warning: You didn't supply any volpath, this assumes that you want"
    echo "to know what the cost would be to upload every single file in your"
    echo "infrastructure to the cloud. If this is not what you want, press"
    echo "Ctrl-C"
fi


sizesum=$(sf query "$@" -H --type f --group-by "" --format "size_sum")

echo "$sizesum" | awk '
{
    gbtot = $1/(1000*1000*1000)
    s3cost = gbtot * .021
    iacost = gbtot * .0125
    gccost = gbtot * .004
    dacost = gbtot * .00099
    print "S3 estimated costs $/mo";
    printf("%10s %10s %10s %10s\n", "Standard", "IA", "Glacier", "Deep Arc");
    printf("%10.2f %10.2f %10.2f %10.2f\n", s3cost, iacost, gccost, dacost);
}'

exit 0
