github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/config/scripts/oci_dns_ops.sh (about) 1 #!/bin/bash 2 # 3 # Copyright (c) 2020, 2022, Oracle and/or its affiliates. 4 # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 5 # 6 7 function usage { 8 echo 9 echo "usage: $0 [-o operation] [-c compartment_ocid] [-s subdomain_name] " 10 echo " -o operation 'create' or 'delete'. Optional. Defaults to 'create'." 11 echo " -c compartment_ocid Compartment OCID. Optional. Defaults to TIBURON-DEV compartment OCID." 12 echo " -s subdomain_name subdomain prefix for v8o.io. Required." 13 echo " -k DNS scope Specifies to operate only on resources that have a matching DNS scope.Optional. GLOBAL, PRIVATE" 14 echo " -h Help" 15 echo 16 exit 1 17 } 18 19 SUBDOMAIN_NAME="" 20 COMPARTMENT_OCID="${TF_VAR_compartment_id}" 21 OPERATION="create" 22 DNS_SCOPE="GLOBAL" 23 # view id for phx (default) 24 VCN_VIEW_ID="${VCN_VIEW_ID}" 25 log () { 26 echo "$(date '+[%Y-%m-%d %I:%M:%S %p]') : $1" 27 } 28 29 while getopts o:c:s:k:h flag 30 do 31 case "${flag}" in 32 o) OPERATION=${OPTARG};; 33 c) COMPARTMENT_OCID=${OPTARG};; 34 s) SUBDOMAIN_NAME=${OPTARG};; 35 k) DNS_SCOPE_INPUT=${OPTARG};; 36 h) usage;; 37 *) usage;; 38 esac 39 done 40 41 if [ -z "${SUBDOMAIN_NAME}" ] ; then 42 echo "subdomain name must be set!" 43 exit 1 44 fi 45 46 if [ ${TEST_ENV} != "kind_oci_dns" ] && [ ${DNS_SCOPE} == "PRIVATE" ]; then 47 if [ ${V80_COMPARTMENT_OCID} == "" ]; then 48 echo "Jenkins runner compartment ocid must be set!" 49 exit 1 50 fi 51 fi 52 53 if [ ${TEST_ENV} != "ocidns_oke" ] && [ ${TEST_ENV} != "kind_oci_dns" ]; then 54 if [ ${DNS_SCOPE} == "PRIVATE" ];then 55 echo "Invalid TEST_ENV for DNS_SCOPE=PRIVATE " ${TEST_ENV} 56 exit 1 57 fi 58 fi 59 60 61 if [ "${DNS_SCOPE_INPUT:-}" ] ; then 62 if [ ${DNS_SCOPE_INPUT} == "GLOBAL" ] || [ ${DNS_SCOPE_INPUT} == "PRIVATE" ]; then 63 DNS_SCOPE=${DNS_SCOPE_INPUT} 64 fi 65 fi 66 67 set -o pipefail 68 if [ ${DNS_SCOPE} == "PRIVATE" ];then 69 ZONE_NAME="${SUBDOMAIN_NAME}-private.v8o.io" 70 else 71 ZONE_NAME="${SUBDOMAIN_NAME}.v8o.io" 72 fi 73 74 zone_ocid="" 75 status_code=1 76 if [ $OPERATION == "create" ]; then 77 # the installation will require the "patch" command, so will install it now. If it's already installed yum should 78 # exit 79 sudo yum -y install patch >/dev/null 2>&1 80 81 if [ ${DNS_SCOPE} == "PRIVATE" ];then 82 zone_ocid=$(oci dns zone create -c ${COMPARTMENT_OCID} --name ${ZONE_NAME} --zone-type PRIMARY --scope ${DNS_SCOPE} --view-id ${VCN_VIEW_ID}| jq -r ".data | .[\"id\"]"; exit ${PIPESTATUS[0]}) 83 status_code=$? 84 if [ ${status_code} -ne 0 ]; then 85 log "Failed creating private zone, attempting to fetch zone to see if it already exists" 86 oci dns zone get --zone-name-or-id ${ZONE_NAME} 87 fi 88 89 if [ ${TEST_ENV} == "ocidns_oke" ]; then 90 VCN_ID=$(oci network vcn list --compartment-id "${COMPARTMENT_OCID}" --display-name "${TF_VAR_label_prefix}-oke-vcn" | jq -r '.data[0].id') 91 elif [ ${TEST_ENV} == "kind_oci_dns" ]; then 92 VCN_ID=$(oci network vcn list --compartment-id "${V80_COMPARTMENT_OCID}" --display-name ${JENKINS_VCN} | jq -r '.data[0].id') 93 fi 94 if [ $? -ne 0 ];then 95 log "Failed to fetch vcn '${TF_VAR_label_prefix}-oke-vcn'" 96 exit 1 97 fi 98 99 DNS_RESOLVER_ID=$(oci network vcn-dns-resolver-association get --vcn-id ${VCN_ID} | jq '.data["dns-resolver-id"]' -r) 100 DNS_UPDATE=$(oci dns resolver update --resolver-id ${DNS_RESOLVER_ID} --attached-views '[{"viewId":"'"${VCN_VIEW_ID}"'"}]' --scope PRIVATE --force) 101 if [ $? -ne 0 ];then 102 log "Failed to update vcn '${TF_VAR_label_prefix}-oke-vcn' with private view" 103 exit 1 104 fi 105 else 106 zone_ocid=$(oci dns zone create -c ${COMPARTMENT_OCID} --name ${ZONE_NAME} --zone-type PRIMARY --scope ${DNS_SCOPE} | jq -r ".data | .[\"id\"]"; exit ${PIPESTATUS[0]}) 107 status_code=$? 108 if [ ${status_code} -ne 0 ]; then 109 log "Failed creating public zone, attempting to fetch zone to see if it already exists" 110 oci dns zone get --zone-name-or-id ${ZONE_NAME} 111 fi 112 fi 113 114 elif [ $OPERATION == "delete" ]; then 115 DNS_ZONE_OCID=`(oci dns zone list --compartment-id ${COMPARTMENT_OCID} --scope ${DNS_SCOPE} --name ${ZONE_NAME} | jq -r '.data[].id')` 116 oci dns zone delete --zone-name-or-id ${DNS_ZONE_OCID} --scope ${DNS_SCOPE} --force 117 status_code=$? 118 if [ ${status_code} -ne 0 ]; then 119 log "DNS zone deletion failed on first try. Retrying once." 120 oci dns zone delete --zone-name-or-id ${DNS_ZONE_OCID} --scope ${DNS_SCOPE} --force 121 status_code=$? 122 fi 123 else 124 log "Unknown operation: ${OPERATION}" 125 usage 126 fi 127 128 if [ ${status_code} -eq 0 ]; then 129 # OCI CLI query succeeded 130 if [ $OPERATION == "create" ]; then 131 echo $zone_ocid 132 else 133 exit 0 134 fi 135 else 136 # OCI CLI generated an error exit code 137 log "Error invoking OCI CLI to perform DNS zone operation" 138 exit 1 139 fi