fix: image may missing os_arch and checksum (#13835)

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
Jian Qiu
2022-03-31 13:50:05 +08:00
committed by GitHub
co-authored by Qiu Jian
parent 9f539a4bce
commit 2a4191c23a
2 changed files with 11 additions and 1 deletions
+1
View File
@@ -120,6 +120,7 @@ func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDi
}
if len(args.OsArch) > 0 {
params.Add(jsonutils.NewString(args.OsArch), "properties", "os_arch")
params.Add(jsonutils.NewString(args.OsArch), "os_arch")
}
if len(args.OsLang) > 0 {
params.Add(jsonutils.NewString(args.OsLang), "properties", "os_language")
+10 -1
View File
@@ -1349,6 +1349,9 @@ func isActive(localPath string, size int64, chksum string, fastHash string, useF
log.Errorf("size mistmatch: %s", localPath)
return false
}
if len(chksum) == 0 || len(fastHash) == 0 {
return true
}
if useFastHash && len(fastHash) > 0 {
fhash, err := fileutils2.FastCheckSum(localPath)
if err != nil {
@@ -1654,6 +1657,12 @@ func (image *SImage) updateImageInfo(
userCred mcclient.TokenCredential,
imageInfo *deployapi.ImageInfo,
) error {
if image.OsArch != imageInfo.OsInfo.Arch {
db.Update(image, func() error {
image.OsArch = imageInfo.OsInfo.Arch
return nil
})
}
imageProperties := jsonutils.Marshal(imageInfo.OsInfo).(*jsonutils.JSONDict)
imageProperties.Set(api.IMAGE_OS_ARCH, jsonutils.NewString(imageInfo.OsInfo.Arch))
imageProperties.Set(api.IMAGE_OS_TYPE, jsonutils.NewString(imageInfo.OsType))
@@ -1950,7 +1959,7 @@ func (img *SImage) Pipeline(ctx context.Context, userCred mcclient.TokenCredenti
needChecksum = true
}
}
if needChecksum {
if needChecksum || len(img.Checksum) == 0 || len(img.FastHash) == 0 {
err := img.updateChecksum()
if err != nil {
return errors.Wrap(err, "updateChecksum")