From 9d88c7c467f8d93af4aab9ba0b6d6c01c2ffc546 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期四, 20 八月 2020 20:35:30 +0800
Subject: [PATCH] add get buckets contrl
---
service/SdkInstall.go | 268 +++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 215 insertions(+), 53 deletions(-)
diff --git a/service/SdkInstall.go b/service/SdkInstall.go
index 43f29a3..b0ed7f6 100644
--- a/service/SdkInstall.go
+++ b/service/SdkInstall.go
@@ -2,6 +2,8 @@
import (
"basic.com/dbapi.git"
+ "basic.com/pubsub/protomsg.git"
+ "basic.com/valib/licence.git"
"basic.com/valib/logger.git"
"encoding/json"
"errors"
@@ -13,10 +15,45 @@
"strings"
"webserver/extend/config"
"webserver/extend/util"
+ reqUtil "webserver/extend/util"
)
type SdkInstallService struct {
+}
+
+func (sv SdkInstallService) Active(cod string, sdkId string) (interface{},error) {
+ //浣跨敤婵�娲荤爜婵�娲荤畻娉�
+ url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/activeByAINode"
+ machineCode := licence.GetMachineCode()
+ if machineCode == "" {
+ logger.Debug("鑾峰彇鏈哄櫒鐮佸け璐�")
+ return nil, errors.New("鑾峰彇鏈哄櫒鐮佸け璐�")
+ }
+ paramBody := map[string]interface{}{
+ "code": cod,
+ "sdkId": sdkId,
+ "machineCode": machineCode,
+ }
+ header := map[string]string {
+ "Authorization": token,
+ }
+ respBody, err := reqUtil.DoPostRequest(url, reqUtil.CONTENT_TYPE_JSON, paramBody, nil, header)
+ if err != nil {
+ logger.Debug("DoPostRequest err:", err)
+ return nil, err
+ }
+ var res dbapi.Result
+ if err = json.Unmarshal(respBody, &res); err != nil {
+ logger.Debug("unmarshal err:", err)
+ return nil, err
+ }
+ if !res.Success {
+ logger.Debug("res.Data:", res.Data)
+ return nil, errors.New("璇锋眰鍟嗗煄澶辫触")
+ }
+
+ return res.Data, nil
}
//绠楁硶瀹夎鍖呭畨瑁�
@@ -33,12 +70,16 @@
zipFilePath := configPatchPath + "/"+identifier+ext
unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
+ md5DirPath := configPatchPath+"/"+identifier
if util.Exists(zipFilePath) {
strMd5, e := util.FileMd5(zipFilePath)
if e !=nil || strMd5 == "" {
go os.Remove(zipFilePath)
if util.DirExists(unPackTargetPath) {
go os.RemoveAll(unPackTargetPath)
+ }
+ if util.DirExists(md5DirPath) {
+ go os.RemoveAll(md5DirPath)
}
return false,errors.New("鑾峰彇瀹夎鍖卪d5澶辫触")
}
@@ -53,11 +94,115 @@
if util.DirExists(unPackTargetPath) {
go os.RemoveAll(unPackTargetPath)
}
+ if util.DirExists(md5DirPath) {
+ go os.RemoveAll(md5DirPath)
+ }
logger.Debug("strMd5 is", strMd5,"identifier is",identifier,"not equal")
return false,errors.New("鏍¢獙瀹夎鏂囦欢澶辫触")
}
} else {
return false,errors.New("瀹夎鍖呭凡涓㈠け锛岃閲嶆柊涓婁紶")
+ }
+}
+
+//瑙e帇涓婁紶鐨勭畻娉曞畨瑁呭寘
+func unPackPatchPackage(identifier string, ext string) (bool,error) {
+ configPatchPath := ""
+ if config.Server.PatchPath != "" {
+ configPatchPath = config.Server.PatchPath
+ } else {
+ configPatchPath = "../patch"
+ }
+ //1.瑙e帇缂╂洿鏂板寘
+ unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
+ unPackFilePath := configPatchPath+"/"+identifier+ext
+
+ if util.Exists(unPackTargetPath) {
+ //姝ょ増鏈凡缁忔洿鏂拌繃
+ rmErr := os.RemoveAll(unPackTargetPath)
+ if rmErr !=nil {
+ return false,rmErr
+ }
+ }
+ if !util.CreateDirectory(unPackTargetPath) {
+ return false, errors.New("鍒涘缓鍘嬬缉鏂囦欢澶瑰け璐�")
+ }
+ logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackTargetPath)
+ _,err := util.UnTarGzByCmd(unPackFilePath, unPackTargetPath)
+ if err !=nil {
+ logger.Debug("UnPack err:",err,"unPackFile:",unPackFilePath)
+ return false, err
+ }
+ return true, nil
+}
+
+func (sv SdkInstallService) ShowInstallInfo(identifier string, filename string) (bool, map[string]interface{}, error) {
+ configPatchPath := ""
+ if config.Server.PatchPath != "" {
+ configPatchPath = config.Server.PatchPath
+ } else {
+ configPatchPath = "../patch"
+ }
+ unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
+ isValid := false
+ defer func() {
+ if !isValid {
+ filenameWithSuffix := path.Base(filename)
+ ext := path.Ext(filenameWithSuffix)
+ unPackFilePath := configPatchPath+"/"+identifier+ext
+ md5DirPath := configPatchPath+"/"+identifier
+
+ if util.Exists(unPackTargetPath) {
+ os.RemoveAll(unPackTargetPath)
+ }
+ if util.Exists(unPackFilePath) {
+ os.RemoveAll(unPackFilePath)
+ }
+ if util.DirExists(md5DirPath) {
+ go os.RemoveAll(md5DirPath)
+ }
+
+ }
+ }()
+ if util.Exists(unPackTargetPath) {
+ targetFileName := ""
+ err := filepath.Walk(unPackTargetPath, 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 isValid, nil, errors.New("闈炴硶鐨勫畨瑁呭寘")
+ } else {
+ unPackPath := unPackTargetPath + targetFileName +"/"
+ //瑙e帇瀹屾垚锛岃幏鍙栧畨瑁呭寘涓殑鏂囦欢锛屽紑濮嬪畨瑁�
+ //1.瑙f瀽瀹夎璇存槑ins.inc
+ incPath := unPackPath+"ins.inc"
+ if util.Exists(incPath) {
+ if incB, err := ioutil.ReadFile(incPath); err == nil {
+ var ins InsInc
+ if err = json.Unmarshal(incB, &ins); err == nil {
+ return true, map[string]interface{} {
+ "sdkName": ins.ProductName,
+ "installVersion": ins.InstallVersion,
+ "installContent": ins.InstallContent,
+ }, nil
+ } else {
+ return false, nil, errors.New("闈炴硶鐨勫畨瑁呭寘")
+ }
+ } else {
+ return false, nil, errors.New("闈炴硶鐨勫畨瑁呭寘")
+ }
+ } else {
+ return false, nil, errors.New("闈炴硶鐨勫畨瑁呭寘")
+ }
+ }
+ } else {
+ return isValid, nil, errors.New("瀹夎鍖呭凡涓嶅瓨鍦�")
}
}
@@ -72,6 +217,7 @@
//1.瑙e帇缂╂洿鏂板寘
unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
unPackFilePath := configPatchPath+"/"+identifier+ext
+ md5DirPath := configPatchPath+"/"+identifier
defer func() {
if util.Exists(unPackTargetPath) {
os.RemoveAll(unPackTargetPath)
@@ -79,27 +225,17 @@
if util.Exists(unPackFilePath) {
os.RemoveAll(unPackFilePath)
}
+ if util.DirExists(md5DirPath) {
+ go os.RemoveAll(md5DirPath)
+ }
}()
- if util.Exists(unPackTargetPath) {
- //姝ょ増鏈凡缁忔洿鏂拌繃
- rmErr := os.RemoveAll(unPackTargetPath)
- if rmErr !=nil {
- return false,rmErr
- }
- }
- if !util.CreateDirectory(unPackTargetPath) {
- return false, errors.New("鍒涘缓鍘嬬缉鏂囦欢澶瑰け璐�")
+ if !util.Exists(unPackTargetPath) {//瀹夎鍖呬笉瀛樺湪
+ return false, errors.New("瀹夎鏂囦欢宸蹭笉瀛樺湪")
}
- 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(unPackTargetPath, 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
}
@@ -112,6 +248,9 @@
return false, err
}
unPackPath := unPackTargetPath + targetFileName +"/"
+ if !util.Exists(unPackPath) {
+ return false, errors.New("瀹夎鏂囦欢宸蹭笉瀛樺湪")
+ }
//瑙e帇瀹屾垚锛岃幏鍙栧畨瑁呭寘涓殑鏂囦欢锛屽紑濮嬪畨瑁�
//1.瑙f瀽瀹夎璇存槑ins.inc
incPath := unPackPath+"ins.inc"
@@ -149,7 +288,7 @@
sdkVersion, ok := sm["version"]
if ok { //鏈夌増鏈彿
vStr := sdkVersion.(string)
- if shouldVersionBeUpgrade(vStr, skd.Def.Version) {
+ if shouldVersionBeUpgrade(vStr, skd.Def.Version) { //姣斿鐗堟湰鍙风‘瀹氭槸鍚﹂渶瑕佸畨瑁�
nInsM[skd.Def.SdkType] = skd.Def.SdkType
aInsM[skd.Def.Id] = skd.Def.Id
}
@@ -167,15 +306,8 @@
soM[skd.Def.SdkType] = skd
}
if _,ok := aInsM[skd.Def.Id]; ok {
- srv := SdkRegisterVo{
- Id: skd.Def.Id,
- SdkType: skd.Def.SdkType,
- SdkName: skd.Def.SdkName,
- Icon: skd.Def.Icon,
- Url: skd.Def.Url,
- IconBlob: skd.Def.IconBlob,
- Version: skd.Def.Version,
- }
+ srv := SdkRegisterVo{}
+ srv.SdkCommon = skd.Def.SdkCommon
for _,ag := range skd.Args {
sra := SdkRegisterArgVo{
Scope: ag.Scope,
@@ -221,9 +353,16 @@
}
}
if util.DirExists(unPackPath+sdkType+"/models") {
- if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/models", "./zconf"); cE != nil {
+ if _,cE := util.CopyDirByCmd(unPackPath+sdkType+"/models", "./"); cE != nil {
return false, cE
}
+ //鎷疯礉瀹屾垚鍚庡垹闄ibs涓媠dkType鏂囦欢澶逛笅models
+ }
+ if util.DirExists(libPath+sdkType+"/models") {
+ os.RemoveAll(libPath+sdkType+"/models")
+ }
+ if util.DirExists(libPath+sdkType+"/zconf") {
+ os.RemoveAll(libPath+sdkType+"/zconf")
}
} else {
logger.Debug("unTarGzE sdkType.tar.gz err:", unTarGzE)
@@ -232,24 +371,28 @@
logger.Debug("upper version has been installed")
}
}
-
} else {
- return false, errors.New("鍙嶅簭鍒楀寲绠楁硶瀹氫箟淇℃伅澶辫触")
+ logger.Debug("鍙嶅簭鍒楀寲绠楁硶瀹氫箟淇℃伅澶辫触")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
} else {
- return false, errors.New("璇诲彇绠楁硶瀹氫箟淇℃伅澶辫触")
+ logger.Debug("璇诲彇绠楁硶瀹氫箟淇℃伅澶辫触")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
} else {
- return false, errors.New("绠楁硶瀹氫箟淇℃伅涓㈠け")
+ logger.Debug("绠楁硶瀹氫箟淇℃伅涓㈠け")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
} else {
- return false, errors.New("鍙嶅簭鍒楀寲鎺堟潈淇℃伅澶辫触")
+ logger.Debug("鍙嶅簭鍒楀寲鎺堟潈淇℃伅澶辫触")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
} else {
- return false, errors.New("璇诲彇鎺堟潈鏂囦欢澶辫触")
+ logger.Debug("璇诲彇鎺堟潈鏂囦欢澶辫触")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
} else {
- return false, errors.New("鎺堟潈鏂囦欢涓嶅瓨鍦�")
+ return false, errors.New("閿欒鐨勫畨瑁呭寘")
}
return true, nil
@@ -271,9 +414,9 @@
cM,cEM := strconv.Atoi(curIVArr[1])
cL,cEL := strconv.Atoi(curIVArr[2])
- dH,dEH := strconv.Atoi(curIVArr[0])
- dM,dEM := strconv.Atoi(curIVArr[1])
- dL,dEL := strconv.Atoi(curIVArr[2])
+ dH,dEH := strconv.Atoi(dstIVArr[0])
+ dM,dEM := strconv.Atoi(dstIVArr[1])
+ dL,dEL := strconv.Atoi(dstIVArr[2])
if cEH !=nil || cEM != nil || cEL != nil || dEH != nil ||dEM !=nil || dEL !=nil {
return false
}
@@ -310,6 +453,10 @@
ChCount int `json:"chCount"`
AuthCount int `json:"authCount"`
ServeYear int `json:"serveYear"`
+
+ ProductName string `json:"productName"`
+ InstallVersion string `json:"installVersion"`
+ InstallContent string `json:"installContent"`
}
//绠楁硶鍜屽弬鏁板畾涔�
@@ -319,20 +466,41 @@
}
type Sdk struct {
- Id string `gorm:"column:id;primary_key;type:varchar(50);unique;not null;" json:"id"`
- IpcId string `gorm:"column:ipc_id" json:"ipc_id"`
- SdkType string `gorm:"column:sdk_type" json:"sdk_type"`
- SdkName string `gorm:"column:sdk_name" json:"sdk_name" example:"浜鸿劯妫�娴�"`
- Icon string `gorm:"column:icon" json:"icon,omitempty"`
- Url string `gorm:"column:url" json:"url,omitempty" example:"http://ip:port/govideo/sdk/1"`
+ SdkCommon
CreateTime string `gorm:"column:create_time" json:"create_time"`
CreateBy string `gorm:"column:create_by" json:"create_by"`
UpdateTime string `gorm:"column:update_time" json:"update_time"`
Enable bool `gorm:"column:enable;default:1" json:"enable"`
DelFlag int `gorm:"column:del_flag;default:0" json:"del_flag"`
- Env string `gorm:"column:env" json:"env"` //杩愯鐜鍙婄粨鏋滆鏄庯紝json鏍煎紡锛屽寘鍚玸o_file_path,runtime,param,depends(cuda鐗堟湰锛宱pencv鐗堟湰锛宼ensorflow鐗堟湰绛�)
- IconBlob string `gorm:"column:iconBlob;type:text;" json:"iconBlob"` //鍥剧墖
- Version string `gorm:"column:version;type:varchar(50);default:'1.0';" json:"version"` //鐗堟湰鍙�
+
+ Args []SdkArg `json:"args"`
+}
+
+func (sc *SdkCommon) copyFromProto(pSdk protomsg.Sdk) {
+ sc.Id = pSdk.Id
+ sc.IpcId = pSdk.IpcId
+ sc.SdkType = pSdk.SdkType
+ sc.SdkName = pSdk.SdkName
+ sc.Icon = pSdk.Icon
+ sc.Url = pSdk.Url
+ sc.IconBlob = pSdk.IconBlob
+ sc.Version = pSdk.Version
+ sc.ArgDef = pSdk.ArgDef
+ sc.RuleSo = pSdk.RuleSo
+}
+
+type SdkCommon struct {
+ Id string `json:"id"`
+ IpcId string `json:"ipc_id"`
+ SdkType string `json:"sdk_type"`//浜鸿劯妫�娴嬶細FaceDetect,浜鸿劯鎻愬彇锛欶aceExtract,浜鸿劯姣斿锛欶aceCompare,琛屼负锛歒olo
+ SdkName string `json:"sdk_name"` //绠楁硶鍚嶇О
+ Icon string `json:"icon"` //绠楁硶鍥炬爣
+ Url string `json:"url"` //绠楁硶涓嬭浇鍦板潃
+ IconBlob string `json:"iconBlob"` //鍥剧墖
+ Version string `json:"version"` //鐗堟湰鍙�
+ EnTrack bool `json:"enTrack"` //鏄惁寮�鍚窡韪�
+ ArgDef string `json:"argDef"` //绠楁硶榛樿鍙傛暟瀹氫箟
+ RuleSo string `json:"rule_so"`
}
type SdkInsOrUpgrade struct {
@@ -364,14 +532,8 @@
type SdkRegisterVo struct {
- Id string `json:"id"`
- SdkType string `json:"sdk_type"`//浜鸿劯妫�娴嬶細FaceDetect,浜鸿劯鎻愬彇锛欶aceExtract,浜鸿劯姣斿锛欶aceCompare,琛屼负锛歒olo
- SdkName string `json:"sdk_name"` //绠楁硶鍚嶇О
+ SdkCommon
Args []SdkRegisterArgVo `json:"args"` //绠楁硶鍙傛暟
- Icon string `json:"icon"` //绠楁硶鍥炬爣
- Url string `json:"url"` //绠楁硶涓嬭浇鍦板潃
- IconBlob string `json:"iconBlob"` //鍥剧墖
- Version string `json:"version"` //鐗堟湰鍙�
}
type SdkRegisterArgVo struct {
--
Gitblit v1.8.0