Merge pull request #108429 from dims/allow-env-var-to-be-remote-url

Allow KUBE_TEST_REPO_LIST to be a remote url as well
This commit is contained in:
Kubernetes Prow Robot 2022-03-02 08:07:16 -08:00 committed by GitHub
commit 4737127b57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 5 deletions

View File

@ -17,9 +17,13 @@ limitations under the License.
package image package image
import ( import (
"bufio"
"bytes"
"crypto/sha256" "crypto/sha256"
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"io"
"net/http"
"os" "os"
"regexp" "regexp"
"strings" "strings"
@ -72,9 +76,20 @@ func initReg() RegistryList {
return registry return registry
} }
fileContent, err := os.ReadFile(repoList) 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 { if err != nil {
panic(fmt.Errorf("Error reading '%v' file contents: %v", repoList, err)) 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, &registry) err = yaml.Unmarshal(fileContent, &registry)
@ -84,6 +99,27 @@ func initReg() RegistryList {
return registry 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 ( var (
initRegistry = RegistryList{ initRegistry = RegistryList{
GcAuthenticatedRegistry: "gcr.io/authenticated-image-pulling", GcAuthenticatedRegistry: "gcr.io/authenticated-image-pulling",