Skip to content

Commit 5bf8ec2

Browse files
committed
ci: refractor get fileparam from uri
1 parent b19a612 commit 5bf8ec2

File tree

4 files changed

+348
-1
lines changed

4 files changed

+348
-1
lines changed

pkg/global/node.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package global
22

33
import (
44
"context"
5+
"os"
56
"sync"
67
"time"
78

@@ -22,7 +23,8 @@ var (
2223
)
2324

2425
var (
25-
GlobalNode *Node
26+
GlobalNode *Node
27+
CurrentNodeName string
2628
)
2729

2830
type NodeInfo struct {
@@ -36,6 +38,8 @@ type Node struct {
3638
}
3739

3840
func InitGlobalNodes(config *rest.Config) error {
41+
CurrentNodeName = os.Getenv("NODE_NAME")
42+
3943
GlobalNode = &Node{
4044
k8sClient: kubernetes.NewForConfigOrDie(config),
4145
Nodes: make(map[string]*v1.Node),

pkg/global/pvc.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,58 @@ func (g *Data) GetPvcUser(user string) string {
6464
return g.UserPvcMap[user]
6565
}
6666

67+
func (g *Data) GetPvcUserName(pvcUser string) (string, error) {
68+
g.mu.RLock()
69+
defer g.mu.RUnlock()
70+
71+
var user string
72+
for k, v := range g.UserPvcMap {
73+
if v == pvcUser {
74+
user = k
75+
break
76+
}
77+
}
78+
79+
if user == "" {
80+
return "", fmt.Errorf("userspace pvc not found, name: %s", pvcUser)
81+
}
82+
83+
return user, nil
84+
}
85+
86+
func (g *Data) GetPvcCacheName(pvcCache string) (string, error) {
87+
g.mu.RLock()
88+
defer g.mu.RUnlock()
89+
90+
var user string
91+
for k, v := range g.CachePvcMap {
92+
if v == pvcCache {
93+
user = k
94+
break
95+
}
96+
}
97+
98+
if user == "" {
99+
return "", fmt.Errorf("appcache pvc not found, name: %s", pvcCache)
100+
}
101+
102+
return user, nil
103+
}
104+
67105
func (g *Data) GetPvcCache(user string) string {
68106
g.mu.RLock()
69107
defer g.mu.RUnlock()
70108

71109
return g.CachePvcMap[user]
72110
}
73111

112+
func (g *Data) GetPvcCaches() map[string]string {
113+
g.mu.RLock()
114+
defer g.mu.RUnlock()
115+
116+
return g.CachePvcMap
117+
}
118+
74119
func (g *Data) getGlobalData() error {
75120
users := g.getUsers()
76121
if users == nil || len(users) == 0 {

pkg/models/file_param.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,70 @@ func (r *FileParam) GetResourceUri() (string, error) {
142142

143143
}
144144

145+
func (r *FileParam) GetFileParam(uri string) error {
146+
var u = strings.TrimLeft(uri, "/")
147+
148+
var s = strings.Split(u, "/")
149+
if len(s) < 2 {
150+
return errors.New("url invalid")
151+
}
152+
153+
if s[0] == constant.AwsS3 || s[0] == constant.DropBox || s[0] == constant.GoogleDrive {
154+
r.Owner = ""
155+
r.FileType = s[0]
156+
r.Extend = s[1]
157+
r.Path = r.joinPath(2, s)
158+
return nil
159+
160+
}
161+
162+
if s[0] == constant.Sync {
163+
r.Owner = ""
164+
r.FileType = s[0]
165+
r.Extend = s[1]
166+
r.Path = r.joinPath(2, s)
167+
return nil
168+
169+
}
170+
171+
if strings.HasPrefix(uri, constant.ROOT_PREFIX+"/") {
172+
var p = strings.TrimPrefix(uri, constant.ROOT_PREFIX+"/")
173+
s = strings.Split(p, "/")
174+
pvcUser, err := global.GlobalData.GetPvcUserName(s[0])
175+
if err == nil {
176+
r.Owner = pvcUser
177+
r.FileType = constant.Drive
178+
r.Extend = s[1]
179+
r.Path = r.joinPath(2, s)
180+
return nil
181+
}
182+
}
183+
184+
if strings.HasPrefix(uri, constant.CACHE_PREFIX+"/") {
185+
var p = strings.TrimPrefix(uri, constant.CACHE_PREFIX+"/")
186+
s = strings.Split(p, "/")
187+
pvcCache, err := global.GlobalData.GetPvcCacheName(s[0])
188+
if err == nil {
189+
r.Owner = pvcCache
190+
r.FileType = constant.Cache
191+
r.Extend = global.CurrentNodeName
192+
r.Path = r.joinPath(1, s)
193+
return nil
194+
}
195+
}
196+
197+
if strings.HasPrefix(uri, constant.EXTERNAL_PREFIX+"/") {
198+
var p = strings.TrimPrefix(uri, constant.EXTERNAL_PREFIX+"/")
199+
s = strings.Split(p, "/")
200+
r.Owner = ""
201+
r.FileType = constant.External
202+
r.Extend = global.CurrentNodeName
203+
r.Path = r.joinPath(0, s)
204+
return nil
205+
}
206+
return nil
207+
}
208+
145209
func (r *FileParam) IsFile() (string, bool) {
146210
var p = strings.Split(r.Path, "/")
147211
var fileName = p[len(p)-1]
@@ -150,3 +214,14 @@ func (r *FileParam) IsFile() (string, bool) {
150214
}
151215
return "", false
152216
}
217+
218+
func (r *FileParam) joinPath(pos int, s []string) string {
219+
var str string
220+
for i := pos; i < len(s); i++ {
221+
str = str + "/" + s[i]
222+
}
223+
if str == "" {
224+
str = "/"
225+
}
226+
return str
227+
}

0 commit comments

Comments
 (0)