Browse Source

Merge branch 'master' of https://gitlink.org.cn/cloudream/common

feature_wq
Sydonian 8 months ago
parent
commit
e0eea72353
4 changed files with 174 additions and 88 deletions
  1. +1
    -0
      go.mod
  2. +2
    -0
      go.sum
  3. +68
    -21
      sdks/pcmscheduler/models.go
  4. +103
    -67
      sdks/uploader/models.go

+ 1
- 0
go.mod View File

@@ -28,6 +28,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect github.com/golang/protobuf v1.5.3 // indirect
github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect


+ 2
- 0
go.sum View File

@@ -22,6 +22,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=
github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=


+ 68
- 21
sdks/pcmscheduler/models.go View File

@@ -5,6 +5,7 @@ import (
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
"gitlink.org.cn/cloudream/common/utils/serder" "gitlink.org.cn/cloudream/common/utils/serder"
"time"
) )


type ResourceType string type ResourceType string
@@ -16,6 +17,8 @@ const (
ResourceTypeMLU ResourceType = "MLU" ResourceTypeMLU ResourceType = "MLU"
ResourceTypeStorage ResourceType = "STORAGE" ResourceTypeStorage ResourceType = "STORAGE"
ResourceTypeMemory ResourceType = "MEMORY" ResourceTypeMemory ResourceType = "MEMORY"
ResourceTypeDCU ResourceType = "DCU"
ResourceTypeGCU ResourceType = "GCU"


Split = "/" Split = "/"


@@ -47,6 +50,16 @@ const (


FailedStatus = "failed" FailedStatus = "failed"
SuccessStatus = "success" SuccessStatus = "success"

Query = "query"
Delete = "delete"

ChildrenType = "children"
ParentType = "parent"

PlatformSugon = "sugon"
PlatformOpenI = "openi"
PlatformModelArts = "modelarts"
) )


type TaskID int64 type TaskID int64
@@ -211,6 +224,7 @@ type ResourceRange struct {
CPU Range `json:"cpu"` CPU Range `json:"cpu"`
Memory Range `json:"memory"` Memory Range `json:"memory"`
Storage Range `json:"storage"` Storage Range `json:"storage"`
Ids []string `json:"ids"`
} }


