/
model_convert.go
45 lines (38 loc) · 1.38 KB
/
model_convert.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
package session
import (
istiov1alpha1 "github.com/maistra/istio-workspace/api/maistra/v1alpha1"
"github.com/maistra/istio-workspace/pkg/model"
)
const (
// DefaultRouteHeaderName holds the name of the Header used to route traffic if no Route is provided.
DefaultRouteHeaderName = "x-workspace-route"
// RouteStrategyHeader holds the Route Type keyword for a Header based Route strategy.
RouteStrategyHeader = "header"
)
// ConvertAPIRefToModelRef converts a Session.Spec.Ref to a model.Ref.
func ConvertAPIRefToModelRef(ref istiov1alpha1.Ref, namespace string) model.Ref {
return model.Ref{KindName: model.ParseRefKindName(ref.Name), Namespace: namespace, Strategy: ref.Strategy, Args: ref.Args}
}
// ConvertModelRouteToAPIRoute returns Model route as a session Route.
func ConvertModelRouteToAPIRoute(route model.Route) *istiov1alpha1.Route {
return &istiov1alpha1.Route{
Type: route.Type,
Name: route.Name,
Value: route.Value,
}
}
// ConvertAPIRouteToModelRoute returns the defined route from the session or the Default.
func ConvertAPIRouteToModelRoute(session *istiov1alpha1.Session) model.Route {
if session.Spec.Route.Type == "" {
return model.Route{
Type: RouteStrategyHeader,
Name: DefaultRouteHeaderName,
Value: session.Name,
}
}
return model.Route{
Type: session.Spec.Route.Type,
Name: session.Spec.Route.Name,
Value: session.Spec.Route.Value,
}
}