#!/bin/bash
set -x

TITLE="Comparison of tcp-qa deployments"
RIGHT_NOW=$(date +"%x %r %Z")
TIME_STAMP="Updated on $RIGHT_NOW by $USER"

list_of_envs=(
    heat-cicd-pike-dvr-sl
    heat-cicd-queens-contrail41-sl
    heat-cicd-queens-dvr-sl
    heat-cicd-pike-contrail-stb-sl
    released-heat-cicd-pike-contrail41-sl
    released-heat-cicd-pike-dvr-sl
    released-heat-cicd-queens-contrail41-sl
    released-heat-cicd-queens-dvr-sl
    bm-cicd-pike-ovs-maas
    bm-cicd-queens-ovs-maas
    heat-bm-cicd-pike-contrail-sl
    heat-bm-cicd-queens-contrail-sl
    bm-e7-cicd-pike-ovs-maas
    bm-e7-cicd-pike-odl-maas
    bm-b300-cicd-queens-ovs-maas
    bm-b300-e7-cicd-pike-ovs-maas
)

all_parameters=(
  auditd_enabled
  barbican_enabled
  barbican_backend
  barbican_integration_enabled
  jenkins_slave_type
  updates_mirantis_version
  bmk_enabled
  ceph_enabled
  ceph_version
  cicd_enabled
  ceph_osd_backend
  ceph_osd_mode
  ceph_osd_data_disks
  ceph_osd_journal_or_block_db_disks
  ceph_osds_per_device
  ceph_osd_data_size
  ceph_osd_journal_size
  ceph_osd_block_db_size
  ceph_osd_dmcrypt
  ceph_osd_node_count
  ceph_osd_bond_mode
  ceph_hyper_converged
  rbd_monitoring_enabled
  cinder_backup_engine
  compute_padding_with_zeros
  designate_enabled
  designate_backend
  fluentd_enabled
  rsync_fernet_rotation
  gainsight_service_enabled
  galera_ssl_enabled
  internal_proxy_enabled
  ironic_enabled
  kqueen_custom_mail_enabled
  kqueen_enabled
  kubernetes_enabled
  maas_dhcp_enabled
  maas_enabled
  manila_enabled
  mcp_version
  nova_vnc_tls_enabled
  octavia_manager_cluster
  octavia_amphora_topology
  octavia_spare_amphora_pool_size
  opencontrail_api_ssl_enabled
  opencontrail_enabled
  opencontrail_version
  openldap_enabled
  openscap_enabled
  openstack_enabled
  openstack_cluster_size
  openstack_mysql_x509_enabled
  openstack_nfv_dpdk_enabled
  openstack_nfv_sriov_enabled
  openstack_network_engine
  openstack_nova_compute_nfv_req_enabled
  openstack_octavia_enabled
  openstack_ovs_dvr_enabled
  openstack_rabbitmq_x509_enabled
  openstack_version
  platform
  rabbitmq_ssl_enabled
  openstack_rabbitmq_standalone_mode
  secrets_encryption_enabled
  stacklight_enabled
  stacklight_ssl_enabled
  stacklight_version
  static_ips_on_deploy_network_enabled
  tenant_telemetry_enabled
  upstream_proxy_enabled
  version

)

function split_string
{
  str=$1

  IFS=':' #  set as delimiter
  read -r id value <<< "$str" # str is read into an array as tokens separated by IFS
  unset IFS
  echo ${value}
}


function collect_parameter
{
  env=$1
  parameter_key=$2

  key_value=$(grep -w $parameter_key: tcp_tests/templates/$env/salt-context-cookiecutter*.yaml);
  echo $(split_string "$key_value")
}

function clean
{
    str=$1
    # first, strip underscores
    CLEAN=${str//[^a-zA-Z0-9_.\/\{\}:]/}
    CLEAN=`echo -n $CLEAN | tr A-Z a-z`
  echo $CLEAN
}

function html_color
{
    str=$(clean $1)
  if [ "$str" == "False" -o "$str" == "false" ]; then
       echo "bgcolor=\"#ff9999\"";
    fi
    if [ "$str" == "True" -o "$str" == "true" ]; then
       echo "bgcolor=\"#99cc99\"";
    fi

}

function unpack_parameters
{
 for param in ${all_parameters[@]}; do
    echo "<tr>";
    echo "<td>";
    echo "$param"
    echo "</td>";
    for env in ${list_of_envs[@]}; do
      value=$(collect_parameter "$env" "$param")
      echo "<td $(html_color $value)>";
      echo $(clean $value)
      echo "</td>";
    done;
    echo "</tr>";
  done;
}

function unpack_envs
{

  echo "<tr>";
  echo "<th>"
  echo "</th>"
  for env in ${list_of_envs[@]}; do
    echo "<th>";
    echo "$env"
    echo "</th>";
  done;
  echo "</tr>";

}

function write_page
{
  cat <<- _EOF_
      <html>
          <head>
              <title>$TITLE</title>
          </head>
        <body>
          <h1>$TITLE</h1>
          <p>$TIME_STAMP</p>
          <table border=1 style="border-collapse:collapse;border-spacing:0">
            $(unpack_envs)
          $(unpack_parameters)
          </table>
        </body>
      </html>
_EOF_
}


filename=report.html

write_page > $filename