Merge pull request #1255 from wanyaoqi/bugfix/wyq/fix-glance-copy-from-url

fix glance copy from url set checksum
This commit is contained in:
yunion-ci-robot
2019-06-18 18:43:52 +08:00
committed by GitHub
3 changed files with 36 additions and 2 deletions
+4
View File
@@ -107,6 +107,7 @@ func (m *SHostMetricsCollector) reportUsageToTelegraf(data string) {
log.Errorf("Upload guest metric failed: %s", err)
return
}
defer res.Body.Close()
if res.StatusCode != 204 {
log.Errorf("upload guest metric failed %d", res.StatusCode)
timestamp := time.Now().UnixNano()
@@ -119,6 +120,9 @@ func (m *SHostMetricsCollector) reportUsageToTelegraf(data string) {
oldDatas := strings.Join(m.waitingReportData, "\n")
body = strings.NewReader(oldDatas)
res, err = httputils.Request(httputils.GetDefaultClient(), context.Background(), "POST", TelegrafServer, nil, body, false)
if err == nil {
defer res.Body.Close()
}
if res.StatusCode == 204 {
m.waitingReportData = m.waitingReportData[len(m.waitingReportData):]
} else {
+21 -2
View File
@@ -115,6 +115,9 @@ type SImage struct {
MinRamMB int32 `name:"min_ram" nullable:"false" default:"0" list:"user" create:"optional" update:"user"`
Protected tristate.TriState `nullable:"true" list:"user" get:"user" create:"optional" update:"user"`
// image copy from url, save origin checksum before probe
OssChecksum string `width:"32" charset:"ascii" nullable:"true" get:"user" list:"user"`
}
func (manager *SImageManager) CustomizeHandlerInfo(info *appsrv.SHandlerInfo) {
@@ -219,6 +222,15 @@ func (self *SImage) CustomizedGetDetailsBody(ctx context.Context, userCred mccli
return nil, nil
}
func (self *SImage) getMoreDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, extra *jsonutils.JSONDict) *jsonutils.JSONDict {
var ossChksum = self.OssChecksum
if len(self.OssChecksum) == 0 {
ossChksum = self.Checksum
}
extra.Set("oss_checksum", jsonutils.NewString(ossChksum))
return extra
}
func (self *SImage) GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict {
extra := self.SVirtualResourceBase.GetCustomizeColumns(ctx, userCred, query)
properties, _ := ImagePropertyManager.GetProperties(self.Id)
@@ -229,7 +241,7 @@ func (self *SImage) GetCustomizeColumns(ctx context.Context, userCred mcclient.T
}
extra.Add(jsonProps, "properties")
}
return extra
return self.getMoreDetails(ctx, userCred, query, extra)
}
func (self *SImage) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*jsonutils.JSONDict, error) {
@@ -253,7 +265,7 @@ func (self *SImage) GetExtraDetails(ctx context.Context, userCred mcclient.Token
extra.Add(jsonutils.NewString(timeutils.FullIsoTime(pendingDeletedAt)), "auto_delete_at")
}
return extra, nil
return self.getMoreDetails(ctx, userCred, query, extra), nil
}
func (self *SImage) GetExtraDetailsHeaders(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) map[string]string {
@@ -299,6 +311,13 @@ func (self *SImage) GetExtraDetailsHeaders(ctx context.Context, userCred mcclien
}
}
// none of subimage business
var ossChksum = self.OssChecksum
if len(self.OssChecksum) == 0 {
ossChksum = self.Checksum
}
headers[fmt.Sprintf("%s%s", modules.IMAGE_META, "oss_checksum")] = ossChksum
properties, _ := ImagePropertyManager.GetProperties(self.Id)
if len(properties) > 0 {
for k, v := range properties {
@@ -50,10 +50,21 @@ func (self *ImageCopyFromUrlTask) OnInit(ctx context.Context, obj db.IStandalone
if err != nil {
return nil, err
}
defer resp.Body.Close()
err = image.SaveImageFromStream(resp.Body, false)
if err != nil {
return nil, err
}
md5 := resp.Header.Get("Content-Md5")
if len(md5) == 0 {
md5 = resp.Header.Get("x-oss-meta-yunion-os-checksum")
}
if len(md5) > 0 {
db.Update(image, func() error {
image.OssChecksum = md5
return nil
})
}
return nil, nil
})
}