-
Notifications
You must be signed in to change notification settings - Fork 2
/
router.go
48 lines (41 loc) · 1.23 KB
/
router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package translation
import (
"fmt"
kubev1 "github.com/eolinker/apinto-ingress-controller/pkg/kube/apinto/configs/apinto/v1"
apintov1 "github.com/eolinker/apinto-ingress-controller/pkg/types/apinto/v1"
)
func KubeRouterToApinto(ar *kubev1.ApintoRouter) *apintov1.Router {
kRouter := ar.Spec
//拷贝Cert
cert := make([]apintov1.Cert, len(kRouter.Cert))
for i, v := range kRouter.Cert {
cert[i] = apintov1.Cert{Key: v.Key, Crt: v.Crt}
}
//拷贝rules
rules := make([]apintov1.Rule, len(kRouter.Rules))
for i, v := range kRouter.Rules {
rules[i] = apintov1.Rule{Location: v.Location, Header: v.Header, Query: v.Query}
}
//拷贝Plugins
plugins := make(map[string]apintov1.PluginConfig)
for k, v := range kRouter.Plugins {
plugins[k] = apintov1.PluginConfig{Disable: v.Disable, Config: v.Config}
}
apintoRouter := &apintov1.Router{
Metadata: apintov1.Metadata{
Name: kRouter.Name,
Profession: "router",
Driver: kRouter.Driver,
ID: fmt.Sprintf("%s@router", kRouter.Name),
},
Listen: kRouter.Listen,
Target: kRouter.Target,
Method: kRouter.Method,
Host: kRouter.Host,
Protocol: kRouter.Protocol,
Cert: cert,
Rules: rules,
Plugins: plugins,
}
return apintoRouter
}