liuxiaolong
2020-05-30 aa91d7884e7fef55b47d6a4905596f72a5ef1ac3
service/SdkInstall.go
@@ -1,13 +1,14 @@
package service
import (
   "basic.com/dbapi.git"
   //"basic.com/dbapi.git"
   "basic.com/valib/logger.git"
   "encoding/json"
   "errors"
   "io/ioutil"
   "os"
   "path"
   "path/filepath"
   "webserver/extend/config"
   "webserver/extend/util"
)
@@ -67,11 +68,26 @@
   }
   unPackFilePath := configPatchPath+"/"+identifier+ext
   err := util.UnTarGz(unPackFilePath, unPackPath)
   logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackPath)
   _,err := util.UnTarGzByCmd(unPackFilePath, unPackPath)
   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 {
      if f == nil {
         return err
      }
      if f.IsDir() {
         targetFileName = f.Name()
      }
      return nil
   })
   if err != nil {
      return false, err
   }
   unPackPath = unPackPath + targetFileName +"/"
   //解压完成,获取安装包中的文件,开始安装
   //1.解析安装说明ins.inc
   incPath := unPackPath+"ins.inc"
@@ -80,7 +96,10 @@
         var ins InsInc
         if err = json.Unmarshal(incB, &ins); err == nil {
            //处理授权信息
            curMc := ""
            if ins.MachineCode != curMc {
            }
            //2.解析sdk.def,将so和zconf复制到/opt/vasystem/libs/文件夹下
            defPath := unPackPath + "sdk.def"
            if util.Exists(defPath) {
@@ -89,35 +108,8 @@
                  soM := make(map[string]SdkDef)
                  var skDefArr []SdkDef
                  if err = json.Unmarshal(defB, &skDefArr);err == nil {
                     zconfPath := "/opt/vasystem/bin/zconf/"
                     libPath := "/opt/vasystem/libs/"
                     if !util.DirExists(zconfPath) {
                        os.MkdirAll(zconfPath, 0777)
                     }
                     if !util.DirExists(libPath) {
                        os.MkdirAll(libPath, 0777)
                     }
                     for sdkType,_ := range soM {
                        //先解压SdkType.tar.gz文件
                        if unTarGzE := util.UnTarGz(unPackPath+sdkType+".tar.gz", unPackPath);unTarGzE == nil {
                           //复制json启动文件
                           if util.Exists(unPackPath+sdkType+"/zconf/"+sdkType+".json") {
                              util.CopyFile(unPackPath+sdkType+"/zconf/"+sdkType+".json", zconfPath)
                           }
                           if util.DirExists(unPackPath+sdkType+"/"+sdkType) {
                              if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/"+sdkType, libPath);cE != nil {
                                 return false, cE
                              }
                           }
                           if util.DirExists(unPackPath+sdkType+"/models") {
                              if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/models", "/opt/vasystem/bin/"); cE != nil {
                                 return false, cE
                              }
                           }
                        }
                     }
                     //注册算法信息和算法参数到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
@@ -148,8 +140,39 @@
                           srv.Args = append(srv.Args,  sra)
                        }
                        paramBody := util.Struct2Map(srv)
                        sdkApi.Register(paramBody) //将算法注册到数据库中
                        logger.Debug("sdkApi.Register paramBody:", paramBody)
                        //sdkApi.Register(paramBody) //将算法注册到数据库中
                     }
                     zconfPath := "/opt/vasystem/bin/zconft/"
                     libPath := "/opt/vasystem/libst/"
                     if !util.DirExists(zconfPath) {
                        os.MkdirAll(zconfPath, 0777)
                     }
                     if !util.DirExists(libPath) {
                        os.MkdirAll(libPath, 0777)
                     }
                     for sdkType,_ := range soM {
                        //先解压SdkType.tar.gz文件
                        if unTarGzE := util.UnTarGz(unPackPath+sdkType+".tar.gz", unPackPath);unTarGzE == nil {
                           //复制json启动文件
                           if util.Exists(unPackPath+sdkType+"/zconf/"+sdkType+".json") {
                              util.CopyFile(unPackPath+sdkType+"/zconf/"+sdkType+".json", zconfPath)
                           }
                           if util.DirExists(unPackPath+sdkType+"/"+sdkType) {
                              if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/"+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 {
                                 return false, cE
                              }
                           }
                        } else {
                           logger.Debug("unTarGzE sdkType.tar.gz err:", unTarGzE)
                        }
                     }
                  } else {
                     return false, errors.New("反序列化算法定义信息失败")
                  }