1
0
mirror of https://github.com/rancher/types.git synced 2025-09-18 16:10:58 +00:00

go generate

This commit is contained in:
gitlawr
2019-06-17 17:40:23 +08:00
parent bd5a9e3e53
commit a0afba4d18
45 changed files with 5609 additions and 0 deletions

View File

@@ -47,6 +47,8 @@ type Client struct {
PrometheusRule PrometheusRuleOperations
Alertmanager AlertmanagerOperations
HorizontalPodAutoscaler HorizontalPodAutoscalerOperations
VirtualService VirtualServiceOperations
DestinationRule DestinationRuleOperations
}
func NewClient(opts *clientbase.ClientOpts) (*Client, error) {
@@ -99,6 +101,8 @@ func NewClient(opts *clientbase.ClientOpts) (*Client, error) {
client.PrometheusRule = newPrometheusRuleClient(client)
client.Alertmanager = newAlertmanagerClient(client)
client.HorizontalPodAutoscaler = newHorizontalPodAutoscalerClient(client)
client.VirtualService = newVirtualServiceClient(client)
client.DestinationRule = newDestinationRuleClient(client)
return client, nil
}

View File

@@ -0,0 +1,12 @@
package client
const (
ConnectionPoolSettingsType = "connectionPoolSettings"
ConnectionPoolSettingsFieldHTTP = "http"
ConnectionPoolSettingsFieldTCP = "tcp"
)
type ConnectionPoolSettings struct {
HTTP *HTTPSettings `json:"http,omitempty" yaml:"http,omitempty"`
TCP *TCPSettings `json:"tcp,omitempty" yaml:"tcp,omitempty"`
}

View File

@@ -0,0 +1,16 @@
package client
const (
ConsistentHashLBType = "consistentHashLB"
ConsistentHashLBFieldHTTPCookie = "httpCookie"
ConsistentHashLBFieldHTTPHeaderName = "httpHeaderName"
ConsistentHashLBFieldMinimumRingSize = "minimumRingSize"
ConsistentHashLBFieldUseSourceIP = "useSourceIp"
)
type ConsistentHashLB struct {
HTTPCookie *HTTPCookie `json:"httpCookie,omitempty" yaml:"httpCookie,omitempty"`
HTTPHeaderName string `json:"httpHeaderName,omitempty" yaml:"httpHeaderName,omitempty"`
MinimumRingSize int64 `json:"minimumRingSize,omitempty" yaml:"minimumRingSize,omitempty"`
UseSourceIP bool `json:"useSourceIp,omitempty" yaml:"useSourceIp,omitempty"`
}

View File

@@ -0,0 +1,20 @@
package client
const (
CorsPolicyType = "corsPolicy"
CorsPolicyFieldAllowCredentials = "allowCredentials"
CorsPolicyFieldAllowHeaders = "allowHeaders"
CorsPolicyFieldAllowMethods = "allowMethods"
CorsPolicyFieldAllowOrigin = "allowOrigin"
CorsPolicyFieldExposeHeaders = "exposeHeaders"
CorsPolicyFieldMaxAge = "maxAge"
)
type CorsPolicy struct {
AllowCredentials bool `json:"allowCredentials,omitempty" yaml:"allowCredentials,omitempty"`
AllowHeaders []string `json:"allowHeaders,omitempty" yaml:"allowHeaders,omitempty"`
AllowMethods []string `json:"allowMethods,omitempty" yaml:"allowMethods,omitempty"`
AllowOrigin []string `json:"allowOrigin,omitempty" yaml:"allowOrigin,omitempty"`
ExposeHeaders []string `json:"exposeHeaders,omitempty" yaml:"exposeHeaders,omitempty"`
MaxAge string `json:"maxAge,omitempty" yaml:"maxAge,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
DestinationType = "destination"
DestinationFieldHost = "host"
DestinationFieldPort = "port"
DestinationFieldSubset = "subset"
)
type Destination struct {
Host string `json:"host,omitempty" yaml:"host,omitempty"`
Port *PortSelector `json:"port,omitempty" yaml:"port,omitempty"`
Subset string `json:"subset,omitempty" yaml:"subset,omitempty"`
}

View File

@@ -0,0 +1,117 @@
package client
import (
"github.com/rancher/norman/types"
)
const (
DestinationRuleType = "destinationRule"
DestinationRuleFieldAnnotations = "annotations"
DestinationRuleFieldCreated = "created"
DestinationRuleFieldCreatorID = "creatorId"
DestinationRuleFieldHost = "host"
DestinationRuleFieldLabels = "labels"
DestinationRuleFieldName = "name"
DestinationRuleFieldNamespaceId = "namespaceId"
DestinationRuleFieldOwnerReferences = "ownerReferences"
DestinationRuleFieldProjectID = "projectId"
DestinationRuleFieldRemoved = "removed"
DestinationRuleFieldState = "state"
DestinationRuleFieldStatus = "status"
DestinationRuleFieldSubsets = "subsets"
DestinationRuleFieldTrafficPolicy = "trafficPolicy"
DestinationRuleFieldTransitioning = "transitioning"
DestinationRuleFieldTransitioningMessage = "transitioningMessage"
DestinationRuleFieldUUID = "uuid"
)
type DestinationRule struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Host string `json:"host,omitempty" yaml:"host,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
NamespaceId string `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
ProjectID string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
State string `json:"state,omitempty" yaml:"state,omitempty"`
Status interface{} `json:"status,omitempty" yaml:"status,omitempty"`
Subsets []Subset `json:"subsets,omitempty" yaml:"subsets,omitempty"`
TrafficPolicy *TrafficPolicy `json:"trafficPolicy,omitempty" yaml:"trafficPolicy,omitempty"`
Transitioning string `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
TransitioningMessage string `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
}
type DestinationRuleCollection struct {
types.Collection
Data []DestinationRule `json:"data,omitempty"`
client *DestinationRuleClient
}
type DestinationRuleClient struct {
apiClient *Client
}
type DestinationRuleOperations interface {
List(opts *types.ListOpts) (*DestinationRuleCollection, error)
Create(opts *DestinationRule) (*DestinationRule, error)
Update(existing *DestinationRule, updates interface{}) (*DestinationRule, error)
Replace(existing *DestinationRule) (*DestinationRule, error)
ByID(id string) (*DestinationRule, error)
Delete(container *DestinationRule) error
}
func newDestinationRuleClient(apiClient *Client) *DestinationRuleClient {
return &DestinationRuleClient{
apiClient: apiClient,
}
}
func (c *DestinationRuleClient) Create(container *DestinationRule) (*DestinationRule, error) {
resp := &DestinationRule{}
err := c.apiClient.Ops.DoCreate(DestinationRuleType, container, resp)
return resp, err
}
func (c *DestinationRuleClient) Update(existing *DestinationRule, updates interface{}) (*DestinationRule, error) {
resp := &DestinationRule{}
err := c.apiClient.Ops.DoUpdate(DestinationRuleType, &existing.Resource, updates, resp)
return resp, err
}
func (c *DestinationRuleClient) Replace(obj *DestinationRule) (*DestinationRule, error) {
resp := &DestinationRule{}
err := c.apiClient.Ops.DoReplace(DestinationRuleType, &obj.Resource, obj, resp)
return resp, err
}
func (c *DestinationRuleClient) List(opts *types.ListOpts) (*DestinationRuleCollection, error) {
resp := &DestinationRuleCollection{}
err := c.apiClient.Ops.DoList(DestinationRuleType, opts, resp)
resp.client = c
return resp, err
}
func (cc *DestinationRuleCollection) Next() (*DestinationRuleCollection, error) {
if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
resp := &DestinationRuleCollection{}
err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
resp.client = cc.client
return resp, err
}
return nil, nil
}
func (c *DestinationRuleClient) ByID(id string) (*DestinationRule, error) {
resp := &DestinationRule{}
err := c.apiClient.Ops.DoByID(DestinationRuleType, id, resp)
return resp, err
}
func (c *DestinationRuleClient) Delete(container *DestinationRule) error {
return c.apiClient.Ops.DoResourceDelete(DestinationRuleType, &container.Resource)
}

View File

@@ -0,0 +1,14 @@
package client
const (
DestinationRuleSpecType = "destinationRuleSpec"
DestinationRuleSpecFieldHost = "host"
DestinationRuleSpecFieldSubsets = "subsets"
DestinationRuleSpecFieldTrafficPolicy = "trafficPolicy"
)
type DestinationRuleSpec struct {
Host string `json:"host,omitempty" yaml:"host,omitempty"`
Subsets []Subset `json:"subsets,omitempty" yaml:"subsets,omitempty"`
TrafficPolicy *TrafficPolicy `json:"trafficPolicy,omitempty" yaml:"trafficPolicy,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
HeaderOperationsType = "headerOperations"
HeaderOperationsFieldAdd = "add"
HeaderOperationsFieldRemove = "remove"
HeaderOperationsFieldSet = "set"
)
type HeaderOperations struct {
Add map[string]string `json:"add,omitempty" yaml:"add,omitempty"`
Remove []string `json:"remove,omitempty" yaml:"remove,omitempty"`
Set map[string]string `json:"set,omitempty" yaml:"set,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
HeadersType = "headers"
HeadersFieldRequest = "request"
HeadersFieldResponse = "response"
)
type Headers struct {
Request *HeaderOperations `json:"request,omitempty" yaml:"request,omitempty"`
Response *HeaderOperations `json:"response,omitempty" yaml:"response,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
HTTPCookieType = "httpCookie"
HTTPCookieFieldName = "name"
HTTPCookieFieldPath = "path"
HTTPCookieFieldTTL = "ttl"
)
type HTTPCookie struct {
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Path string `json:"path,omitempty" yaml:"path,omitempty"`
TTL string `json:"ttl,omitempty" yaml:"ttl,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
HTTPFaultInjectionType = "httpFaultInjection"
HTTPFaultInjectionFieldAbort = "abort"
HTTPFaultInjectionFieldDelay = "delay"
)
type HTTPFaultInjection struct {
Abort *InjectAbort `json:"abort,omitempty" yaml:"abort,omitempty"`
Delay *InjectDelay `json:"delay,omitempty" yaml:"delay,omitempty"`
}

View File

@@ -0,0 +1,24 @@
package client
const (
HTTPMatchRequestType = "httpMatchRequest"
HTTPMatchRequestFieldAuthority = "authority"
HTTPMatchRequestFieldGateways = "gateways"
HTTPMatchRequestFieldHeaders = "headers"
HTTPMatchRequestFieldMethod = "method"
HTTPMatchRequestFieldPort = "port"
HTTPMatchRequestFieldScheme = "scheme"
HTTPMatchRequestFieldSourceLabels = "sourceLabels"
HTTPMatchRequestFieldURI = "uri"
)
type HTTPMatchRequest struct {
Authority *StringMatch `json:"authority,omitempty" yaml:"authority,omitempty"`
Gateways []string `json:"gateways,omitempty" yaml:"gateways,omitempty"`
Headers map[string]StringMatch `json:"headers,omitempty" yaml:"headers,omitempty"`
Method *StringMatch `json:"method,omitempty" yaml:"method,omitempty"`
Port *int64 `json:"port,omitempty" yaml:"port,omitempty"`
Scheme *StringMatch `json:"scheme,omitempty" yaml:"scheme,omitempty"`
SourceLabels map[string]string `json:"sourceLabels,omitempty" yaml:"sourceLabels,omitempty"`
URI *StringMatch `json:"uri,omitempty" yaml:"uri,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
HTTPRedirectType = "httpRedirect"
HTTPRedirectFieldAuthority = "authority"
HTTPRedirectFieldURI = "uri"
)
type HTTPRedirect struct {
Authority string `json:"authority,omitempty" yaml:"authority,omitempty"`
URI string `json:"uri,omitempty" yaml:"uri,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
HTTPRetryType = "httpRetry"
HTTPRetryFieldAttempts = "attempts"
HTTPRetryFieldPerTryTimeout = "perTryTimeout"
)
type HTTPRetry struct {
Attempts int64 `json:"attempts,omitempty" yaml:"attempts,omitempty"`
PerTryTimeout string `json:"perTryTimeout,omitempty" yaml:"perTryTimeout,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
HTTPRewriteType = "httpRewrite"
HTTPRewriteFieldAuthority = "authority"
HTTPRewriteFieldURI = "uri"
)
type HTTPRewrite struct {
Authority string `json:"authority,omitempty" yaml:"authority,omitempty"`
URI string `json:"uri,omitempty" yaml:"uri,omitempty"`
}

View File

@@ -0,0 +1,34 @@
package client
const (
HTTPRouteType = "httpRoute"
HTTPRouteFieldCorsPolicy = "corsPolicy"
HTTPRouteFieldDeprecatedAppendHeaders = "appendHeaders"
HTTPRouteFieldFault = "fault"
HTTPRouteFieldHeaders = "headers"
HTTPRouteFieldMatch = "match"
HTTPRouteFieldMirror = "mirror"
HTTPRouteFieldRedirect = "redirect"
HTTPRouteFieldRemoveResponseHeaders = "removeResponseHeaders"
HTTPRouteFieldRetries = "retries"
HTTPRouteFieldRewrite = "rewrite"
HTTPRouteFieldRoute = "route"
HTTPRouteFieldTimeout = "timeout"
HTTPRouteFieldWebsocketUpgrade = "websocketUpgrade"
)
type HTTPRoute struct {
CorsPolicy *CorsPolicy `json:"corsPolicy,omitempty" yaml:"corsPolicy,omitempty"`
DeprecatedAppendHeaders map[string]string `json:"appendHeaders,omitempty" yaml:"appendHeaders,omitempty"`
Fault *HTTPFaultInjection `json:"fault,omitempty" yaml:"fault,omitempty"`
Headers *Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
Match []HTTPMatchRequest `json:"match,omitempty" yaml:"match,omitempty"`
Mirror *Destination `json:"mirror,omitempty" yaml:"mirror,omitempty"`
Redirect *HTTPRedirect `json:"redirect,omitempty" yaml:"redirect,omitempty"`
RemoveResponseHeaders map[string]string `json:"removeResponseHeaders,omitempty" yaml:"removeResponseHeaders,omitempty"`
Retries *HTTPRetry `json:"retries,omitempty" yaml:"retries,omitempty"`
Rewrite *HTTPRewrite `json:"rewrite,omitempty" yaml:"rewrite,omitempty"`
Route []HTTPRouteDestination `json:"route,omitempty" yaml:"route,omitempty"`
Timeout string `json:"timeout,omitempty" yaml:"timeout,omitempty"`
WebsocketUpgrade *bool `json:"websocketUpgrade,omitempty" yaml:"websocketUpgrade,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
HTTPRouteDestinationType = "httpRouteDestination"
HTTPRouteDestinationFieldDestination = "destination"
HTTPRouteDestinationFieldHeaders = "headers"
HTTPRouteDestinationFieldWeight = "weight"
)
type HTTPRouteDestination struct {
Destination *Destination `json:"destination,omitempty" yaml:"destination,omitempty"`
Headers *Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
Weight int64 `json:"weight,omitempty" yaml:"weight,omitempty"`
}

View File

@@ -0,0 +1,16 @@
package client
const (
HTTPSettingsType = "httpSettings"
HTTPSettingsFieldHTTP1MaxPendingRequests = "http1MaxPendingRequests"
HTTPSettingsFieldHTTP2MaxRequests = "http2MaxRequests"
HTTPSettingsFieldMaxRequestsPerConnection = "maxRequestsPerConnection"
HTTPSettingsFieldMaxRetries = "maxRetries"
)
type HTTPSettings struct {
HTTP1MaxPendingRequests int64 `json:"http1MaxPendingRequests,omitempty" yaml:"http1MaxPendingRequests,omitempty"`
HTTP2MaxRequests int64 `json:"http2MaxRequests,omitempty" yaml:"http2MaxRequests,omitempty"`
MaxRequestsPerConnection int64 `json:"maxRequestsPerConnection,omitempty" yaml:"maxRequestsPerConnection,omitempty"`
MaxRetries int64 `json:"maxRetries,omitempty" yaml:"maxRetries,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
InjectAbortType = "injectAbort"
InjectAbortFieldHTTPStatus = "httpStatus"
InjectAbortFieldPercent = "percent"
)
type InjectAbort struct {
HTTPStatus int64 `json:"httpStatus,omitempty" yaml:"httpStatus,omitempty"`
Percent int64 `json:"percent,omitempty" yaml:"percent,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
InjectDelayType = "injectDelay"
InjectDelayFieldExponentialDelay = "exponentialDelay"
InjectDelayFieldFixedDelay = "fixedDelay"
InjectDelayFieldPercent = "percent"
)
type InjectDelay struct {
ExponentialDelay string `json:"exponentialDelay,omitempty" yaml:"exponentialDelay,omitempty"`
FixedDelay string `json:"fixedDelay,omitempty" yaml:"fixedDelay,omitempty"`
Percent int64 `json:"percent,omitempty" yaml:"percent,omitempty"`
}

View File

@@ -0,0 +1,16 @@
package client
const (
L4MatchAttributesType = "l4MatchAttributes"
L4MatchAttributesFieldDestinationSubnets = "destinationSubnets"
L4MatchAttributesFieldGateways = "gateways"
L4MatchAttributesFieldPort = "port"
L4MatchAttributesFieldSourceLabels = "sourceLabels"
)
type L4MatchAttributes struct {
DestinationSubnets []string `json:"destinationSubnets,omitempty" yaml:"destinationSubnets,omitempty"`
Gateways []string `json:"gateways,omitempty" yaml:"gateways,omitempty"`
Port int64 `json:"port,omitempty" yaml:"port,omitempty"`
SourceLabels map[string]string `json:"sourceLabels,omitempty" yaml:"sourceLabels,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
LoadBalancerSettingsType = "loadBalancerSettings"
LoadBalancerSettingsFieldConsistentHash = "consistentHash"
LoadBalancerSettingsFieldSimple = "simple"
)
type LoadBalancerSettings struct {
ConsistentHash *ConsistentHashLB `json:"consistentHash,omitempty" yaml:"consistentHash,omitempty"`
Simple string `json:"simple,omitempty" yaml:"simple,omitempty"`
}

View File

@@ -0,0 +1,16 @@
package client
const (
OutlierDetectionType = "outlierDetection"
OutlierDetectionFieldBaseEjectionTime = "baseEjectionTime"
OutlierDetectionFieldConsecutiveErrors = "consecutiveErrors"
OutlierDetectionFieldInterval = "interval"
OutlierDetectionFieldMaxEjectionPercent = "maxEjectionPercent"
)
type OutlierDetection struct {
BaseEjectionTime string `json:"baseEjectionTime,omitempty" yaml:"baseEjectionTime,omitempty"`
ConsecutiveErrors int64 `json:"consecutiveErrors,omitempty" yaml:"consecutiveErrors,omitempty"`
Interval string `json:"interval,omitempty" yaml:"interval,omitempty"`
MaxEjectionPercent int64 `json:"maxEjectionPercent,omitempty" yaml:"maxEjectionPercent,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
PortSelectorType = "portSelector"
PortSelectorFieldName = "name"
PortSelectorFieldNumber = "number"
)
type PortSelector struct {
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Number int64 `json:"number,omitempty" yaml:"number,omitempty"`
}

View File

@@ -0,0 +1,18 @@
package client
const (
PortTrafficPolicyType = "portTrafficPolicy"
PortTrafficPolicyFieldConnectionPool = "connectionPool"
PortTrafficPolicyFieldLoadBalancer = "loadBalancer"
PortTrafficPolicyFieldOutlierDetection = "outlierDetection"
PortTrafficPolicyFieldPort = "port"
PortTrafficPolicyFieldTLS = "tls"
)
type PortTrafficPolicy struct {
ConnectionPool *ConnectionPoolSettings `json:"connectionPool,omitempty" yaml:"connectionPool,omitempty"`
LoadBalancer *LoadBalancerSettings `json:"loadBalancer,omitempty" yaml:"loadBalancer,omitempty"`
OutlierDetection *OutlierDetection `json:"outlierDetection,omitempty" yaml:"outlierDetection,omitempty"`
Port *PortSelector `json:"port,omitempty" yaml:"port,omitempty"`
TLS *TLSSettings `json:"tls,omitempty" yaml:"tls,omitempty"`
}

View File

@@ -0,0 +1,16 @@
package client
const (
StringMatchType = "stringMatch"
StringMatchFieldExact = "exact"
StringMatchFieldPrefix = "prefix"
StringMatchFieldRegex = "regex"
StringMatchFieldSuffix = "suffix"
)
type StringMatch struct {
Exact string `json:"exact,omitempty" yaml:"exact,omitempty"`
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Regex string `json:"regex,omitempty" yaml:"regex,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
}

View File

@@ -0,0 +1,14 @@
package client
const (
SubsetType = "subset"
SubsetFieldLabels = "labels"
SubsetFieldName = "name"
SubsetFieldTrafficPolicy = "trafficPolicy"
)
type Subset struct {
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
TrafficPolicy *TrafficPolicy `json:"trafficPolicy,omitempty" yaml:"trafficPolicy,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
TCPRouteType = "tcpRoute"
TCPRouteFieldMatch = "match"
TCPRouteFieldRoute = "route"
)
type TCPRoute struct {
Match []L4MatchAttributes `json:"match,omitempty" yaml:"match,omitempty"`
Route []HTTPRouteDestination `json:"route,omitempty" yaml:"route,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
TCPSettingsType = "tcpSettings"
TCPSettingsFieldConnectTimeout = "connectTimeout"
TCPSettingsFieldMaxConnections = "maxConnections"
)
type TCPSettings struct {
ConnectTimeout string `json:"connectTimeout,omitempty" yaml:"connectTimeout,omitempty"`
MaxConnections int64 `json:"maxConnections,omitempty" yaml:"maxConnections,omitempty"`
}

View File

@@ -0,0 +1,18 @@
package client
const (
TLSMatchAttributesType = "tlsMatchAttributes"
TLSMatchAttributesFieldDestinationSubnets = "destinationSubnets"
TLSMatchAttributesFieldGateways = "gateways"
TLSMatchAttributesFieldPort = "port"
TLSMatchAttributesFieldSniHosts = "sniHosts"
TLSMatchAttributesFieldSourceLabels = "sourceLabels"
)
type TLSMatchAttributes struct {
DestinationSubnets []string `json:"destinationSubnets,omitempty" yaml:"destinationSubnets,omitempty"`
Gateways []string `json:"gateways,omitempty" yaml:"gateways,omitempty"`
Port int64 `json:"port,omitempty" yaml:"port,omitempty"`
SniHosts []string `json:"sniHosts,omitempty" yaml:"sniHosts,omitempty"`
SourceLabels map[string]string `json:"sourceLabels,omitempty" yaml:"sourceLabels,omitempty"`
}

View File

@@ -0,0 +1,12 @@
package client
const (
TLSRouteType = "tlsRoute"
TLSRouteFieldMatch = "match"
TLSRouteFieldRoute = "route"
)
type TLSRoute struct {
Match []TLSMatchAttributes `json:"match,omitempty" yaml:"match,omitempty"`
Route []HTTPRouteDestination `json:"route,omitempty" yaml:"route,omitempty"`
}

View File

@@ -0,0 +1,20 @@
package client
const (
TLSSettingsType = "tlsSettings"
TLSSettingsFieldCaCertificates = "caCertificates"
TLSSettingsFieldClientCertificate = "clientCertificate"
TLSSettingsFieldMode = "mode"
TLSSettingsFieldPrivateKey = "privateKey"
TLSSettingsFieldSni = "sni"
TLSSettingsFieldSubjectAltNames = "subjectAltNames"
)
type TLSSettings struct {
CaCertificates string `json:"caCertificates,omitempty" yaml:"caCertificates,omitempty"`
ClientCertificate string `json:"clientCertificate,omitempty" yaml:"clientCertificate,omitempty"`
Mode string `json:"mode,omitempty" yaml:"mode,omitempty"`
PrivateKey string `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
Sni string `json:"sni,omitempty" yaml:"sni,omitempty"`
SubjectAltNames []string `json:"subjectAltNames,omitempty" yaml:"subjectAltNames,omitempty"`
}

View File

@@ -0,0 +1,18 @@
package client
const (
TrafficPolicyType = "trafficPolicy"
TrafficPolicyFieldConnectionPool = "connectionPool"
TrafficPolicyFieldLoadBalancer = "loadBalancer"
TrafficPolicyFieldOutlierDetection = "outlierDetection"
TrafficPolicyFieldPortLevelSettings = "portLevelSettings"
TrafficPolicyFieldTLS = "tls"
)
type TrafficPolicy struct {
ConnectionPool *ConnectionPoolSettings `json:"connectionPool,omitempty" yaml:"connectionPool,omitempty"`
LoadBalancer *LoadBalancerSettings `json:"loadBalancer,omitempty" yaml:"loadBalancer,omitempty"`
OutlierDetection *OutlierDetection `json:"outlierDetection,omitempty" yaml:"outlierDetection,omitempty"`
PortLevelSettings []PortTrafficPolicy `json:"portLevelSettings,omitempty" yaml:"portLevelSettings,omitempty"`
TLS *TLSSettings `json:"tls,omitempty" yaml:"tls,omitempty"`
}

View File

@@ -0,0 +1,121 @@
package client
import (
"github.com/rancher/norman/types"
)
const (
VirtualServiceType = "virtualService"
VirtualServiceFieldAnnotations = "annotations"
VirtualServiceFieldCreated = "created"
VirtualServiceFieldCreatorID = "creatorId"
VirtualServiceFieldGateways = "gateways"
VirtualServiceFieldHTTP = "http"
VirtualServiceFieldHosts = "hosts"
VirtualServiceFieldLabels = "labels"
VirtualServiceFieldName = "name"
VirtualServiceFieldNamespaceId = "namespaceId"
VirtualServiceFieldOwnerReferences = "ownerReferences"
VirtualServiceFieldProjectID = "projectId"
VirtualServiceFieldRemoved = "removed"
VirtualServiceFieldState = "state"
VirtualServiceFieldStatus = "status"
VirtualServiceFieldTCP = "tcp"
VirtualServiceFieldTLS = "tls"
VirtualServiceFieldTransitioning = "transitioning"
VirtualServiceFieldTransitioningMessage = "transitioningMessage"
VirtualServiceFieldUUID = "uuid"
)
type VirtualService struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Gateways []string `json:"gateways,omitempty" yaml:"gateways,omitempty"`
HTTP []HTTPRoute `json:"http,omitempty" yaml:"http,omitempty"`
Hosts []string `json:"hosts,omitempty" yaml:"hosts,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
NamespaceId string `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
ProjectID string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
State string `json:"state,omitempty" yaml:"state,omitempty"`
Status interface{} `json:"status,omitempty" yaml:"status,omitempty"`
TCP []TCPRoute `json:"tcp,omitempty" yaml:"tcp,omitempty"`
TLS []TLSRoute `json:"tls,omitempty" yaml:"tls,omitempty"`
Transitioning string `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
TransitioningMessage string `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
}
type VirtualServiceCollection struct {
types.Collection
Data []VirtualService `json:"data,omitempty"`
client *VirtualServiceClient
}
type VirtualServiceClient struct {
apiClient *Client
}
type VirtualServiceOperations interface {
List(opts *types.ListOpts) (*VirtualServiceCollection, error)
Create(opts *VirtualService) (*VirtualService, error)
Update(existing *VirtualService, updates interface{}) (*VirtualService, error)
Replace(existing *VirtualService) (*VirtualService, error)
ByID(id string) (*VirtualService, error)
Delete(container *VirtualService) error
}
func newVirtualServiceClient(apiClient *Client) *VirtualServiceClient {
return &VirtualServiceClient{
apiClient: apiClient,
}
}
func (c *VirtualServiceClient) Create(container *VirtualService) (*VirtualService, error) {
resp := &VirtualService{}
err := c.apiClient.Ops.DoCreate(VirtualServiceType, container, resp)
return resp, err
}
func (c *VirtualServiceClient) Update(existing *VirtualService, updates interface{}) (*VirtualService, error) {
resp := &VirtualService{}
err := c.apiClient.Ops.DoUpdate(VirtualServiceType, &existing.Resource, updates, resp)
return resp, err
}
func (c *VirtualServiceClient) Replace(obj *VirtualService) (*VirtualService, error) {
resp := &VirtualService{}
err := c.apiClient.Ops.DoReplace(VirtualServiceType, &obj.Resource, obj, resp)
return resp, err
}
func (c *VirtualServiceClient) List(opts *types.ListOpts) (*VirtualServiceCollection, error) {
resp := &VirtualServiceCollection{}
err := c.apiClient.Ops.DoList(VirtualServiceType, opts, resp)
resp.client = c
return resp, err
}
func (cc *VirtualServiceCollection) Next() (*VirtualServiceCollection, error) {
if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
resp := &VirtualServiceCollection{}
err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
resp.client = cc.client
return resp, err
}
return nil, nil
}
func (c *VirtualServiceClient) ByID(id string) (*VirtualService, error) {
resp := &VirtualService{}
err := c.apiClient.Ops.DoByID(VirtualServiceType, id, resp)
return resp, err
}
func (c *VirtualServiceClient) Delete(container *VirtualService) error {
return c.apiClient.Ops.DoResourceDelete(VirtualServiceType, &container.Resource)
}

View File

@@ -0,0 +1,18 @@
package client
const (
VirtualServiceSpecType = "virtualServiceSpec"
VirtualServiceSpecFieldGateways = "gateways"
VirtualServiceSpecFieldHTTP = "http"
VirtualServiceSpecFieldHosts = "hosts"
VirtualServiceSpecFieldTCP = "tcp"
VirtualServiceSpecFieldTLS = "tls"
)
type VirtualServiceSpec struct {
Gateways []string `json:"gateways,omitempty" yaml:"gateways,omitempty"`
HTTP []HTTPRoute `json:"http,omitempty" yaml:"http,omitempty"`
Hosts []string `json:"hosts,omitempty" yaml:"hosts,omitempty"`
TCP []TCPRoute `json:"tcp,omitempty" yaml:"tcp,omitempty"`
TLS []TLSRoute `json:"tls,omitempty" yaml:"tls,omitempty"`
}