1
0
Fork 0
mirror of https://github.com/imjasonh/kontain.me synced 2026-07-18 06:40:04 +00:00

thread contexts through

This commit is contained in:
Jason Hall 2021-01-02 07:57:31 -05:00
parent 87374b6124
commit 06e4bad278
5 changed files with 17 additions and 16 deletions

View file

@ -151,7 +151,7 @@ func (s *server) serveBuildpackManifest(w http.ResponseWriter, r *http.Request)
}
// Serve new image manifest.
img, err := s.getImage(image)
img, err := s.getImage(ctx, image)
if err != nil {
s.error.Println("ERROR:", err)
serve.Error(w, err)
@ -279,7 +279,7 @@ EOF`, tok.AccessToken),
return image, nil
}
func (s *server) getImage(image string) (v1.Image, error) {
func (s *server) getImage(ctx context.Context, image string) (v1.Image, error) {
ref, err := name.NewTag(image, name.WeakValidation)
if err != nil {
return nil, err
@ -288,5 +288,5 @@ func (s *server) getImage(image string) (v1.Image, error) {
if err != nil {
return nil, err
}
return remote.Image(ref, remote.WithAuth(authn))
return remote.Image(ref, remote.WithAuth(authn), remote.WithContext(ctx))
}

View file

@ -118,7 +118,7 @@ func (s *server) serveFlattenManifest(w http.ResponseWriter, r *http.Request) {
switch d.MediaType {
case types.DockerManifestList:
idx, err := remote.Index(ref)
idx, err := remote.Index(ref, remote.WithContext(ctx))
if err != nil {
s.error.Printf("ERROR (remote.Index): %v", err)
serve.Error(w, err)
@ -169,7 +169,7 @@ func (s *server) serveFlattenManifest(w http.ResponseWriter, r *http.Request) {
}
case types.DockerManifestSchema2:
img, err := remote.Image(ref)
img, err := remote.Image(ref, remote.WithContext(ctx))
if err != nil {
s.error.Printf("ERROR (remote.Image): %v", err)
serve.Error(w, err)

View file

@ -145,7 +145,7 @@ func (s *server) serveKanikoManifest(w http.ResponseWriter, r *http.Request) {
}
// Serve new image manifest.
img, err := s.getImage(image)
img, err := s.getImage(ctx, image)
if err != nil {
s.error.Println("ERROR:", err)
serve.Error(w, err)
@ -269,7 +269,7 @@ EOF`, tok.AccessToken),
return image, nil
}
func (s *server) getImage(image string) (v1.Image, error) {
func (s *server) getImage(ctx context.Context, image string) (v1.Image, error) {
ref, err := name.NewTag(image, name.WeakValidation)
if err != nil {
return nil, err
@ -278,5 +278,5 @@ func (s *server) getImage(image string) (v1.Image, error) {
if err != nil {
return nil, err
}
return remote.Image(ref, remote.WithAuth(authn))
return remote.Image(ref, remote.WithAuth(authn), remote.WithContext(ctx))
}

View file

@ -110,7 +110,7 @@ func (s *server) serveMirrorManifest(w http.ResponseWriter, r *http.Request) {
case types.DockerManifestList:
// If the image is a manifest list, fetch and mirror
// the image index.
idx, err := remote.Index(ref)
idx, err := remote.Index(ref, remote.WithContext(ctx))
if err != nil {
s.error.Printf("ERROR (remote.Index): %v", err)
serve.Error(w, err)
@ -124,7 +124,7 @@ func (s *server) serveMirrorManifest(w http.ResponseWriter, r *http.Request) {
case types.DockerManifestSchema2:
// If it's a simple image, fetch and mirror its
// manifest.
img, err := remote.Image(ref)
img, err := remote.Image(ref, remote.WithContext(ctx))
if err != nil {
s.error.Printf("ERROR (remote.Image): %v", err)
serve.Error(w, err)

View file

@ -1,6 +1,7 @@
package main
import (
"context"
"fmt"
"io"
"log"
@ -37,6 +38,7 @@ type server struct {
}
func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
s.info.Println("handler:", r.Method, r.URL)
if r.Method != http.MethodPost {
http.Error(w, "must be post", http.StatusMethodNotAllowed)
@ -44,14 +46,13 @@ func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
r.ParseForm()
log.Println(r.Form) // TODO
refs, err := images(r.FormValue("images"))
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
d, err := genDot(refs)
d, err := genDot(ctx, refs)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
@ -86,7 +87,7 @@ func images(s string) ([]name.Reference, error) {
return refs, nil
}
func genDot(refs []name.Reference) (string, error) {
func genDot(ctx context.Context, refs []name.Reference) (string, error) {
g := dot.NewGraph("images")
g.SetType(dot.DIGRAPH)
@ -98,7 +99,7 @@ func genDot(refs []name.Reference) (string, error) {
edges := map[string]bool{}
for _, ref := range refs {
layers, err := getLayers(ref)
layers, err := getLayers(ctx, ref)
if err != nil {
return "", fmt.Errorf("Failed to get layers for %q, ignoring: %v\n", ref, err)
}
@ -152,8 +153,8 @@ func short(layer v1.Descriptor) string {
return fmt.Sprintf("%s\n%s", layer.Digest.String()[7:19], humanize.Bytes(uint64(layer.Size)))
}
func getLayers(ref name.Reference) ([]v1.Descriptor, error) {
i, err := remote.Image(ref)
func getLayers(ctx context.Context, ref name.Reference) ([]v1.Descriptor, error) {
i, err := remote.Image(ref, remote.WithContext(ctx))
if err != nil {
return nil, fmt.Errorf("remote.Image: %v", err)
}