type Range struct { type Range struct {
@@ -289,11 +303,11 @@ type LocalUploadInfo struct {
type RemoteUploadInfo struct { type RemoteUploadInfo struct {
serder.Metadata `union:"url"` serder.Metadata `union:"url"`
UploadInfoBase UploadInfoBase
Type string `json:"type"`
Url string `json:"url"`
DataName string `json:"dataName"`
Cluster schsdk.ClusterID `json:"clusterID"`
PackageID cdssdk.PackageID `json:"packageID"`
Type string `json:"type"`
Url string `json:"url"`
Branch string `json:"branch"`
DataName string `json:"dataName"`
Cluster schsdk.ClusterID `json:"clusterID"`
} }


type UploadInfoBase struct{} type UploadInfoBase struct{}
@@ -364,7 +378,7 @@ type DatasetBinding struct {
ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
Description string `json:"description"` Description string `json:"description"`
Category string `json:"category"` Category string `json:"category"`
PackageIDs []cdssdk.PackageID `json:"packageIDs"`
PackageID cdssdk.PackageID `json:"packageID"`
} }


type ModelBinding struct { type ModelBinding struct {
@@ -375,9 +389,10 @@ type ModelBinding struct {
ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
Description string `json:"description"` Description string `json:"description"`
Category string `json:"category"` Category string `json:"category"`
ModelType string `json:"modelType"`
Env string `json:"env"` Env string `json:"env"`
Version string `json:"version"` Version string `json:"version"`
PackageIDs []cdssdk.PackageID `json:"packageIDs"`
PackageID cdssdk.PackageID `json:"packageID"`
} }


type CodeBinding struct { type CodeBinding struct {
@@ -387,31 +402,63 @@ type CodeBinding struct {
Name string `json:"name"` Name string `json:"name"`
ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
Description string `json:"description"` Description string `json:"description"`
ImageID string `json:"imageID"`
ImageID int64 `json:"imageID"`
ObjectID cdssdk.ObjectID `json:"objectID"` ObjectID cdssdk.ObjectID `json:"objectID"`
FilePath string `json:"filePath"` FilePath string `json:"filePath"`
PackageID cdssdk.PackageID `json:"packageID"` PackageID cdssdk.PackageID `json:"packageID"`
} }


//type ImageBinding struct {
// serder.Metadata `union:"image"`
// DataBindingBase
// Type string `json:"type"`
// Name string `json:"name"`
// ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
// Description string `json:"description"`
// Architecture string `json:"architecture"`
// ResourceType string `json:"resourceType"`
// Tags []string `json:"tags"`
// PackageID cdssdk.PackageID `json:"packageID"`
//}

type ImageBinding struct { type ImageBinding struct {
serder.Metadata `union:"image"` serder.Metadata `union:"image"`
DataBindingBase DataBindingBase
Type string `json:"type"`
Name string `json:"name"`
ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
Description string `json:"description"`
Architecture string `json:"architecture"`
ResourceType string `json:"resourceType"`
Tags []string `json:"tags"`
PackageIDs []cdssdk.PackageID `json:"packageIDs"`
Type string `json:"type"`
ID int64 `json:"id"`
Name string `json:"name"`
IDType string `json:"idType"`
ImageID string `json:"imageID"`
ClusterID schsdk.ClusterID `json:"clusterID"`
}

type Image struct {
ImageID schsdk.ImageID `json:"imageID" gorm:"column:ImageID;primaryKey"`
Name string `json:"name" gorm:"column:Name"`
CreateTime time.Time `json:"createTime" gorm:"column:CreateTime"`
ClusterImage []ClusterImage `gorm:"foreignKey:image_id;references:ImageID" json:"clusterImages"`
} }


type ClusterImage struct { type ClusterImage struct {
ID int64 `json:"id"`
Name string `json:"name"`
ClusterID schsdk.ClusterID `json:"clusterID"`
ClusterImageID string `json:"clusterImageID"`
CardType string `json:"cardType"`
ImageID schsdk.ImageID `gorm:"column:image_id" json:"imageID"`
ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
OriginImageType string `gorm:"column:origin_image_type" json:"originImageType"`
OriginImageID string `gorm:"column:origin_image_id" json:"originImageID"`
OriginImageName string `gorm:"column:origin_image_name" json:"originImageName"`
ClusterImageCard []ClusterImageCard `gorm:"foreignKey:origin_image_id;references:origin_image_id" json:"cards"`
}

func (ClusterImage) TableName() string {
return "clusterImage"
}

type ClusterImageCard struct {
OriginImageID string `gorm:"column:origin_image_id" json:"originImageID"`
Card string `gorm:"column:card" json:"card"`
}

func (ClusterImageCard) TableName() string {
return "clusterImageCard"
} }


type QueryBindingFilters struct { type QueryBindingFilters struct {


+ 103
- 67
sdks/uploader/models.go View File

@@ -25,14 +25,14 @@ func (BlockChain) TableName() string {
} }


type Binding struct { type Binding struct {
ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
Name string `gorm:"column:name" json:"Name"`
DataType string `gorm:"column:data_type" json:"dataType"`
JsonData string `gorm:"column:json_data" json:"jsonData"`
Content string `gorm:"column:content" json:"Content"`
AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
Name string `gorm:"column:name" json:"Name"`
DataType string `gorm:"column:data_type" json:"dataType"`
//JsonData string `gorm:"column:json_data" json:"jsonData"`
Content string `gorm:"column:content" json:"Content"`
AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
} }


type BindingAccessData struct { type BindingAccessData struct {
@@ -46,6 +46,7 @@ type BindingAccessData struct {
AccessLevel string `gorm:"column:access_level" json:"accessLevel"` AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"` ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"`
Status string `gorm:"column:status" json:"status"` Status string `gorm:"column:status" json:"status"`
CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
} }


type BindingDetail struct { type BindingDetail struct {
@@ -58,12 +59,20 @@ type BindingDetail struct {
Packages []Package `json:"packages"` Packages []Package `json:"packages"`
Status string `json:"status"` Status string `json:"status"`
AccessLevel string `json:"accessLevel"` AccessLevel string `json:"accessLevel"`
CreateTime time.Time `json:"createTime"`
} }


func (Binding) TableName() string { func (Binding) TableName() string {
return "BindingData" // 确保和数据库中的表名一致 return "BindingData" // 确保和数据库中的表名一致
} }


type BindingCluster struct {
BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
ClusterID ClusterID `gorm:"column:cluster_id" json:"clusterID"`
Status string `gorm:"column:status" json:"status"`
JsonData string `gorm:"column:json_data" json:"jsonData"`
}

type Folder struct { type Folder struct {
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
Path string `gorm:"column:path_name" json:"path"` Path string `gorm:"column:path_name" json:"path"`
@@ -88,72 +97,99 @@ func (Cluster) TableName() string {
} }


type Package struct { type Package struct {
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
PackageName string `gorm:"column:package_name" json:"packageName"`
BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
DataType string `gorm:"column:data_type" json:"dataType"`
JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
Objects []cdssdk.Object `gorm:"column:objects" json:"objects"`
UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"`
Versions []PackageVersion `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
PackageName string `gorm:"column:package_name" json:"packageName"`
BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
DataType string `gorm:"column:data_type" json:"dataType"`
JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
Objects []cdssdk.Object `gorm:"column:objects" json:"objects"`
UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"`
Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
//BlockChain []BlockChain `gorm:"foreignKey:package_id;references:package_id" json:"blockChains"` // 关联 BlockChain 数据 //BlockChain []BlockChain `gorm:"foreignKey:package_id;references:package_id" json:"blockChains"` // 关联 BlockChain 数据
UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"` UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"`
} }


type PackageDAO struct { type PackageDAO struct {
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
PackageName string `gorm:"column:package_name" json:"packageName"`
BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
DataType string `gorm:"column:data_type" json:"dataType"`
JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据
Versions []PackageVersion `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"`
}

type PackageVersion struct {
ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
PackageName string `gorm:"column:package_name" json:"packageName"`
Version int64 `gorm:"column:package_version" json:"version"`
}

func (PackageVersion) TableName() string {
return "packageVersion" // 确保和数据库中的表名一致
}

//type PackageScheduleType interface {
// Noop()
//}
//
//var PackageScheduleTypeUnion = types.NewTypeUnion[PackageScheduleType](
// (*PackagePreferencesSchedule)(nil),
// (*PackageSpecifyClusterSchedule)(nil),
//)
//
//var _ = serder.UseTypeUnionInternallyTagged(&PackageScheduleTypeUnion, "type")
//
//type PackageScheduleBase struct{}
//
//func (d *PackageScheduleBase) Noop() {}
//
//type PackagePreferencesSchedule struct {
// serder.Metadata `union:"region"`
// PackageScheduleBase
// Type string `json:"type"`
// a sch.Preferences
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
PackageName string `gorm:"column:package_name" json:"packageName"`
BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
DataType string `gorm:"column:data_type" json:"dataType"`
JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据
Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"`
}

type PackageCloneDAO struct {
ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"`
Name string `gorm:"column:name" json:"name"`
Description string `gorm:"column:description" json:"description"`
BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"`
ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"`
ImageID string `gorm:"column:image_id" json:"imageID"`
CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
}

func (PackageCloneDAO) TableName() string {
return "packageClone" // 确保和数据库中的表名一致
}

type PackageCloneParam struct {
PackageID cdssdk.PackageID `json:"packageID" binding:"required"`
PackageName string `json:"packageName" binding:"required"`
//BucketID cdssdk.BucketID `json:"bucketID" binding:"required"`
Name string `json:"name"`
Description string `json:"description"`
BootstrapObjectID cdssdk.ObjectID `json:"bootstrapObjectID"`
ClusterID schsdk.ClusterID `json:"clusterID"`
ParentImageID schsdk.ImageID `json:"parentImageID"`
ImageID string `json:"imageID"`
}

type PackageCloneVO struct {
ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"`
Name string `gorm:"column:name" json:"name"`
Description string `gorm:"column:description" json:"description"`
BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"`
ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"`
ImageID string `gorm:"column:image_id" json:"imageID"`
CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
ClusterMapping ClusterMapping `gorm:"foreignKey:cluster_id;references:cluster_id" json:"cluster"`
}

type ClusterMapping struct {
ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
ClusterName string `gorm:"column:cluster_name" json:"clusterName"`
StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"`
StorageType string `gorm:"column:storage_type" json:"storageType"`
StoragePath string `gorm:"column:storage_path" json:"storagePath"`
}

func (ClusterMapping) TableName() string {
return "ClusterMapping"
}

//type PackageCloneClusterDAO struct {
// ID DataID `gorm:"column:id" json:"ID"`
// ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
// ClusterName string `gorm:"column:cluster_name" json:"clusterName"`
//} //}
// //
//type PackageSpecifyClusterSchedule struct {
// serder.Metadata `union:"region"`
// PackageScheduleBase
// Type string `json:"type"`
//type PackageCloneCluster struct {
// ClusterID schsdk.ClusterID `json:"clusterID"`
// ClusterName string `json:"clusterName"`
//} //}


type ScheduleTarget interface { type ScheduleTarget interface {


Loading…
Cancel
Save