|
@@ -8,6 +8,7 @@ import (
|
|
|
"dcl_dispatch_server/src/package/infra/redis"
|
|
|
"dcl_dispatch_server/src/package/util"
|
|
|
"fmt"
|
|
|
+ "github.com/aliyun/aliyun-oss-go-sdk/oss"
|
|
|
"path/filepath"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -88,7 +89,8 @@ func RunWaitingCluster() {
|
|
|
algorithmImageName := ""
|
|
|
algorithmImageNameWithVersion := ""
|
|
|
algorithmExist := false
|
|
|
-
|
|
|
+ // 确定用哪个oss
|
|
|
+ var tempOss *oss.Bucket
|
|
|
if can {
|
|
|
// 判断是否有待运行的任务
|
|
|
waitingClusterNumber, _ := infra.GlobalRedisClient.LLen(global.KeyTaskQueueWaitingCluster).Result()
|
|
@@ -119,6 +121,11 @@ func RunWaitingCluster() {
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
+ if firstTaskCache.Env == global.EnvPji {
|
|
|
+ tempOss = infra.GlobalOssBucketPji
|
|
|
+ } else {
|
|
|
+ tempOss = infra.GlobalOssBucketCicv
|
|
|
+ }
|
|
|
// --------------- 下载算法 ---------------
|
|
|
{
|
|
|
infra.GlobalLogger.Infof("开始下载算法 %v。", firstTaskCache.AlgorithmObjectKey)
|
|
@@ -129,11 +136,7 @@ func RunWaitingCluster() {
|
|
|
algorithmImageNameWithVersion = algorithmImageName + ":latest"
|
|
|
algorithmExist = util.ImageExists(infra.GlobalDockerClient, algorithmImageName)
|
|
|
if !algorithmExist {
|
|
|
- if firstTaskCache.Env == "cicv" {
|
|
|
- err = infra.GlobalOssBucketCicv.GetObjectToFile(firstTaskCache.AlgorithmObjectKey, algorithmTarPath)
|
|
|
- } else {
|
|
|
- err = infra.GlobalOssBucketPji.GetObjectToFile(firstTaskCache.AlgorithmObjectKey, algorithmTarPath)
|
|
|
- }
|
|
|
+ err = tempOss.GetObjectToFile(firstTaskCache.AlgorithmObjectKey, algorithmTarPath)
|
|
|
if err != nil {
|
|
|
infra.GlobalLogger.Error("下载oss上的算法镜像 "+firstTaskCache.AlgorithmObjectKey+" 失败,错误信息为:", err)
|
|
|
time.Sleep(time.Duration(2) * time.Second)
|
|
@@ -183,14 +186,10 @@ func RunWaitingCluster() {
|
|
|
|
|
|
// ------- 解析 xosc ,从xosc中解析起终点位置&修改 xodr 和 osgb ---------------
|
|
|
xoscOssPath := firstTaskCache.Task.Scenario.ScenarioOsc
|
|
|
- tempDir := "/mnt/disk001/dcl_dispatch_server/temp/"
|
|
|
+ tempDir := infra.ApplicationYaml.TempDir
|
|
|
util.CreateDir(tempDir)
|
|
|
xoscLocalPath := tempDir + util.NewShortUUID() + ".xosc"
|
|
|
- if firstTaskCache.Env == "cicv" { // cicv 或 pji
|
|
|
- err = infra.GlobalOssBucketCicv.GetObjectToFile(firstTaskCache.Task.Scenario.ScenarioOsc, xoscLocalPath)
|
|
|
- } else {
|
|
|
- err = infra.GlobalOssBucketPji.GetObjectToFile(firstTaskCache.Task.Scenario.ScenarioOsc, xoscLocalPath)
|
|
|
- }
|
|
|
+ err = tempOss.GetObjectToFile(firstTaskCache.Task.Scenario.ScenarioOsc, xoscLocalPath)
|
|
|
|
|
|
if err != nil {
|
|
|
infra.GlobalLogger.Errorf("下载xosc文件【%v】失败,错误信息为:%v", xoscOssPath, err)
|
|
@@ -199,6 +198,17 @@ func RunWaitingCluster() {
|
|
|
startPositionX, startPositionY, startPositionZ, startPositionH, endPositionX, endPositionY, endPositionZ, endPositionH, xodrPath, osgbPath := util.ParseXosc(xoscLocalPath)
|
|
|
firstTaskCache.Task.Scenario.ScenarioOdr = xodrPath
|
|
|
firstTaskCache.Task.Scenario.ScenarioOsgb = osgbPath
|
|
|
+ lastIndex := strings.LastIndex(xoscLocalPath, "/")
|
|
|
+ dirPath := xoscLocalPath[:lastIndex+1] // 包括最后一个 /
|
|
|
+ destinationCsvOssKey := dirPath + global.DestinationCsvName
|
|
|
+ if exist, _ := tempOss.IsObjectExist(destinationCsvOssKey); exist {
|
|
|
+ destinationCsvLocalPath := tempDir + util.NewShortUUID() + ".xosc"
|
|
|
+ err = tempOss.GetObjectToFile(destinationCsvOssKey, destinationCsvLocalPath)
|
|
|
+ _, endPositionX, endPositionY, endPositionZ, endPositionH = util.ParseCsv(destinationCsvLocalPath)
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
// ------- 修改OGT传感器显示目标物框 -------
|
|
|
for i := range firstTaskCache.Task.Vehicle.Sensors.OGT {
|
|
|
firstTaskCache.Task.Vehicle.Sensors.OGT[i].SensorDisplay = global.DefaultOgtSensorDisplay
|