diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host index f91bf64c97..e4fd4cd92c 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host @@ -2,7 +2,7 @@ entry="169.254.169.254 metadata" -grep -q "${entry}" /etc/hosts +grep -qs "${entry}" /etc/hosts if [ $? -ne 0 ]; then echo ${entry} >> /etc/hosts diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit index 5df57a5d5e..f0eb855fd0 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit @@ -1,10 +1,32 @@ -#!/bin/bash -e +#!/bin/bash +URL_PREFIX="http://169.254.169.254/computeMetadata/v1/" TMPFILE=$(mktemp /tmp/XXXXXX-cloud-init) -trap 'echo "removing ${TMPFILE}"; rm -f ${TMPFILE}' INT TERM EXIT +if [[ $? -ne 0 || ! -f "${TMPFILE}" ]]; then + echo "Failed to create temp file for user-data" >&2 + exit 1 +fi +trap "rm -f '${TMPFILE}'" EXIT -curl --retry 5 --retry-delay 2 --silent --fail \ - "http://169.254.169.254/computeMetadata/v1/instance/attributes/user-data" \ - -H "X-Google-Metadata-Request: True" > ${TMPFILE} +try_cloudinit() { + local id="$1" + local url="${URL_PREFIX}${id}/attributes/user-data" -/usr/bin/coreos-cloudinit --from-file=${TMPFILE} + echo "Trying to fetch $id user-data..." + curl --retry 5 --retry-delay 2 --silent --fail --show-error \ + -H "X-Google-Metadata-Request: True" -o "${TMPFILE}" "${url}" + + ret=$? + if [[ $ret -ne 0 && $ret -ne 22 ]]; then + echo "curl failed with error code $ret" >&2 + return $ret + elif [[ $ret -eq 22 || ! -s "${TMPFILE}" ]]; then + echo "$id user-data is missing or empty, skipping" + return 0 + fi + + coreos-cloudinit --from-file="${TMPFILE}" + return $? +} + +try_cloudinit project && try_cloudinit instance diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild deleted file mode 120000 index aed2a55f1d..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild +++ /dev/null @@ -1 +0,0 @@ -oem-gce-0.0.1.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r4.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r6.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r4.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r6.ebuild