+}
+
+function build_source_calico {
+ mkdir -p ${SCRIPTDIR}/addons/calico
+ curl -sL https://docs.projectcalico.org/archive/${CALICO_VERSION%.*}/manifests/calico.yaml -o ${SCRIPTDIR}/addons/calico/calico.yaml
+ # Remove trailing whitespace so that kubectl create configmap
+ # doesn't insert explicit newlines
+ sed -i -r 's/\s+$//g' ${SCRIPTDIR}/addons/calico/calico.yaml
+ cat <<EOF >${SCRIPTDIR}/addons/calico/ip-autodetection-method-patch.yaml
+kind: DaemonSet
+apiVersion: apps/v1
+metadata:
+ name: calico-node
+ namespace: kube-system
+spec:
+ template:
+ spec:
+ containers:
+ - name: calico-node
+ env:
+ - name: IP_AUTODETECTION_METHOD
+ value: can-reach=www.google.com
+EOF
+ cat <<EOF >${SCRIPTDIR}/addons/calico/kustomization.yaml
+resources:
+- calico.yaml
+patches:
+- path: ip-autodetection-method-patch.yaml
+EOF
+ kustomize build ${SCRIPTDIR}/addons/calico >${SCRIPTDIR}/addons/calico.yaml
+ cat <<EOF >${SCRIPTDIR}/templates/calico-addon.yaml
+{{- if eq .Values.cni "calico" }}
+---
+$(kubectl create configmap calico-addon --from-file=${SCRIPTDIR}/addons/calico.yaml -o yaml --dry-run=client)
+{{- end }}
+EOF
+ sed -i -e 's/ name: calico-addon/ name: {{ .Values.clusterName }}-calico-addon/' ${SCRIPTDIR}/templates/calico-addon.yaml
+}