mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
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:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user