boot.img: more compression options
This commit is contained in:
parent
12ade36fd1
commit
7f331cb9c6
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
|
"compress/gzip"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
@ -40,11 +41,29 @@ func buildBootImg(out io.Writer, ctx *renderContext) (err error) {
|
|||||||
|
|
||||||
// send the result
|
// send the result
|
||||||
bootImg.Seek(0, os.SEEK_SET)
|
bootImg.Seek(0, os.SEEK_SET)
|
||||||
|
io.Copy(out, bootImg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildBootImgLZ4(out io.Writer, ctx *renderContext) (err error) {
|
||||||
lz4Out := lz4.NewWriter(out)
|
lz4Out := lz4.NewWriter(out)
|
||||||
io.Copy(lz4Out, bootImg)
|
|
||||||
lz4Out.Close()
|
|
||||||
|
|
||||||
|
if err = buildBootImg(lz4Out, ctx); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
lz4Out.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildBootImgGZ(out io.Writer, ctx *renderContext) (err error) {
|
||||||
|
gzOut := gzip.NewWriter(out)
|
||||||
|
|
||||||
|
if err = buildBootImg(gzOut, ctx); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
gzOut.Close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,9 +165,15 @@ func renderHost(w http.ResponseWriter, r *http.Request, what string, host *clust
|
|||||||
case "boot.tar":
|
case "boot.tar":
|
||||||
err = renderCtx(w, r, ctx, "boot.tar", buildBootTar)
|
err = renderCtx(w, r, ctx, "boot.tar", buildBootTar)
|
||||||
|
|
||||||
case "boot.img.lz4":
|
case "boot.img":
|
||||||
err = renderCtx(w, r, ctx, what, buildBootImg)
|
err = renderCtx(w, r, ctx, what, buildBootImg)
|
||||||
|
|
||||||
|
case "boot.img.gz":
|
||||||
|
err = renderCtx(w, r, ctx, what, buildBootImgGZ)
|
||||||
|
|
||||||
|
case "boot.img.lz4":
|
||||||
|
err = renderCtx(w, r, ctx, what, buildBootImgLZ4)
|
||||||
|
|
||||||
case "config":
|
case "config":
|
||||||
err = renderConfig(w, r, ctx)
|
err = renderConfig(w, r, ctx)
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ func renderStaticPods(w http.ResponseWriter, r *http.Request, ctx *renderContext
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO move somewhere logical
|
||||||
func renderCtx(w http.ResponseWriter, r *http.Request, ctx *renderContext, what string,
|
func renderCtx(w http.ResponseWriter, r *http.Request, ctx *renderContext, what string,
|
||||||
create func(out io.Writer, ctx *renderContext) error) error {
|
create func(out io.Writer, ctx *renderContext) error) error {
|
||||||
log.Printf("sending %s for %q", what, ctx.Host.Name)
|
log.Printf("sending %s for %q", what, ctx.Host.Name)
|
||||||
|
Loading…
Reference in New Issue
Block a user