本文整理汇总了Golang中github.com/containerops/wharf/models.Image.PutLayer方法的典型用法代码示例。如果您正苦于以下问题:Golang Image.PutLayer方法的具体用法?Golang Image.PutLayer怎么用?Golang Image.PutLayer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/containerops/wharf/models.Image
的用法示例。
在下文中一共展示了Image.PutLayer方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: PutImageLayer
func (this *ImageAPIV1Controller) PutImageLayer() {
imageId := string(this.Ctx.Input.Param(":image_id"))
image := new(models.Image)
basePath := beego.AppConfig.String("docker::BasePath")
imagePath := fmt.Sprintf("%v/images/%v", basePath, imageId)
layerfile := fmt.Sprintf("%v/images/%v/layer", basePath, imageId)
if !utils.IsDirExists(imagePath) {
os.MkdirAll(imagePath, os.ModePerm)
}
if _, err := os.Stat(layerfile); err == nil {
os.Remove(layerfile)
}
data, _ := ioutil.ReadAll(this.Ctx.Request.Body)
if err := ioutil.WriteFile(layerfile, data, 0777); err != nil {
this.JSONOut(http.StatusBadRequest, "Put Image Layer File Error", nil)
return
}
if err := image.PutLayer(imageId, layerfile, true, int64(len(data))); err != nil {
this.JSONOut(http.StatusBadRequest, "Put Image Layer File Data Error", nil)
return
}
memo, _ := json.Marshal(this.Ctx.Input.Header)
image.Log(models.ACTION_PUT_IMAGES_LAYER, models.LEVELINFORMATIONAL, models.TYPE_APIV1, image.Id, memo)
this.Ctx.Output.Context.Output.SetStatus(http.StatusOK)
this.Ctx.Output.Context.Output.Body([]byte(""))
return
}
示例2: manifestsConvertV1
func manifestsConvertV1(data []byte) error {
var manifest map[string]interface{}
if err := json.Unmarshal(data, &manifest); err != nil {
return err
}
tag := manifest["tag"]
namespace, repository := strings.Split(manifest["name"].(string), "/")[0], strings.Split(manifest["name"].(string), "/")[1]
for k := len(manifest["history"].([]interface{})) - 1; k >= 0; k-- {
v := manifest["history"].([]interface{})[k]
compatibility := v.(map[string]interface{})["v1Compatibility"].(string)
var image map[string]interface{}
if err := json.Unmarshal([]byte(compatibility), &image); err != nil {
return err
}
i := map[string]string{}
r := new(models.Repository)
if k == 0 {
i["Tag"] = tag.(string)
}
i["id"] = image["id"].(string)
//Put V1 JSON
if err := r.PutJSONFromManifests(i, namespace, repository); err != nil {
return err
}
if k == 0 {
//Put V1 Tag
if err := r.PutTagFromManifests(image["id"].(string), namespace, repository, tag.(string), string(data)); err != nil {
return err
}
}
img := new(models.Image)
tarsum := manifest["fsLayers"].([]interface{})[k].(map[string]interface{})["blobSum"].(string)
sha256 := strings.Split(tarsum, ":")[1]
//Put Image Json
if err := img.PutJSON(image["id"].(string), v.(map[string]interface{})["v1Compatibility"].(string), models.APIVERSION_V2); err != nil {
return err
}
//Put Image Layer
basePath := beego.AppConfig.String("docker::BasePath")
layerfile := fmt.Sprintf("%v/uuid/%v/layer", basePath, sha256)
if err := img.PutLayer(image["id"].(string), layerfile, true, int64(image["Size"].(float64))); err != nil {
return err
}
//Put Checksum
if err := img.PutChecksum(image["id"].(string), sha256, true, ""); err != nil {
return err
}
//Put Ancestry
if err := img.PutAncestry(image["id"].(string)); err != nil {
return err
}
}
return nil
}