#!/bin/bash # # Copyright 2024 Apollo Authors # # Licensed 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. # # title openapi.sh # description functions to call openapi through http # author wxq # date 2021-09-12 # Chinese reference website https://www.apolloconfig.com/#/zh/portal/apollo-open-api-platform # English reference website https://www.apolloconfig.com/#/en/portal/apollo-open-api-platform ####################################### Global variables ####################################### # portal's address, just support 1 address without suffix '/' # Don't use http://ip:port/ with suffix '/' or multiple address http://ip1:port1,http://ip2:port2 APOLLO_PORTAL_ADDRESS=${APOLLO_PORTAL_ADDRESS:-http://ip:port} APOLLO_OPENAPI_TOKEN=${APOLLO_OPENAPI_TOKEN:-please_change_me_by_environment_variable} CURL_OPTIONS=${CURL_OPTIONS:-} echo "apollo portal address: ${APOLLO_PORTAL_ADDRESS}" echo "curl options: ${CURL_OPTIONS}" ####################################### end of Global variables ####################################### ####################################### basic http call ####################################### ####################################### # Http get by curl. # Globals: # APOLLO_PORTAL_ADDRESS: portal's address # APOLLO_OPENAPI_TOKEN: openapi's token # CURL_OPTIONS: options in curl # Arguments: # url_suffix ####################################### function openapi_get() { local url_suffix=$1 local url="${APOLLO_PORTAL_ADDRESS}/${url_suffix}" curl ${CURL_OPTIONS} --header "Authorization: ${APOLLO_OPENAPI_TOKEN}" --header "Content-Type: application/json;charset=UTF-8" "${url}" } ####################################### # Http post by curl. # Globals: # APOLLO_PORTAL_ADDRESS: portal's address # APOLLO_OPENAPI_TOKEN: openapi's token # CURL_OPTIONS: options in curl # Arguments: # url_suffix # body ####################################### function openapi_post() { local url_suffix=$1 local body=$2 local url="${APOLLO_PORTAL_ADDRESS}/${url_suffix}" curl ${CURL_OPTIONS} --header "Authorization: ${APOLLO_OPENAPI_TOKEN}" --header "Content-Type: application/json;charset=UTF-8" --data "${body}" "${url}" } ####################################### # Http put by curl. # Globals: # APOLLO_PORTAL_ADDRESS: portal's address # APOLLO_OPENAPI_TOKEN: openapi's token # CURL_OPTIONS: options in curl # Arguments: # url_suffix # body ####################################### function openapi_put() { local url_suffix=$1 local body=$2 local url="${APOLLO_PORTAL_ADDRESS}/${url_suffix}" curl ${CURL_OPTIONS} --header "Authorization: ${APOLLO_OPENAPI_TOKEN}" --header "Content-Type: application/json;charset=UTF-8" -X PUT --data "${body}" "${url}" } ####################################### # Http delete by curl. # Globals: # APOLLO_PORTAL_ADDRESS: portal's address # APOLLO_OPENAPI_TOKEN: openapi's token # CURL_OPTIONS: options in curl # Arguments: # url_suffix # body ####################################### function openapi_delete() { local url_suffix=$1 local body=$2 local url="${APOLLO_PORTAL_ADDRESS}/${url_suffix}" curl ${CURL_OPTIONS} --header "Authorization: ${APOLLO_OPENAPI_TOKEN}" --header "Content-Type: application/json;charset=UTF-8" -X DELETE --data "${body}" "${url}" } ####################################### end of basic http call ####################################### ####################################### cluster ####################################### ####################################### # Get cluster. # 获取集群 # Arguments: # env # appId # clusterName ####################################### function cluster_get() { local env=$1 local appId=$2 local clusterName=$3 openapi_get "openapi/v1/envs/${env}/apps/${appId}/clusters/${clusterName}" } ####################################### # Create cluster in app's environment. # 创建集群 # Arguments: # env # appId # clusterName # dataChangeCreatedBy ####################################### function cluster_create() { local env=$1 local appId=$2 local clusterName=$3 local dataChangeCreatedBy=$4 openapi_post "openapi/v1/envs/${env}/apps/${appId}/clusters" "$(cat <