|
|
|
@@ -244,6 +244,7 @@ func SaveLocalModel(ctx *context.Context) { |
|
|
|
model := &models.AiModelManage{ |
|
|
|
ID: id, |
|
|
|
Version: version, |
|
|
|
ModelType: 1, |
|
|
|
VersionCount: len(aimodels) + 1, |
|
|
|
Label: label, |
|
|
|
Name: name, |
|
|
|
@@ -291,6 +292,39 @@ func SaveLocalModel(ctx *context.Context) { |
|
|
|
ctx.JSON(200, re) |
|
|
|
} |
|
|
|
|
|
|
|
func getSize(files []storage.FileInfo) int64 { |
|
|
|
var size int64 |
|
|
|
for _, file := range files { |
|
|
|
size += file.Size |
|
|
|
} |
|
|
|
return size |
|
|
|
} |
|
|
|
|
|
|
|
func UpdateModelSize(modeluuid string) { |
|
|
|
model, err := models.QueryModelById(modeluuid) |
|
|
|
if err == nil { |
|
|
|
if model.Type == models.TypeCloudBrainOne { |
|
|
|
if strings.HasPrefix(model.Path, setting.Bucket+"/"+Model_prefix) { |
|
|
|
files, err := storage.GetAllObjectByBucketAndPrefixMinio(setting.Bucket, model.Path[len(setting.Bucket)+1:]) |
|
|
|
if err != nil { |
|
|
|
log.Info("Failed to query model size from minio. id=" + modeluuid) |
|
|
|
} |
|
|
|
size := getSize(files) |
|
|
|
models.ModifyModelSize(modeluuid, size) |
|
|
|
} |
|
|
|
} else if model.Type == models.TypeCloudBrainTwo { |
|
|
|
if strings.HasPrefix(model.Path, setting.Bucket+"/"+Model_prefix) { |
|
|
|
files, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, model.Path[len(setting.Bucket)+1:]) |
|
|
|
if err != nil { |
|
|
|
log.Info("Failed to query model size from obs. id=" + modeluuid) |
|
|
|
} |
|
|
|
size := getSize(files) |
|
|
|
models.ModifyModelSize(modeluuid, size) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func SaveModel(ctx *context.Context) { |
|
|
|
if !ctx.Repo.CanWrite(models.UnitTypeModelManage) { |
|
|
|
ctx.Error(403, ctx.Tr("repo.model_noright")) |
|
|
|
@@ -420,13 +454,24 @@ func deleteModelByID(ctx *context.Context, id string) error { |
|
|
|
} |
|
|
|
if err == nil { |
|
|
|
log.Info("bucket=" + setting.Bucket + " path=" + model.Path) |
|
|
|
if strings.HasPrefix(model.Path, setting.Bucket+"/"+Model_prefix) { |
|
|
|
err := storage.ObsRemoveObject(setting.Bucket, model.Path[len(setting.Bucket)+1:]) |
|
|
|
if err != nil { |
|
|
|
log.Info("Failed to delete model. id=" + id) |
|
|
|
return err |
|
|
|
if model.Type == models.TypeCloudBrainOne { |
|
|
|
if strings.HasPrefix(model.Path, setting.Bucket+"/"+Model_prefix) { |
|
|
|
err := storage.Attachments.DeleteDir(model.Path[len(setting.Bucket)+1:]) |
|
|
|
if err != nil { |
|
|
|
log.Info("Failed to delete model. id=" + id) |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
} else if model.Type == models.TypeCloudBrainTwo { |
|
|
|
if strings.HasPrefix(model.Path, setting.Bucket+"/"+Model_prefix) { |
|
|
|
err := storage.ObsRemoveObject(setting.Bucket, model.Path[len(setting.Bucket)+1:]) |
|
|
|
if err != nil { |
|
|
|
log.Info("Failed to delete model. id=" + id) |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
err = models.DeleteModelById(id) |
|
|
|
if err == nil { //find a model to change new |
|
|
|
aimodels := models.QueryModelByName(model.Name, model.RepoId) |
|
|
|
|