package api
import (
"encoding/json"
"time"
)
type ServiceRouterConfigEntry struct {
Kind string
Name string
Routes [ ] ServiceRoute ` json:",omitempty" `
CreateIndex uint64
ModifyIndex uint64
}
func ( e * ServiceRouterConfigEntry ) GetKind ( ) string { return e . Kind }
func ( e * ServiceRouterConfigEntry ) GetName ( ) string { return e . Name }
func ( e * ServiceRouterConfigEntry ) GetCreateIndex ( ) uint64 { return e . CreateIndex }
func ( e * ServiceRouterConfigEntry ) GetModifyIndex ( ) uint64 { return e . ModifyIndex }
type ServiceRoute struct {
Match * ServiceRouteMatch ` json:",omitempty" `
Destination * ServiceRouteDestination ` json:",omitempty" `
}
type ServiceRouteMatch struct {
HTTP * ServiceRouteHTTPMatch ` json:",omitempty" `
}
type ServiceRouteHTTPMatch struct {
PathExact string ` json:",omitempty" `
PathPrefix string ` json:",omitempty" `
PathRegex string ` json:",omitempty" `
Header [ ] ServiceRouteHTTPMatchHeader ` json:",omitempty" `
QueryParam [ ] ServiceRouteHTTPMatchQueryParam ` json:",omitempty" `
Methods [ ] string ` json:",omitempty" `
}
type ServiceRouteHTTPMatchHeader struct {
Name string
Present bool ` json:",omitempty" `
Exact string ` json:",omitempty" `
Prefix string ` json:",omitempty" `
Suffix string ` json:",omitempty" `
Regex string ` json:",omitempty" `
Invert bool ` json:",omitempty" `
}
type ServiceRouteHTTPMatchQueryParam struct {
Name string
Present bool ` json:",omitempty" `
Exact string ` json:",omitempty" `
Regex string ` json:",omitempty" `
}
type ServiceRouteDestination struct {
Service string ` json:",omitempty" `
ServiceSubset string ` json:",omitempty" `
Namespace string ` json:",omitempty" `
PrefixRewrite string ` json:",omitempty" `
RequestTimeout time . Duration ` json:",omitempty" `
NumRetries uint32 ` json:",omitempty" `
RetryOnConnectFailure bool ` json:",omitempty" `
RetryOnStatusCodes [ ] uint32 ` json:",omitempty" `
}
func ( e * ServiceRouteDestination ) MarshalJSON ( ) ( [ ] byte , error ) {
type Alias ServiceRouteDestination
exported := & struct {
RequestTimeout string ` json:",omitempty" `
* Alias
} {
RequestTimeout : e . RequestTimeout . String ( ) ,
Alias : ( * Alias ) ( e ) ,
}
if e . RequestTimeout == 0 {
exported . RequestTimeout = ""
}
return json . Marshal ( exported )
}
func ( e * ServiceRouteDestination ) UnmarshalJSON ( data [ ] byte ) error {
type Alias ServiceRouteDestination
aux := & struct {
RequestTimeout string
* Alias
} {
Alias : ( * Alias ) ( e ) ,
}
if err := json . Unmarshal ( data , & aux ) ; err != nil {
return err
}
var err error
if aux . RequestTimeout != "" {
if e . RequestTimeout , err = time . ParseDuration ( aux . RequestTimeout ) ; err != nil {
return err
}
}
return nil
}
type ServiceSplitterConfigEntry struct {
Kind string
Name string
Splits [ ] ServiceSplit ` json:",omitempty" `
CreateIndex uint64
ModifyIndex uint64
}
func ( e * ServiceSplitterConfigEntry ) GetKind ( ) string { return e . Kind }
func ( e * ServiceSplitterConfigEntry ) GetName ( ) string { return e . Name }
func ( e * ServiceSplitterConfigEntry ) GetCreateIndex ( ) uint64 { return e . CreateIndex }
func ( e * ServiceSplitterConfigEntry ) GetModifyIndex ( ) uint64 { return e . ModifyIndex }
type ServiceSplit struct {
Weight float32
Service string ` json:",omitempty" `
ServiceSubset string ` json:",omitempty" `
Namespace string ` json:",omitempty" `
}
type ServiceResolverConfigEntry struct {
Kind string
Name string
DefaultSubset string ` json:",omitempty" `
Subsets map [ string ] ServiceResolverSubset ` json:",omitempty" `
Redirect * ServiceResolverRedirect ` json:",omitempty" `
Failover map [ string ] ServiceResolverFailover ` json:",omitempty" `
ConnectTimeout time . Duration ` json:",omitempty" `
CreateIndex uint64
ModifyIndex uint64
}
func ( e * ServiceResolverConfigEntry ) MarshalJSON ( ) ( [ ] byte , error ) {
type Alias ServiceResolverConfigEntry
exported := & struct {
ConnectTimeout string ` json:",omitempty" `
* Alias
} {
ConnectTimeout : e . ConnectTimeout . String ( ) ,
Alias : ( * Alias ) ( e ) ,
}
if e . ConnectTimeout == 0 {
exported . ConnectTimeout = ""
}
return json . Marshal ( exported )
}
func ( e * ServiceResolverConfigEntry ) UnmarshalJSON ( data [ ] byte ) error {
type Alias ServiceResolverConfigEntry
aux := & struct {
ConnectTimeout string
* Alias
} {
Alias : ( * Alias ) ( e ) ,
}
if err := json . Unmarshal ( data , & aux ) ; err != nil {
return err
}
var err error
if aux . ConnectTimeout != "" {
if e . ConnectTimeout , err = time . ParseDuration ( aux . ConnectTimeout ) ; err != nil {
return err
}
}
return nil
}
func ( e * ServiceResolverConfigEntry ) GetKind ( ) string { return e . Kind }
func ( e * ServiceResolverConfigEntry ) GetName ( ) string { return e . Name }
func ( e * ServiceResolverConfigEntry ) GetCreateIndex ( ) uint64 { return e . CreateIndex }
func ( e * ServiceResolverConfigEntry ) GetModifyIndex ( ) uint64 { return e . ModifyIndex }
type ServiceResolverSubset struct {
Filter string ` json:",omitempty" `
OnlyPassing bool ` json:",omitempty" `
}
type ServiceResolverRedirect struct {
Service string ` json:",omitempty" `
ServiceSubset string ` json:",omitempty" `
Namespace string ` json:",omitempty" `
Datacenter string ` json:",omitempty" `
}
type ServiceResolverFailover struct {
Service string ` json:",omitempty" `
ServiceSubset string ` json:",omitempty" `
Namespace string ` json:",omitempty" `
Datacenters [ ] string ` json:",omitempty" `
}