-# prepare a curl command
-# parameters: URL METHOD CURLOPTIONS EXTRA_HEADERS_AS_A_STRING AUTH_AS_USER:PASS DATA
-assemble_curl_command()
-{
- local URL="$1"
- local METHOD="$2"
- local CURLOPTIONS="$3"
- local EXTRA_HEADERS="$4"
- local AUTH="$5"
- local DATA="$6"
- local CMD=''
- if [ ! -z "$METHOD" ]; then
- CMD="curl $CURLOPTIONS $METHOD"
- else
- CMD="curl $CURLOPTIONS -X GET"
- fi
- if [ ! -z "$EXTRA_HEADERS" ]; then
- CMD="$CMD $EXTRA_HEADERS"
- fi
- if [ ! -z "$AUTH" ]; then
- CMD="$CMD $AUTH"
- fi
- if [ ! -z "$DATA" ]; then
- CMD="$CMD $DATA"
- fi
- CMD="$CMD $URL"
- echo "$CMD"
-}
-
-
-# Make a rest API call
-# parameters: URL METHOD expected_response_code EXTRA_HEADERS_AS_A_STRING AUTH_AS_USER:PASS DATA
-call_api_for_response_code()
-{
- local CURLOPTIONS='-kIso /dev/null -w "%{http_code}"'
- read -r CMDF <<-END
-$(assemble_curl_command "$1" "$2" "$CURLOPTIONS" "$4" "$5" "$6")
-END
- eval "$CMDF";
-}
-call_api_for_response_body()
-{
- local CURLOPTIONS='-ksb'
- read -r CMDF <<-END
-$(assemble_curl_command "$1" "$2" "$CURLOPTIONS" "$4" "$5" "$6")
-END
- eval "$CMDF"
-}
-call_api_for_response_header()
-{
- local CURLOPTIONS='-ks -o /dev/null -D -'
- read -r CMDF <<-END
-$(assemble_curl_command "$1" "$2" "$CURLOPTIONS" "$4" "$5" "$6")
-END
- eval "$CMDF"
-}
-call_api_for_verbose()
-{
- local CURLOPTIONS='-kIv'
- read -r CMDF <<-END
-$(assemble_curl_command "$1" "$2" "$CURLOPTIONS" "$4" "$5" "$6")
-END
- eval "$CMDF"
- #local TFILE=$(mktemp /tmp/curlcmd.XXXXXXXXX)
- #echo $CMD > $TFILE
- #eval $(cat $TFILE)
- #rm -f $TFILE
-}
-
-
-# Wait till a web service API return specified response code
-# parameters: URL METHOD EXPECTED_RESP_CODE EXTRA_HEADERS_AS_A_STRING AUTH_AS_USER:PASS DATA
-wait_for_api()
-{
- local RESP="$3"
- local ACTUALRESP
- ACTUALRESP=$(call_api_for_response_code "$1" "$2" "$3" "$4" "$5" "$6")
- while [ "$ACTUALRESP" != "$RESP" ]; do
- echo "RESP CODE $ACTUALRESP, not as expected RESP CODE $RESP @ $(date)."
- sleep 30
- ACTUALRESP=$(call_api_for_response_code "$1" "$2" "$3" "$4" "$5" "$6")
- done
- echo "RESP CODE $ACTUALRESP, matches with expected RESP CODE $RESP."
-}
-
-# Wait till a TCP port is open
-# parameters: HOST PORT
-wait_for_tcp_port()
-{
- local DEST="$1"
- local PORT="$2"
- while ! nc -z -w 1 "$DEST" "$PORT"; do
- sleep 4
- echo '.'
- done
-}
-
-
-
-
-wait_for_aai_ready()
-{
- # wait till A&AI up and ready
- local AAIHOST
- AAIHOST=$(cat /opt/config/aai1_ip_addr.txt)
- local AAIURL="https://$AAIHOST:8443/aai/v11/examples/cloud-regions"
- local AAIMETHOD='-X GET'
- local AAIRESP='200'
- local AAIHEADERS='-H "X-FromAppId: AAI-Temp-Tool" -H "X-TransactionId: AAI-Temp-Tool" -H "Real-Time: true" -H "Content-Type: application/json" -H "Accept: application/json"'
- local AAIAUTH='-u AAI:AAI'
- local AAIDATA=''
- echo "===> Waiting for A&AI to get ready for getting $AAIRESP from $AAIURL @ $(date)"
- wait_for_api "$AAIURL" "$AAIMETHOD" "$AAIRESP" "$AAIHEADERS" "$AAIAUTH" "$AAIDATA"
- echo "===> A&AI ready @ $(date)"
-}
-
-
-
-wait_for_multicloud_ready()
-{
- # wait till MultiCloud up and ready
- local MCHOST
- MCHOST=$(cat /opt/config/openo_ip_addr.txt)
- local MCURL="http://$MCHOST:9005/api/multicloud-titanium_cloud/v0/swagger.json"
- local MCMETHOD='-X GET'
- local MCRESP='200'
- local MCHEADERS='-H "Real-Time: true" -H "Content-Type: application/json" -H "Accept: application/json"'
- local MCAUTH=''
- local MCDATA=''
- echo "===> Waiting for MultiCloud to get ready for getting $MCRESP from $MCURL @ $(date)"
- wait_for_api "$MCURL" "$MCMETHOD" "$MCRESP" "$MCHEADERS" "$MCAUTH" "$MCDATA"
- echo "===> MultiCloud ready @ $(date)"
-}
-
-register_multicloud_pod25dns_with_aai()
-{
- # Register MultiCloud with A&AI
- local CLOUD_OWNER='pod25dns'
- local CLOUD_VERSION='titanium_cloud'
- local CLOUD_REGION
- local CLOUD_ENV
- local CLOUD_IDENTITY_URL
- local DNSAAS_SERVICE_URL
- local DNSAAS_USERNAME='demo'
- local DNSAAS_PASSWORD='onapdemo'
-
- CLOUD_REGION="$(cat /opt/config/dnsaas_region.txt)"
- CLOUD_ENV="$(cat /opt/config/cloud_env.txt)"
- MCIP="$(cat /opt/config/openo_ip_addr.txt)"
- CLOUD_IDENTITY_URL="http://${MCIP}/api/multicloud-titanium_cloud/v0/${CLOUD_OWNER}_${CLOUD_REGION}/identity/v2.0"
-
- local RESPCODE
- DNSAAS_SERVICE_URL="$(cat /opt/config/dnsaas_keystone_url.txt)"
- # a tenant of the same name must be set up on the Deisgnate providing OpenStack
- DNSAAS_TENANT_NAME="$(cat /opt/config/dnsaas_tenant_name.txt)"
- cat >"/tmp/${CLOUD_OWNER}_${CLOUD_REGION}.json" <<EOL
-{
- "cloud-owner" : "$CLOUD_OWNER",
- "cloud-region-id" : "$CLOUD_REGION",
- "cloud-region-version" : "$CLOUD_VERSION",
- "cloud-type" : "$CLOUD_ENV",
- "cloud-zone" : "cloud zone",
- "complex-name" : "complex name2",
- "identity-url": "$CLOUD_IDENTITY_URL",
- "owner-defined-type" : "owner-defined-type",
- "sriov-automation" : false,
- "esr-system-info-list" : {
- "esr-system-info" : [
- {
- "esr-system-info-id": "532ac032-e996-41f2-84ed-9c7a1766eb30",
- "cloud-domain": "Default",
- "default-tenant" : "$DNSAAS_TENANT_NAME",
- "user-name" : "$DNSAAS_USERNAME",
- "password" : "$DNSAAS_PASSWORD",
- "service-url" : "$DNSAAS_SERVICE_URL",
- "ssl-cacert": "example-ssl-cacert-val-75021",
- "ssl-insecure": true,
- "system-name": "example-system-name-val-29071",
- "system-type": "VIM",
- "ip-address": "example-ip-address-val-44432",
- "port": "example-port-val-93235",
- "type": "example-type-val-85255",
- "protocal": "example-protocal-val-52954",
- "vendor": "example-vendor-val-94515",
- "version": "example-version-val-71880"
- }
- ]
- }
-}
-EOL
-
-
- local REGHOST
- local REGURL
- local REGMETHOD='-X PUT'
- local REGHEADERS='-H "X-FromAppId: AAI-Temp-Tool" -H "X-TransactionId: AAI-Temp-Tool" -H "Real-Time: true" -H "Content-Type: application/json" -H "Accept: application/json"'
- local REGRESP='201'
- local REGAUTH='-u AAI:AAI'
- local REGDATA
-
- REGHOST="$(cat /opt/config/aai1_ip_addr.txt)"
- REGURL="https://$REGHOST:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/$CLOUD_OWNER/$CLOUD_REGION"
- REGDATA="-T /tmp/${CLOUD_OWNER}_${CLOUD_REGION}.json"
- echo "Register MultiCloud with A&AI owner $CLOUD_OWNER"
- RESP=$(call_api_for_response_code "$REGURL" "$REGMETHOD" "$REGRESP" "$REGHEADERS" "$REGAUTH" "$REGDATA")
- echo "RESP CODE: $RESP"
-}
-
-
-register_multicloud_pod25_with_aai()
-{
- # Register MultiCloud with A&AI
- local CLOUD_OWNER='pod25'
- local CLOUD_VERSION='titanium_cloud'
- local CLOUD_REGION
- local DNSAAS_CLOUD_REGION
- local CLOUD_ENV
- local MCIP
- local CLOUD_IDENTITY_URL
- local KEYSTONE_URL
- local USERNAME
- local PASSWORD
- local TENANT_NAME
-
- CLOUD_REGION="$(cat /opt/config/openstack_region.txt)"
- DNSAAS_CLOUD_REGION="$(cat /opt/config/dnsaas_region.txt)"
- CLOUD_ENV="$(cat /opt/config/cloud_env.txt)"
- MCIP="$(cat /opt/config/openo_ip_addr.txt)"
- CLOUD_IDENTITY_URL="http://${MCIP}/api/multicloud-titanium_cloud/v0/${CLOUD_OWNER}_${CLOUD_REGION}/identity/v2.0"
- KEYSTONE_URL="$(cat /opt/config/openstack_keystone_url.txt)"
- if [[ "$KEYSTONE_URL" == */v3 ]]; then
- echo "$KEYSTONE_URL"
- elif [[ "$KEYSTONE_URL" == */v2.0 ]]; then
- echo "$KEYSTONE_URL"
- else
- KEYSTONE_URL="${KEYSTONE_URL}/v3"
- echo "$KEYSTONE_URL"
- fi
- USERNAME="$(cat /opt/config/openstack_user.txt)"
- PASSWORD="$(cat /opt/config/openstack_password.txt)"
- TENANT_NAME="$(cat /opt/config/tenant_name.txt)"
- cat >"/tmp/${CLOUD_OWNER}_${CLOUD_REGION}.json" <<EOL
-{
- "cloud-owner" : "$CLOUD_OWNER",
- "cloud-region-id" : "$CLOUD_REGION",
- "cloud-region-version" : "$CLOUD_VERSION",
- "cloud-type" : "$CLOUD_ENV",
- "cloud-zone" : "cloud zone",
- "complex-name" : "complex name",
- "identity-url": "$CLOUD_IDENTITY_URL",
- "owner-defined-type" : "owner-defined-type",
- "sriov-automation" : false,
- "cloud-extra-info" : "{\"epa-caps\":{\"huge_page\":\"true\",\"cpu_pinning\":\"true\",\"cpu_thread_policy\":\"true\",\"numa_aware\":\"true\",\"sriov\":\"true\",\"dpdk_vswitch\":\"true\",\"rdt\":\"false\",\"numa_locality_pci\":\"true\"},\"dns-delegate\":{\"cloud-owner\":\"pod25dns\",\"cloud-region-id\":\"${DNSAAS_CLOUD_REGION}\"}}",
- "esr-system-info-list" : {
- "esr-system-info" : [
- {
- "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
- "cloud-domain": "Default",
- "default-tenant" : "$TENANT_NAME",
- "user-name" : "$USERNAME",
- "password" : "$PASSWORD",
- "service-url" : "$KEYSTONE_URL",
- "ssl-cacert": "example-ssl-cacert-val-75021",
- "ssl-insecure": true,
- "system-name": "example-system-name-val-29070",
- "system-type": "VIM",
- "ip-address": "example-ip-address-val-44431",
- "port": "example-port-val-93234",
- "type": "example-type-val-85254",
- "protocal": "example-protocal-val-52954",
- "vendor": "example-vendor-val-94515",
- "version": "example-version-val-71880"
- }
- ]
- }
-}
-EOL
-
- local REGHOST
- local REGURL
- local REGMETHOD='-X PUT'
- local REGHEADERS='-H "X-FromAppId: AAI-Temp-Tool" -H "X-TransactionId: AAI-Temp-Tool" -H "Real-Time: true" -H "Content-Type: application/json" -H "Accept: application/json"'
- local REGRESP='201'
- local REGAUTH='-u AAI:AAI'
- local REGDATA
-
- REGHOST="$(cat /opt/config/aai1_ip_addr.txt)"
- REGURL="https://$REGHOST:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/$CLOUD_OWNER/$CLOUD_REGION"
- REGDATA="-T /tmp/${CLOUD_OWNER}_${CLOUD_REGION}.json"
- echo "Register MultiCloud with A&AI owner $CLOUD_OWNER"
- RESP=$(call_api_for_response_code "$REGURL" "$REGMETHOD" "$REGRESP" "$REGHEADERS" "$REGAUTH" "$REGDATA")
- echo "RESP CODE: $RESP"
-}
-