|
|
|
@@ -185,10 +185,10 @@ func GetObsListObject(jobName, parentDir string) ([]FileInfo, error) { |
|
|
|
for _, val := range output.Contents { |
|
|
|
str1 := strings.Split(val.Key, "/") |
|
|
|
var isDir bool |
|
|
|
var fileName,nextParentDir string |
|
|
|
var fileName, nextParentDir string |
|
|
|
if strings.HasSuffix(val.Key, "/") { |
|
|
|
//dirs in next level dir |
|
|
|
if len(str1) - len(strPrefix) > 2 { |
|
|
|
if len(str1)-len(strPrefix) > 2 { |
|
|
|
continue |
|
|
|
} |
|
|
|
fileName = str1[len(str1)-2] |
|
|
|
@@ -199,12 +199,12 @@ func GetObsListObject(jobName, parentDir string) ([]FileInfo, error) { |
|
|
|
nextParentDir = parentDir + "/" + fileName |
|
|
|
} |
|
|
|
|
|
|
|
if fileName == strPrefix[len(strPrefix)-1] || (fileName + "/") == setting.OutPutPath { |
|
|
|
if fileName == strPrefix[len(strPrefix)-1] || (fileName+"/") == setting.OutPutPath { |
|
|
|
continue |
|
|
|
} |
|
|
|
} else { |
|
|
|
//files in next level dir |
|
|
|
if len(str1) - len(strPrefix) > 1 { |
|
|
|
if len(str1)-len(strPrefix) > 1 { |
|
|
|
continue |
|
|
|
} |
|
|
|
fileName = str1[len(str1)-1] |
|
|
|
@@ -213,10 +213,66 @@ func GetObsListObject(jobName, parentDir string) ([]FileInfo, error) { |
|
|
|
} |
|
|
|
|
|
|
|
fileInfo := FileInfo{ |
|
|
|
ModTime: val.LastModified.Format("2006-01-02 15:04:05"), |
|
|
|
ModTime: val.LastModified.Format("2006-01-02 15:04:05"), |
|
|
|
FileName: fileName, |
|
|
|
Size: val.Size, |
|
|
|
IsDir:isDir, |
|
|
|
Size: val.Size, |
|
|
|
IsDir: isDir, |
|
|
|
ParenDir: nextParentDir, |
|
|
|
} |
|
|
|
fileInfos = append(fileInfos, fileInfo) |
|
|
|
} |
|
|
|
return fileInfos, err |
|
|
|
} else { |
|
|
|
if obsError, ok := err.(obs.ObsError); ok { |
|
|
|
log.Error("Code:%s, Message:%s", obsError.Code, obsError.Message) |
|
|
|
} |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func GetVersionObsListObject(jobName, parentDir string) ([]FileInfo, error) { |
|
|
|
input := &obs.ListObjectsInput{} |
|
|
|
input.Bucket = setting.Bucket |
|
|
|
input.Prefix = strings.TrimPrefix(path.Join(setting.TrainJobModelPath, jobName, setting.OutPutPath, parentDir), "/") |
|
|
|
strPrefix := strings.Split(input.Prefix, "/") |
|
|
|
output, err := ObsCli.ListObjects(input) |
|
|
|
fileInfos := make([]FileInfo, 0) |
|
|
|
if err == nil { |
|
|
|
for _, val := range output.Contents { |
|
|
|
str1 := strings.Split(val.Key, "/") |
|
|
|
var isDir bool |
|
|
|
var fileName, nextParentDir string |
|
|
|
if strings.HasSuffix(val.Key, "/") { |
|
|
|
//dirs in next level dir |
|
|
|
if len(str1)-len(strPrefix) > 2 { |
|
|
|
continue |
|
|
|
} |
|
|
|
fileName = str1[len(str1)-2] |
|
|
|
isDir = true |
|
|
|
if parentDir == "" { |
|
|
|
nextParentDir = fileName |
|
|
|
} else { |
|
|
|
nextParentDir = parentDir + "/" + fileName |
|
|
|
} |
|
|
|
|
|
|
|
if fileName == strPrefix[len(strPrefix)-1] || (fileName+"/") == setting.OutPutPath { |
|
|
|
continue |
|
|
|
} |
|
|
|
} else { |
|
|
|
//files in next level dir |
|
|
|
if len(str1)-len(strPrefix) > 1 { |
|
|
|
continue |
|
|
|
} |
|
|
|
fileName = str1[len(str1)-1] |
|
|
|
isDir = false |
|
|
|
nextParentDir = parentDir |
|
|
|
} |
|
|
|
|
|
|
|
fileInfo := FileInfo{ |
|
|
|
ModTime: val.LastModified.Format("2006-01-02 15:04:05"), |
|
|
|
FileName: fileName, |
|
|
|
Size: val.Size, |
|
|
|
IsDir: isDir, |
|
|
|
ParenDir: nextParentDir, |
|
|
|
} |
|
|
|
fileInfos = append(fileInfos, fileInfo) |
|
|
|
@@ -257,7 +313,7 @@ func GetObsCreateSignedUrl(jobName, parentDir, fileName string) (string, error) |
|
|
|
input := &obs.CreateSignedUrlInput{} |
|
|
|
input.Bucket = setting.Bucket |
|
|
|
input.Key = strings.TrimPrefix(path.Join(setting.TrainJobModelPath, jobName, setting.OutPutPath, parentDir, fileName), "/") |
|
|
|
|
|
|
|
|
|
|
|
input.Expires = 60 * 60 |
|
|
|
input.Method = obs.HttpMethodGet |
|
|
|
|
|
|
|
|