From 6f3765b731a713851f297958017156894ba0cc5e Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 1 Mar 2022 13:43:45 -0500 Subject: [PATCH 1/2] Allow KUBE_TEST_REPO_LIST to be a remote url as well Signed-off-by: Davanum Srinivas --- test/utils/image/manifest.go | 42 +++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/test/utils/image/manifest.go b/test/utils/image/manifest.go index 0715e2d9868..398b3ee8bb7 100644 --- a/test/utils/image/manifest.go +++ b/test/utils/image/manifest.go @@ -17,9 +17,13 @@ limitations under the License. package image import ( + "bufio" + "bytes" "crypto/sha256" "encoding/base64" "fmt" + "io" + "net/http" "os" "regexp" "strings" @@ -72,9 +76,20 @@ func initReg() RegistryList { return registry } - fileContent, err := os.ReadFile(repoList) - if err != nil { - panic(fmt.Errorf("Error reading '%v' file contents: %v", repoList, err)) + var fileContent []byte + var err error + if strings.HasPrefix(repoList, "https://") || strings.HasPrefix(repoList, "http://") { + var b bytes.Buffer + err = readFromURL(repoList, bufio.NewWriter(&b)) + if err != nil { + panic(fmt.Errorf("error reading '%v' url contents: %v", repoList, err)) + } + fileContent = b.Bytes() + } else { + fileContent, err = os.ReadFile(repoList) + if err != nil { + panic(fmt.Errorf("error reading '%v' file contents: %v", repoList, err)) + } } err = yaml.Unmarshal(fileContent, ®istry) @@ -84,6 +99,27 @@ func initReg() RegistryList { return registry } +// Essentially curl url | writer +func readFromURL(url string, writer io.Writer) error { + httpTransport := new(http.Transport) + httpTransport.Proxy = http.ProxyFromEnvironment + + c := &http.Client{Transport: httpTransport} + r, err := c.Get(url) + if err != nil { + return err + } + defer r.Body.Close() + if r.StatusCode >= 400 { + return fmt.Errorf("%v returned %d", url, r.StatusCode) + } + _, err = io.Copy(writer, r.Body) + if err != nil { + return err + } + return nil +} + var ( initRegistry = RegistryList{ GcAuthenticatedRegistry: "gcr.io/authenticated-image-pulling", From 08af9935a5b5f300e49a89aa5bcb315b9f1e2a5e Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 1 Mar 2022 22:54:31 -0500 Subject: [PATCH 2/2] fix broken find command Signed-off-by: Davanum Srinivas --- cluster/gce/gci/configure.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster/gce/gci/configure.sh b/cluster/gce/gci/configure.sh index e4ea5fbd70a..c2792a2ffde 100644 --- a/cluster/gce/gci/configure.sh +++ b/cluster/gce/gci/configure.sh @@ -427,9 +427,9 @@ function install-kube-manifests { tar xzf "${KUBE_HOME}/${manifests_tar}" -C "${dst_dir}" --overwrite local -r kube_addon_registry="${KUBE_ADDON_REGISTRY:-k8s.gcr.io}" if [[ "${kube_addon_registry}" != "k8s.gcr.io" ]]; then - find "${dst_dir}" \(-name '*.yaml' -or -name '*.yaml.in'\) -print0 | \ + find "${dst_dir}" \( -name '*.yaml' -or -name '*.yaml.in' \) -print0 | \ xargs -0 sed -ri "s@(image:\s.*)k8s.gcr.io@\1${kube_addon_registry}@" - find "${dst_dir}" \(-name '*.manifest' -or -name '*.json'\) -print0 | \ + find "${dst_dir}" \( -name '*.manifest' -or -name '*.json' \) -print0 | \ xargs -0 sed -ri "s@(image\":\s+\")k8s.gcr.io@\1${kube_addon_registry}@" fi cp "${dst_dir}/kubernetes/gci-trusty/gci-configure-helper.sh" "${KUBE_BIN}/configure-helper.sh"