#!/bin/bash

function load_config() {
  if [[ -e $HOME/.ibm-mas/cli.env ]]; then
    source $HOME/.ibm-mas/cli.env
  fi
}

function save_config() {
  if [[ ! -d $HOME/.ibm-mas ]]; then
    mkdir $HOME/.ibm-mas
  fi

  cat << EOF > $HOME/.ibm-mas/cli.env
export SKIP_PRE_CHECK=$SKIP_PRE_CHECK
export IMAGE_PULL_POLICY=$IMAGE_PULL_POLICY

export ARTIFACTORY_USERNAME=$ARTIFACTORY_USERNAME
export ARTIFACTORY_TOKEN=$ARTIFACTORY_TOKEN

export IBM_ENTITLEMENT_KEY=$IBM_ENTITLEMENT_KEY

export MAS_INSTANCE_ID=$MAS_INSTANCE_ID
export MAS_WORKSPACE_ID=$MAS_WORKSPACE_ID
export MAS_WORKSPACE_NAME="$MAS_WORKSPACE_NAME"
export MAS_ANNOTATIONS="$MAS_ANNOTATIONS"

export MAS_CATALOG_SELECTION=$MAS_CATALOG_SELECTION
export MAS_CHANNEL_SELECTION=$MAS_CHANNEL_SELECTION
export MAS_CHANNEL=$MAS_CHANNEL
export MAS_ICR_CP=$MAS_ICR_CP
export MAS_ICR_CPOPEN=$MAS_ICR_CPOPEN

export MAS_SUPERUSER_USERNAME=$MAS_SUPERUSER_USERNAME
export MAS_SUPERUSER_PASSWORD=$MAS_SUPERUSER_PASSWORD

export MAS_DOMAIN=$MAS_DOMAIN
export CLUSTER_ISSUER_SELECTION=$CLUSTER_ISSUER_SELECTION
export MAS_CLUSTER_ISSUER=$MAS_CLUSTER_ISSUER

export MAS_ROUTING_MODE=$MAS_ROUTING_MODE
export MAS_TRUST_DEFAULT_CAS=$MAS_TRUST_DEFAULT_CAS
export OCP_INGRESS_TLS_SECRET_NAME=$OCP_INGRESS_TLS_SECRET_NAME

# Additional Config Support
export LOCAL_MAS_CONFIG_DIR=$LOCAL_MAS_CONFIG_DIR

# Certificate Manager configuration
export CERT_MANAGER_PROVIDER=$CERT_MANAGER_PROVIDER
export CERT_MANAGER_ACTION=$CERT_MANAGER_ACTION

# DNS configuration
export DNS_PROVIDER_SELECTION=$DNS_PROVIDER_SELECTION
export CLOUDFLARE_EMAIL=$CLOUDFLARE_EMAIL
export CLOUDFLARE_APITOKEN=$CLOUDFLARE_APITOKEN
export CLOUDFLARE_ZONE=$CLOUDFLARE_ZONE
export CLOUDFLARE_SUBDOMAIN=$CLOUDFLARE_SUBDOMAIN
export CIS_EMAIL=$CIS_EMAIL
export CIS_APIKEY=$CIS_APIKEY
export CIS_CRN=$CIS_CRN
export CIS_SUBDOMAIN=$CIS_SUBDOMAIN

# Application configuration
export MAS_APP_INSTALL_IOT=$MAS_APP_INSTALL_IOT
export MAS_APP_INSTALL_MONITOR=$MAS_APP_INSTALL_MONITOR
export MAS_APP_INSTALL_MANAGE=$MAS_APP_INSTALL_MANAGE
export MAS_APP_INSTALL_PREDICT=$MAS_APP_INSTALL_PREDICT
export MAS_APP_INSTALL_OPTIMIZER=$MAS_APP_INSTALL_OPTIMIZER
export MAS_APP_INSTALL_ASSIST=$MAS_APP_INSTALL_ASSIST
export MAS_APP_INSTALL_VISUALINSPECTION=$MAS_APP_INSTALL_VISUALINSPECTION

export MAS_APP_CHANNEL_IOT=$MAS_APP_CHANNEL_IOT
export MAS_APP_CHANNEL_MONITOR=$MAS_APP_CHANNEL_MONITOR
export MAS_APP_CHANNEL_MANAGE=$MAS_APP_CHANNEL_MANAGE
export MAS_APP_CHANNEL_PREDICT=$MAS_APP_CHANNEL_PREDICT
export MAS_APP_CHANNEL_OPTIMIZER=$MAS_APP_CHANNEL_OPTIMIZER
export MAS_APP_PLAN_OPTIMIZER=$MAS_APP_PLAN_OPTIMIZER
export MAS_APP_CHANNEL_ASSIST=$MAS_APP_CHANNEL_ASSIST
export MAS_APP_CHANNEL_VISUALINSPECTION=$MAS_APP_CHANNEL_VISUALINSPECTION

# SLS
export SLS_LICENSE_FILE_LOCAL=$SLS_LICENSE_FILE_LOCAL
export SLS_ENTITLEMENT_FILE=$SLS_ENTITLEMENT_FILE
export SLS_ICR_CPOPEN=$SLS_ICR_CPOPEN

# MongoDB
export MONGODB_NAMESPACE=$MONGODB_NAMESPACE
export MONGODB_ACTION=$MONGODB_ACTION

# DRO
export DRO_CONTACT_EMAIL="$DRO_CONTACT_EMAIL"
export DRO_CONTACT_FIRSTNAME="$DRO_CONTACT_FIRSTNAME"
export DRO_CONTACT_LASTNAME="$DRO_CONTACT_LASTNAME"

# ECK
export ECK_ENABLE_ELASTICSEARCH="$ECK_ENABLE_ELASTICSEARCH"
export ECK_ENABLE_KIBANA="$ECK_ENABLE_KIBANA"
export ECK_ENABLE_LOGSTASH="$ECK_ENABLE_LOGSTASH"
export ECK_ENABLE_FILEBEAT="$ECK_ENABLE_FILEBEAT"

export ECK_REMOTE_ES_HOSTS="$ECK_REMOTE_ES_HOSTS"
export ECK_REMOTE_ES_USERNAME="$ECK_REMOTE_ES_USERNAME"
export ECK_REMOTE_ES_PASSWORD="$ECK_REMOTE_ES_PASSWORD"

# Air Gap
export REGISTRY_USERNAME="$REGISTRY_USERNAME"
export REGISTRY_PASSWORD="$REGISTRY_PASSWORD"

export REGISTRY_PUBLIC_HOST="$REGISTRY_PUBLIC_HOST"
export REGISTRY_PUBLIC_PORT="$REGISTRY_PUBLIC_PORT"
export REGISTRY_PREFIX="$REGISTRY_PREFIX"
export REGISTRY_PRIVATE_HOST="$REGISTRY_PRIVATE_HOST"
export REGISTRY_PRIVATE_PORT="$REGISTRY_PRIVATE_PORT"
export REGISTRY_PRIVATE_CA_FILE="$REGISTRY_PRIVATE_CA_FILE"

export MIRROR_MODE_SELECTION="$MIRROR_MODE_SELECTION"
export OCP_RELEASE_SELECTION="$OCP_RELEASE_SELECTION"
export MIRROR_REDHAT_PLATFORM="$MIRROR_REDHAT_PLATFORM"
export MIRROR_REDHAT_OPERATORS="$MIRROR_REDHAT_OPERATORS"

export MIRROR_WORKING_DIR="$MIRROR_WORKING_DIR"
export REDHAT_PULLSECRET="$REDHAT_PULLSECRET"
export OCP_MIN_VERSION="$OCP_MIN_VERSION"
export OCP_MAX_VERSION="$OCP_MAX_VERSION"

export CLI_IMAGE_DIGEST="$CLI_IMAGE_DIGEST"

# Provisioning
export CLUSTER_NAME=$CLUSTER_NAME
export IBMCLOUD_APIKEY=$IBMCLOUD_APIKEY
export IBMCLOUD_RESOURCEGROUP=$IBMCLOUD_RESOURCEGROUP
export FYRE_USERNAME=$FYRE_USERNAME
export FYRE_APIKEY=$FYRE_APIKEY
export FYRE_PRODUCT_ID=$FYRE_PRODUCT_ID
export FYRE_CLUSTER_DESCRIPTION="$FYRE_CLUSTER_DESCRIPTION"
export FYRE_QUOTA_TYPE=$FYRE_QUOTA_TYPE
export FYRE_WORKER_COUNT=$FYRE_WORKER_COUNT
export FYRE_WORKER_CPU=$FYRE_WORKER_CPU
export FYRE_WORKER_MEMORY=$FYRE_WORKER_MEMORY

# Turbonomic
export TURBONOMIC_TARGET_NAME="$TURBONOMIC_TARGET_NAME"
export TURBONOMIC_SERVER_URL="$TURBONOMIC_SERVER_URL"
export TURBONOMIC_SERVER_VERSION="$TURBONOMIC_SERVER_VERSION"
export TURBONOMIC_USERNAME="$TURBONOMIC_USERNAME"
export TURBONOMIC_PASSWORD="$TURBONOMIC_PASSWORD"

# Kafka - Common
export KAFKA_PROVIDER=$KAFKA_PROVIDER

# Kafka - AMQ Streams & Strimzi
export KAFKA_NAMESPACE=$KAFKA_NAMESPACE
export KAFKA_VERSION=$KAFKA_VERSION
export KAFKA_ACTION_SYSTEM=$KAFKA_ACTION_SYSTEM

# Kafka - Event Streams
export EVENTSTREAMS_RESOURCEGROUP=$EVENTSTREAMS_RESOURCEGROUP
export EVENTSTREAMS_NAME=$EVENTSTREAMS_NAME
export EVENTSTREAMS_LOCATION=$EVENTSTREAMS_LOCATION

# Kafka - AWS MSK
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export VPC_ID=$VPC_ID
export AWS_REGION=$AWS_REGION
export AWS_KAFKA_USER_NAME=$AWS_KAFKA_USER_NAME
export AWS_KAFKA_USER_PASSWORD=$AWS_KAFKA_USER_PASSWORD
export AWS_MSK_INSTANCE_TYPE=$AWS_MSK_INSTANCE_TYPE
export AWS_MSK_VOLUME_SIZE=$AWS_MSK_VOLUME_SIZE
export AWS_MSK_INSTANCE_NUMBER=$AWS_MSK_INSTANCE_NUMBER
export AWS_MSK_CIDR_AZ1=$AWS_MSK_CIDR_AZ1
export AWS_MSK_CIDR_AZ2=$AWS_MSK_CIDR_AZ2
export AWS_MSK_CIDR_AZ3=$AWS_MSK_CIDR_AZ3
export AWS_MSK_INGRESS_CIDR=$AWS_MSK_INGRESS_CIDR
export AWS_MSK_EGRESS_CIDR=$AWS_MSK_EGRESS_CIDR

# DB2
export DB2_NAMESPACE=$DB2_NAMESPACE
export DB2_ACTION_SYSTEM=$DB2_ACTION_SYSTEM
export DB2_ACTION_MANAGE=$DB2_ACTION_MANAGE
export DB2_TYPE=$DB2_TYPE
export DB2_TIMEZONE=$DB2_TIMEZONE

export DB2_SET_AFFINITY=$DB2_SET_AFFINITY
export DB2_AFFINITY_KEY=$DB2_AFFINITY_KEY
export DB2_AFFINITY_VALUE=$DB2_AFFINITY_VALUE

export DB2_SET_TOLERATIONS=$DB2_SET_TOLERATIONS
export DB2_TOLERATE_KEY=$DB2_TOLERATE_KEY
export DB2_TOLERATE_VALUE=$DB2_TOLERATE_VALUE
export DB2_TOLERATE_EFFECT=$DB2_TOLERATE_EFFECT

export DB2_CPU_REQUESTS=$DB2_CPU_REQUESTS
export DB2_CPU_LIMITS=$DB2_CPU_LIMITS
export DB2_MEMORY_REQUESTS=$DB2_MEMORY_REQUESTS
export DB2_MEMORY_LIMITS=$DB2_MEMORY_LIMITS

export DB2_META_STORAGE_SIZE=$DB2_META_STORAGE_SIZE
export DB2_DATA_STORAGE_SIZE=$DB2_DATA_STORAGE_SIZE
export DB2_BACKUP_STORAGE_SIZE=$DB2_BACKUP_STORAGE_SIZE
export DB2_LOGS_STORAGE_SIZE=$DB2_LOGS_STORAGE_SIZE
export DB2_TEMP_STORAGE_SIZE=$DB2_TEMP_STORAGE_SIZE

# Manage settings
export MAS_APPWS_BINDINGS_JDBC_MANAGE=$MAS_APPWS_BINDINGS_JDBC_MANAGE
export MAS_APPWS_COMPONENTS=$MAS_APPWS_COMPONENTS
export MAS_APP_SETTINGS_DB2_SCHEMA=$MAS_APP_SETTINGS_DB2_SCHEMA
export MAS_APP_SETTINGS_TABLESPACE=$MAS_APP_SETTINGS_TABLESPACE
export MAS_APP_SETTINGS_INDEXSPACE=$MAS_APP_SETTINGS_INDEXSPACE

export MAS_APP_SETTINGS_CRYPTO_KEY=$MAS_APP_SETTINGS_CRYPTO_KEY
export MAS_APP_SETTINGS_CRYPTOX_KEY=$MAS_APP_SETTINGS_CRYPTOX_KEY
export MAS_APP_SETTINGS_OLD_CRYPTO_KEY=$MAS_APP_SETTINGS_OLD_CRYPTO_KEY
export MAS_APP_SETTINGS_OLD_CRYPTOX_KEY=$MAS_APP_SETTINGS_OLD_CRYPTOX_KEY
export MAS_APP_SETTINGS_OVERRIDE_ENCRYPTION_SECRETS_FLAG=$MAS_APP_SETTINGS_OVERRIDE_ENCRYPTION_SECRETS_FLAG

export MAS_APP_SETTINGS_SERVER_BUNDLES_SIZE=$MAS_APP_SETTINGS_SERVER_BUNDLES_SIZE

export MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_NAME=$MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_NAME
export MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_URL=$MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_URL
export MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_USERNAME=$MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_USERNAME
export MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_PASSWORD=$MAS_APP_SETTINGS_CUSTOMIZATION_ARCHIVE_PASSWORD

export MAS_APP_SETTINGS_BASE_LANG=$MAS_APP_SETTINGS_BASE_LANG
export MAS_APP_SETTINGS_SECONDARY_LANGS=$MAS_APP_SETTINGS_SECONDARY_LANGS
export MAS_APP_SETTINGS_SERVER_TIMEZONE=$MAS_APP_SETTINGS_SERVER_TIMEZONE

export MAS_APP_SETTINGS_TABLESPACE=$MAS_APP_SETTINGS_TABLESPACE
export MAS_APP_SETTINGS_INDEXSPACE=$MAS_APP_SETTINGS_INDEXSPACE
export MAS_APP_SETTINGS_DB2_SCHEMA=$MAS_APP_SETTINGS_DB2_SCHEMA

# CP4D
export CP4D_VERSION=$CP4D_VERSION
export CPD_PRODUCT_VERSION=$CP4D_VERSION
export CPD_INSTALL_COGNOS$CPD_INSTALL_COGNOS

# Grafana
export GRAFANA_NAMESPACE=$GRAFANA_NAMESPACE

# PodTemplates
export MAS_POD_TEMPLATES_DIR=$MAS_POD_TEMPLATES_DIR

# Manual Certificates
export MAS_MANUAL_CERT_MGMT=$MAS_MANUAL_CERT_MGMT

# Guided Tour
export MAS_ENABLE_WALKME=$MAS_ENABLE_WALKME

EOF
}
