mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
Merge pull request #10178 from tb365/automated-cherry-pick-of-#10177-upstream-release-3.7
Automated cherry pick of #10177: imagetools NormalizeImageInfo update
This commit is contained in:
@@ -56,6 +56,12 @@ const (
|
||||
IMAGE_STATUS_UPDATING = "updating"
|
||||
)
|
||||
|
||||
const (
|
||||
IMAGE_OS_ARCH_X86 = "x86" // x86 32位
|
||||
IMAGE_OS_ARCH_X86_64 = "x86_64" //
|
||||
IMAGE_OS_ARCH_ARM = "aarch64" // arm 64位 little endian
|
||||
)
|
||||
|
||||
var (
|
||||
ImageDeadStatus = []string{IMAGE_STATUS_DEACTIVATED, IMAGE_STATUS_KILLED, IMAGE_STATUS_DELETED, IMAGE_STATUS_PENDING_DELETE}
|
||||
)
|
||||
|
||||
@@ -24,7 +24,6 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/utils"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -61,6 +60,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Architecture string
|
||||
CreationTime time.Time
|
||||
Description string
|
||||
@@ -193,19 +195,28 @@ func (self *SImage) GetSizeByte() int64 {
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return utils.Capitalize(self.OSType)
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.Platform
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.OSName, self.Architecture, self.OSType, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(self.OSName, "", "", "", "").OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
return self.Architecture
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -24,7 +24,6 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/utils"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -61,6 +60,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Architecture string
|
||||
CreationTime time.Time
|
||||
Description string
|
||||
@@ -192,20 +194,29 @@ func (self *SImage) GetSizeByte() int64 {
|
||||
return int64(self.Size) * 1024 * 1024 * 1024
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.OSName, self.Architecture, self.OSType, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return utils.Capitalize(self.OSType)
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.Platform
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(self.OSName, "", "", "", "").OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
return self.Architecture
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -29,6 +29,7 @@ import (
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
"yunion.io/x/onecloud/pkg/multicloud"
|
||||
"yunion.io/x/onecloud/pkg/util/imagetools"
|
||||
)
|
||||
|
||||
type ImageStatusType string
|
||||
@@ -79,6 +80,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Architecture string
|
||||
CreationTime time.Time
|
||||
Description string
|
||||
@@ -222,20 +226,29 @@ func (self *SImage) GetSizeByte() int64 {
|
||||
return int64(self.SizeGB) * 1024 * 1024 * 1024
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo("", self.Architecture, self.OSType, self.OSDist, self.OSVersion)
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return self.OSType
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
return self.Architecture
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.OSDist
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return self.OSVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -39,6 +39,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
ID string `json:"id"`
|
||||
OSType string `json:"osType"`
|
||||
Platform string `json:"platform"`
|
||||
@@ -146,20 +149,29 @@ func (self *SImage) GetImageStatus() string {
|
||||
return cloudprovider.IMAGE_STATUS_ACTIVE
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.OSVersion, strconv.Itoa(int(self.OSBit)), self.OSType, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return self.OSType
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.Platform
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(self.OSVersion, "", "", self.Platform, "").OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
return strconv.Itoa(int(self.OSBit))
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -44,6 +44,9 @@ type SImage struct {
|
||||
storagecache *SStoragecache
|
||||
SResourceBase
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Id string
|
||||
CreationTimestamp time.Time
|
||||
Description string
|
||||
@@ -161,20 +164,29 @@ func (image *SImage) GetSizeByte() int64 {
|
||||
return image.ArchiveSizeBytes
|
||||
}
|
||||
|
||||
func (image *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if image.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(image.Name, "", "", "", "")
|
||||
image.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return image.imgInfo
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsType() string {
|
||||
return imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsType
|
||||
return image.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsDist() string {
|
||||
return imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsDistro
|
||||
return image.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsVersion
|
||||
return image.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsArch() string {
|
||||
return imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsArch
|
||||
return image.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (image *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -54,6 +54,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Schema string `json:"schema"`
|
||||
MinDiskGB int64 `json:"min_disk"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
@@ -160,24 +163,29 @@ func (self *SImage) GetSizeByte() int64 {
|
||||
return int64(self.MinDiskGB) * 1024 * 1024 * 1024
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.ImageSourceType, self.OSType, self.OSType, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return self.OSType
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.Platform
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(self.ImageSourceType, "", "", "", "").OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
if self.OSType == "32" {
|
||||
return "x86"
|
||||
} else {
|
||||
return "x86_64"
|
||||
}
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -25,7 +25,6 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/util/osprofile"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -51,6 +50,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Status string
|
||||
Name string
|
||||
Tags []string
|
||||
@@ -208,30 +210,21 @@ func (image *SImage) GetSizeByte() int64 {
|
||||
return int64(image.Size)
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsType() string {
|
||||
switch image.OsType {
|
||||
case "linux":
|
||||
return osprofile.OS_TYPE_LINUX
|
||||
case "windows":
|
||||
return osprofile.OS_TYPE_WINDOWS
|
||||
default:
|
||||
osType := imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsType
|
||||
if len(osType) > 0 {
|
||||
return osType
|
||||
}
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.Name, "", self.OsType, "", "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
return "Linux"
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsType() string {
|
||||
return image.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsDist() string {
|
||||
if len(image.OsDistro) > 0 {
|
||||
return image.OsDistro
|
||||
}
|
||||
osDist := imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsDistro
|
||||
if len(osDist) > 0 {
|
||||
return osDist
|
||||
}
|
||||
return "Linux"
|
||||
return image.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsVersion() string {
|
||||
|
||||
@@ -46,6 +46,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
ImageId string // 镜像ID
|
||||
OsName string // 镜像操作系统
|
||||
ImageType string // 镜像类型
|
||||
@@ -182,25 +185,29 @@ func (self *SImage) GetSizeByte() int64 {
|
||||
return int64(self.ImageSize) * 1024 * 1024 * 1024
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
switch self.Platform {
|
||||
case "Windows", "FreeBSD":
|
||||
return self.Platform
|
||||
default:
|
||||
return "Linux"
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.OsName, self.Architecture, self.Platform, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
return self.Platform
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(self.OsName, "", "", "", "").OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
return self.Architecture
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -31,6 +31,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
Zone string `json:"Zone"`
|
||||
ImageDescription string `json:"ImageDescription"`
|
||||
OSName string `json:"OsName"`
|
||||
@@ -164,24 +167,29 @@ func (self *SImage) GetImageStatus() string {
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.ImageName, self.ImageName, self.ImageName, "", "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsType() string {
|
||||
imageInfo := imagetools.NormalizeImageInfo(self.ImageName, "", "", "", "")
|
||||
return imageInfo.OsType
|
||||
return self.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsDist() string {
|
||||
imageInfo := imagetools.NormalizeImageInfo(self.ImageName, "", "", "", "")
|
||||
return imageInfo.OsDistro
|
||||
return self.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsVersion() string {
|
||||
imageInfo := imagetools.NormalizeImageInfo(self.ImageName, "", "", "", "")
|
||||
return imageInfo.OsVersion
|
||||
return self.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (self *SImage) GetOsArch() string {
|
||||
imageInfo := imagetools.NormalizeImageInfo(self.ImageName, "", "", "", "")
|
||||
return imageInfo.OsArch
|
||||
return self.getNormalizedImageInfo().OsArch
|
||||
}
|
||||
|
||||
func (self *SImage) GetMinOsDiskSizeGb() int {
|
||||
|
||||
@@ -48,6 +48,9 @@ type SImage struct {
|
||||
multicloud.SImageBase
|
||||
storageCache *SStoragecache
|
||||
|
||||
// normalized image info
|
||||
imgInfo *imagetools.ImageInfo
|
||||
|
||||
BackupStorageRefs []SBackupStorageRef `json:"backupStorageRefs"`
|
||||
ActualSize int `json:"actualSize"`
|
||||
CreateDate time.Time `json:"createDate"`
|
||||
@@ -156,20 +159,25 @@ func (image *SImage) GetSizeByte() int64 {
|
||||
return int64(image.Size)
|
||||
}
|
||||
|
||||
func (self *SImage) getNormalizedImageInfo() *imagetools.ImageInfo {
|
||||
if self.imgInfo == nil {
|
||||
imgInfo := imagetools.NormalizeImageInfo(self.URL, "", self.Platform, self.Platform, "")
|
||||
self.imgInfo = &imgInfo
|
||||
}
|
||||
|
||||
return self.imgInfo
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsType() string {
|
||||
return image.Platform
|
||||
return image.getNormalizedImageInfo().OsType
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsDist() string {
|
||||
osDist := imagetools.NormalizeImageInfo(image.URL, "", "", "", "").OsDistro
|
||||
if len(osDist) > 0 {
|
||||
return osDist
|
||||
}
|
||||
return image.Platform
|
||||
return image.getNormalizedImageInfo().OsDistro
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsVersion() string {
|
||||
return imagetools.NormalizeImageInfo(image.Name, "", "", "", "").OsVersion
|
||||
return image.getNormalizedImageInfo().OsVersion
|
||||
}
|
||||
|
||||
func (image *SImage) GetOsArch() string {
|
||||
|
||||
@@ -14,14 +14,23 @@
|
||||
|
||||
package imagetools
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"strings"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/image"
|
||||
)
|
||||
|
||||
func normalizeOsArch(osArch string, osType string, osDist string) string {
|
||||
if len(osArch) > 0 {
|
||||
if strings.ToLower(osArch) == "x86_64" {
|
||||
return "x86_64"
|
||||
} else {
|
||||
return "i386"
|
||||
switch strings.ToLower(osArch) {
|
||||
case "x86_64", "64":
|
||||
return api.IMAGE_OS_ARCH_X86_64
|
||||
case "x86", "x86_32", "32":
|
||||
return api.IMAGE_OS_ARCH_X86
|
||||
case "arm", "arm64", "aarch", "aarch64":
|
||||
return api.IMAGE_OS_ARCH_ARM
|
||||
default:
|
||||
return osArch
|
||||
}
|
||||
} else {
|
||||
if osType == "linux" {
|
||||
|
||||
Reference in New Issue
Block a user