| | |
| | | package service |
| | | |
| | | import ( |
| | | //"basic.com/dbapi.git" |
| | | "basic.com/dbapi.git" |
| | | "basic.com/valib/logger.git" |
| | | "encoding/json" |
| | | "errors" |
| | |
| | | "webserver/extend/util" |
| | | ) |
| | | |
| | | type SdkInstallService struct { |
| | | |
| | | } |
| | | |
| | | //算法安装包安装 |
| | | func (sv SysService) SdkInstall(identifier string,filename string) (bool,error) { |
| | | func (sv SdkInstallService) SdkInstall(identifier string,filename string) (bool,error) { |
| | | configPatchPath := "" |
| | | if config.Server.PatchPath != "" { |
| | | configPatchPath = config.Server.PatchPath |
| | |
| | | if util.Exists(zipFilePath) { |
| | | strMd5, e := util.FileMd5(zipFilePath) |
| | | if e !=nil || strMd5 == "" { |
| | | go os.Remove(zipFilePath) |
| | | return false,errors.New("获取安装包md5失败") |
| | | } |
| | | if strMd5 == identifier { |
| | |
| | | return true,nil |
| | | |
| | | } else { |
| | | go os.Remove(zipFilePath) |
| | | logger.Debug("strMd5 is", strMd5,"identifier is",identifier,"not equal") |
| | | return false,errors.New("校验安装文件失败") |
| | | } |
| | |
| | | configPatchPath = "/opt/vasystem/patch" |
| | | } |
| | | //1.解压缩更新包 |
| | | unPackPath := configPatchPath+"/"+identifier+"_basic/" |
| | | if util.Exists(unPackPath) { |
| | | unPackTargetPath := configPatchPath+"/"+identifier+"_basic/" |
| | | unPackFilePath := configPatchPath+"/"+identifier+ext |
| | | defer func() { |
| | | if util.Exists(unPackTargetPath) { |
| | | os.RemoveAll(unPackTargetPath) |
| | | } |
| | | if util.Exists(unPackFilePath) { |
| | | os.RemoveAll(unPackFilePath) |
| | | } |
| | | }() |
| | | |
| | | if util.Exists(unPackTargetPath) { |
| | | //此版本已经更新过 |
| | | rmErr := os.RemoveAll(unPackPath) |
| | | rmErr := os.RemoveAll(unPackTargetPath) |
| | | if rmErr !=nil { |
| | | return false,rmErr |
| | | } |
| | | } |
| | | if !util.CreateDirectory(unPackPath) { |
| | | if !util.CreateDirectory(unPackTargetPath) { |
| | | return false, errors.New("创建压缩文件夹失败") |
| | | } |
| | | |
| | | unPackFilePath := configPatchPath+"/"+identifier+ext |
| | | logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackPath) |
| | | _,err := util.UnTarGzByCmd(unPackFilePath, unPackPath) |
| | | logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackTargetPath) |
| | | _,err := util.UnTarGzByCmd(unPackFilePath, unPackTargetPath) |
| | | if err !=nil { |
| | | logger.Debug("UnPack err:",err,"unPackFile:",unPackFilePath) |
| | | return false, err |
| | | } |
| | | targetFileName := "" |
| | | err = filepath.Walk(unPackPath, func(path string, f os.FileInfo, err error) error { |
| | | err = filepath.Walk(unPackTargetPath, func(path string, f os.FileInfo, err error) error { |
| | | if f == nil { |
| | | return err |
| | | } |
| | |
| | | if err != nil { |
| | | return false, err |
| | | } |
| | | unPackPath = unPackPath + targetFileName +"/" |
| | | unPackPath := unPackTargetPath + targetFileName +"/" |
| | | //解压完成,获取安装包中的文件,开始安装 |
| | | //1.解析安装说明ins.inc |
| | | incPath := unPackPath+"ins.inc" |
| | |
| | | var skDefArr []SdkDef |
| | | if err = json.Unmarshal(defB, &skDefArr);err == nil { |
| | | //注册算法信息和算法参数到dbserver |
| | | //var sdkApi dbapi.SdkApi |
| | | var sdkApi dbapi.SdkApi |
| | | for _,skd := range skDefArr { |
| | | if _,ok := soM[skd.Def.SdkType];!ok { |
| | | soM[skd.Def.SdkType] = skd |
| | |
| | | } |
| | | paramBody := util.Struct2Map(srv) |
| | | logger.Debug("sdkApi.Register paramBody:", paramBody) |
| | | //sdkApi.Register(paramBody) //将算法注册到数据库中 |
| | | sdkApi.Register(paramBody) //将算法注册到数据库中 |
| | | } |
| | | zconfPath := "/opt/vasystem/bin/zconft/" |
| | | libPath := "/opt/vasystem/libst/" |
| | | zconfPath := "/opt/vasystem/bin/zconf/" |
| | | libPath := "/opt/vasystem/libs/" |
| | | if !util.DirExists(zconfPath) { |
| | | os.MkdirAll(zconfPath, 0777) |
| | | } |
| | |
| | | if util.Exists(unPackPath+sdkType+"/zconf/"+sdkType+".json") { |
| | | util.CopyFile(unPackPath+sdkType+"/zconf/"+sdkType+".json", zconfPath+sdkType+".json") |
| | | } |
| | | if util.DirExists(unPackPath+sdkType+"/"+sdkType) { |
| | | if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/"+sdkType, libPath);cE != nil { |
| | | if util.DirExists(unPackPath+sdkType) { |
| | | if _,cE := util.CopyDirByCmd(unPackPath+sdkType, libPath);cE != nil { |
| | | return false, cE |
| | | } |
| | | } |
| | | if util.DirExists(unPackPath+sdkType+"/models") { |
| | | if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/models", "/opt/vasystem/bin/zconft"); cE != nil { |
| | | if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/models", "/opt/vasystem/bin/zconf"); cE != nil { |
| | | return false, cE |
| | | } |
| | | } |