#!/bin/bash -e
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

function usage() {
    cat << USAGE
Usage: ./deploy-cloudstack-secret [OPTIONS]...
To deploy the keys needed for the cloudstack kubernetes provider.
Arguments:
  -u, --url string         URL of the CloudStack API
  -k, --key string         API Key
  -s, --secret string      Secret Key
  -p, --project string     Project ID
Other arguments:
  -h, --help              Display this help message and exit
Examples:
  ./deploy-cloudstack-secret -u http://10.10.10.10:8080/client/api -k abcd -s efgh
USAGE
    exit 0
}
API_URL=""
API_KEY=""
SECRET_KEY=""
PROJECT_ID=""
PROJECT=""
while [ -n "$1" ]; do
    case "$1" in
        -h | --help)
            usage
            ;;
        -u | --url)
            API_URL=$2
            shift 2
            ;;
        -k | --key)
            API_KEY=$2
            shift 2
            ;;
        -s | --secret)
            SECRET_KEY=$2
            shift 2
            ;;
        -p | --project)
            PROJECT_ID=$2
            shift 2
            PROJECT="project-id = $PROJECT_ID"
            ;;
        -*|*)
            echo "ERROR: no such option $1. -h or --help for help"
            exit 1
            ;;
    esac
done
cat > /tmp/cloud-config <<EOF
[Global]
api-url = $API_URL
api-key = $API_KEY
secret-key = $SECRET_KEY
$PROJECT
EOF

# Create secret if not exists
/opt/bin/kubectl -n kube-system get secret cloudstack-secret || /opt/bin/kubectl -n kube-system create secret generic cloudstack-secret --from-file=/tmp/cloud-config
rm /tmp/cloud-config
