Remove invalid characters from Flux resource names
[icn.git] / deploy / site / common.sh
index ffd8103..49fa6b2 100644 (file)
@@ -6,7 +6,7 @@ FLUX_SOPS_PRIVATE_KEY="$(readlink -f $(dirname ${BASH_SOURCE[0]}))/secrets/sops.
 SITE_NAMESPACE="${SITE_NAMESPACE:-metal3}"
 
 function _gpg_key_fp {
-    gpg --with-colons --list-secret-keys $1 | awk -F: '/fpr/ {print $10;exit}'
+    gpg --with-colons --fingerprint $1 | awk -F: '/fpr/ {print $10;exit}'
 }
 
 function sops_encrypt {
@@ -58,14 +58,16 @@ function sops_decrypt {
 function _site_source_name {
     local -r url=$1
     local -r branch=$2
-    echo $(basename ${url})-${branch}
+    # Only alphanumeric and '-' are allowed in resource names
+    echo $(basename ${url})-${branch} | tr -d -c 'A-Za-z0-9-'
 }
 
 function _site_kustomization_name {
     local -r url=$1
     local -r branch=$2
     local -r path=$3
-    echo $(_site_source_name ${url} ${branch})-site-$(basename ${path})
+    # Only alphanumeric and '-' are allowed in resource names
+    echo $(_site_source_name ${url} ${branch})-site-$(basename ${path})  | tr -d -c 'A-Za-z0-9-'
 }
 
 function flux_create_site {
@@ -128,8 +130,10 @@ function site_wait_for_all_ready {
     wait_for _is_cluster_ready
     for yaml in ${SCRIPTDIR}/deployment/*.yaml; do
        name=$(awk '/clusterName:/ {print $2}' ${yaml})
-       clusterctl -n ${SITE_NAMESPACE} get kubeconfig ${name} >${BUILDDIR}/${name}-admin.conf
-       chmod 600 ${BUILDDIR}/${name}-admin.conf
+       if [[ ! -z ${name} ]]; then
+           clusterctl -n ${SITE_NAMESPACE} get kubeconfig ${name} >${BUILDDIR}/${name}-admin.conf
+           chmod 600 ${BUILDDIR}/${name}-admin.conf
+       fi
     done
     wait_for _is_control_plane_ready
 }
@@ -175,7 +179,11 @@ EOF
 function _is_cluster_deleted {
     for yaml in ${SCRIPTDIR}/deployment/*.yaml; do
        name=$(awk '/clusterName:/ {print $2}' ${yaml})
-       ! kubectl -n ${SITE_NAMESPACE} get cluster ${name}
+       if [[ ! -z ${name} ]]; then
+           if kubectl -n ${SITE_NAMESPACE} get cluster ${name}; then
+               return 1
+           fi
+       fi
     done
 }