-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrdsyaml.go
46 lines (37 loc) · 1.38 KB
/
rdsyaml.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
package xds
import (
"time"
)
type RDSConfig struct {
VHostName string `yaml:"vhost" validate:"required"`
Domain []string `yaml:"domain" validate:"required,unique"`
Cluster []RDSClusterConfig `yaml:"cluster" validate:"required"`
Action RDSActionConfig `yaml:"action" validate:"required"`
}
type RDSClusterConfig struct {
Prefix string `yaml:"prefix" validate:"required"`
Target []RDSClusterWeightConfig `yaml:"target" validate:"required"`
Headers []RDSClusterHeaderConfig `yaml:"headers" validate:""`
}
type RDSClusterWeightConfig struct {
ClusterName string `yaml:"name" validate:"required"`
Weight uint32 `yaml:"weight" validate:"gte=0,lte=100"`
}
type RDSClusterHeaderConfig struct {
HeaderName string `yaml:"name" validate:""`
StringMatch RDSStringMatcher `yaml:"string_match" validate:""`
}
type RDSStringMatcher struct {
Exact string `yaml:"exact" validate:""`
}
type RDSActionConfig struct {
Timeout uint32 `yaml:"timeout" validate:"required"`
IdleTimeout uint32 `yaml:"idle-timeout" validate:"required"`
RetryPolicy string `yaml:"retry-policy" validate:"required"`
}
func (c RDSActionConfig) TimeoutSecond() time.Duration {
return time.Duration(c.Timeout) * time.Second
}
func (c RDSActionConfig) IdleTimeoutSecond() time.Duration {
return time.Duration(c.IdleTimeout) * time.Second
}