diff --git a/go.mod b/go.mod index 16bebdb..4e0d2a0 100644 --- a/go.mod +++ b/go.mod @@ -28,6 +28,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // 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/jtolds/gls v4.20.0+incompatible // indirect github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect diff --git a/go.sum b/go.sum index 60a4de8..c51be4b 100644 --- a/go.sum +++ b/go.sum @@ -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/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= 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.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= diff --git a/sdks/pcmscheduler/models.go b/sdks/pcmscheduler/models.go index 8fb7182..af991f5 100644 --- a/sdks/pcmscheduler/models.go +++ b/sdks/pcmscheduler/models.go @@ -5,6 +5,7 @@ import ( schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" "gitlink.org.cn/cloudream/common/utils/serder" + "time" ) type ResourceType string @@ -16,6 +17,8 @@ const ( ResourceTypeMLU ResourceType = "MLU" ResourceTypeStorage ResourceType = "STORAGE" ResourceTypeMemory ResourceType = "MEMORY" + ResourceTypeDCU ResourceType = "DCU" + ResourceTypeGCU ResourceType = "GCU" Split = "/" @@ -47,6 +50,16 @@ const ( FailedStatus = "failed" SuccessStatus = "success" + + Query = "query" + Delete = "delete" + + ChildrenType = "children" + ParentType = "parent" + + PlatformSugon = "sugon" + PlatformOpenI = "openi" + PlatformModelArts = "modelarts" ) type TaskID int64 @@ -211,6 +224,7 @@ type ResourceRange struct { CPU Range `json:"cpu"` Memory Range `json:"memory"` Storage Range `json:"storage"` + Ids []string `json:"ids"` } type Range struct { @@ -289,11 +303,11 @@ type LocalUploadInfo struct { type RemoteUploadInfo struct { serder.Metadata `union:"url"` 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{} @@ -364,7 +378,7 @@ type DatasetBinding struct { ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` Description string `json:"description"` Category string `json:"category"` - PackageIDs []cdssdk.PackageID `json:"packageIDs"` + PackageID cdssdk.PackageID `json:"packageID"` } type ModelBinding struct { @@ -375,9 +389,10 @@ type ModelBinding struct { ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` Description string `json:"description"` Category string `json:"category"` + ModelType string `json:"modelType"` Env string `json:"env"` Version string `json:"version"` - PackageIDs []cdssdk.PackageID `json:"packageIDs"` + PackageID cdssdk.PackageID `json:"packageID"` } type CodeBinding struct { @@ -387,31 +402,63 @@ type CodeBinding struct { Name string `json:"name"` ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` Description string `json:"description"` - ImageID string `json:"imageID"` + ImageID int64 `json:"imageID"` ObjectID cdssdk.ObjectID `json:"objectID"` FilePath string `json:"filePath"` 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 { 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"` - 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 { - 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 { diff --git a/sdks/uploader/models.go b/sdks/uploader/models.go index 6babe86..1fe59d1 100644 --- a/sdks/uploader/models.go +++ b/sdks/uploader/models.go @@ -25,14 +25,14 @@ func (BlockChain) TableName() string { } 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 { @@ -46,6 +46,7 @@ type BindingAccessData struct { AccessLevel string `gorm:"column:access_level" json:"accessLevel"` ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"` Status string `gorm:"column:status" json:"status"` + CreateTime time.Time `gorm:"column:created_at" json:"createTime"` } type BindingDetail struct { @@ -58,12 +59,20 @@ type BindingDetail struct { Packages []Package `json:"packages"` Status string `json:"status"` AccessLevel string `json:"accessLevel"` + CreateTime time.Time `json:"createTime"` } func (Binding) TableName() string { 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 { PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` Path string `gorm:"column:path_name" json:"path"` @@ -88,72 +97,99 @@ func (Cluster) TableName() string { } 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 数据 UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"` } 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 {