| // Copyright Istio Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package option |
| |
| import ( |
| "strings" |
| ) |
| |
| import ( |
| "google.golang.org/protobuf/types/known/durationpb" |
| meshAPI "istio.io/api/mesh/v1alpha1" |
| networkingAPI "istio.io/api/networking/v1alpha3" |
| ) |
| |
| import ( |
| "github.com/apache/dubbo-go-pixiu/pilot/pkg/model" |
| ) |
| |
| type ( |
| LocalhostValue string |
| WildcardValue string |
| DNSLookupFamilyValue string |
| ) |
| |
| const ( |
| LocalhostIPv4 LocalhostValue = "127.0.0.1" |
| LocalhostIPv6 LocalhostValue = "::1" |
| WildcardIPv4 WildcardValue = "0.0.0.0" |
| WildcardIPv6 WildcardValue = "::" |
| DNSLookupFamilyIPv4 DNSLookupFamilyValue = "V4_ONLY" |
| DNSLookupFamilyIPv6 DNSLookupFamilyValue = "AUTO" |
| ) |
| |
| func ProxyConfig(value *model.NodeMetaProxyConfig) Instance { |
| return newOption("config", value) |
| } |
| |
| func PilotSubjectAltName(value []string) Instance { |
| return newOption("pilot_SAN", value).withConvert(sanConverter(value)) |
| } |
| |
| func ConnectTimeout(value *durationpb.Duration) Instance { |
| return newDurationOption("connect_timeout", value) |
| } |
| |
| func Cluster(value string) Instance { |
| return newOption("cluster", value) |
| } |
| |
| func NodeID(value string) Instance { |
| return newOption("nodeID", value) |
| } |
| |
| func NodeType(value string) Instance { |
| ntype := strings.Split(value, "~")[0] |
| return newOption("nodeType", ntype) |
| } |
| |
| func XdsType(value string) Instance { |
| return newOption("xds_type", value) |
| } |
| |
| func Region(value string) Instance { |
| return newOptionOrSkipIfZero("region", value) |
| } |
| |
| func Zone(value string) Instance { |
| return newOptionOrSkipIfZero("zone", value) |
| } |
| |
| func SubZone(value string) Instance { |
| return newOptionOrSkipIfZero("sub_zone", value) |
| } |
| |
| func NodeMetadata(meta *model.BootstrapNodeMetadata, rawMeta map[string]interface{}) Instance { |
| return newOptionOrSkipIfZero("meta_json_str", meta).withConvert(nodeMetadataConverter(meta, rawMeta)) |
| } |
| |
| func RuntimeFlags(flags map[string]string) Instance { |
| return newOptionOrSkipIfZero("runtime_flags", flags).withConvert(jsonConverter(flags)) |
| } |
| |
| func DiscoveryAddress(value string) Instance { |
| return newOption("discovery_address", value) |
| } |
| |
| func XDSRootCert(value string) Instance { |
| return newOption("xds_root_cert", value) |
| } |
| |
| func Localhost(value LocalhostValue) Instance { |
| return newOption("localhost", value) |
| } |
| |
| func Wildcard(value WildcardValue) Instance { |
| return newOption("wildcard", value) |
| } |
| |
| func DNSLookupFamily(value DNSLookupFamilyValue) Instance { |
| return newOption("dns_lookup_family", value) |
| } |
| |
| func OutlierLogPath(value string) Instance { |
| return newOptionOrSkipIfZero("outlier_log_path", value) |
| } |
| |
| func LightstepAddress(value string) Instance { |
| return newOptionOrSkipIfZero("lightstep", value).withConvert(addressConverter(value)) |
| } |
| |
| func LightstepToken(value string) Instance { |
| return newOption("lightstepToken", value) |
| } |
| |
| func OpenCensusAgentAddress(value string) Instance { |
| return newOptionOrSkipIfZero("openCensusAgent", value) |
| } |
| |
| func OpenCensusAgentContexts(value []meshAPI.Tracing_OpenCensusAgent_TraceContext) Instance { |
| return newOption("openCensusAgentContexts", value). |
| withConvert(openCensusAgentContextConverter(value)) |
| } |
| |
| func StackDriverEnabled(value bool) Instance { |
| return newOption("stackdriver", value) |
| } |
| |
| func StackDriverProjectID(value string) Instance { |
| return newOption("stackdriverProjectID", value) |
| } |
| |
| func StackDriverDebug(value bool) Instance { |
| return newOption("stackdriverDebug", value) |
| } |
| |
| func StackDriverMaxAnnotations(value int64) Instance { |
| return newOption("stackdriverMaxAnnotations", value) |
| } |
| |
| func StackDriverMaxAttributes(value int64) Instance { |
| return newOption("stackdriverMaxAttributes", value) |
| } |
| |
| func StackDriverMaxEvents(value int64) Instance { |
| return newOption("stackdriverMaxEvents", value) |
| } |
| |
| func PilotGRPCAddress(value string) Instance { |
| return newOptionOrSkipIfZero("pilot_grpc_address", value).withConvert(addressConverter(value)) |
| } |
| |
| func ZipkinAddress(value string) Instance { |
| return newOptionOrSkipIfZero("zipkin", value).withConvert(addressConverter(value)) |
| } |
| |
| func DataDogAddress(value string) Instance { |
| return newOptionOrSkipIfZero("datadog", value).withConvert(addressConverter(value)) |
| } |
| |
| func StatsdAddress(value string) Instance { |
| return newOptionOrSkipIfZero("statsd", value).withConvert(addressConverter(value)) |
| } |
| |
| func TracingTLS(value *networkingAPI.ClientTLSSettings, metadata *model.BootstrapNodeMetadata, isH2 bool) Instance { |
| return newOptionOrSkipIfZero("tracing_tls", value). |
| withConvert(transportSocketConverter(value, "tracer", metadata, isH2)) |
| } |
| |
| func EnvoyMetricsServiceAddress(value string) Instance { |
| return newOptionOrSkipIfZero("envoy_metrics_service_address", value).withConvert(addressConverter(value)) |
| } |
| |
| func EnvoyMetricsServiceTLS(value *networkingAPI.ClientTLSSettings, metadata *model.BootstrapNodeMetadata) Instance { |
| return newOptionOrSkipIfZero("envoy_metrics_service_tls", value). |
| withConvert(transportSocketConverter(value, "envoy_metrics_service", metadata, true)) |
| } |
| |
| func EnvoyMetricsServiceTCPKeepalive(value *networkingAPI.ConnectionPoolSettings_TCPSettings_TcpKeepalive) Instance { |
| return newTCPKeepaliveOption("envoy_metrics_service_tcp_keepalive", value) |
| } |
| |
| func EnvoyAccessLogServiceAddress(value string) Instance { |
| return newOptionOrSkipIfZero("envoy_accesslog_service_address", value).withConvert(addressConverter(value)) |
| } |
| |
| func EnvoyAccessLogServiceTLS(value *networkingAPI.ClientTLSSettings, metadata *model.BootstrapNodeMetadata) Instance { |
| return newOptionOrSkipIfZero("envoy_accesslog_service_tls", value). |
| withConvert(transportSocketConverter(value, "envoy_accesslog_service", metadata, true)) |
| } |
| |
| func EnvoyAccessLogServiceTCPKeepalive(value *networkingAPI.ConnectionPoolSettings_TCPSettings_TcpKeepalive) Instance { |
| return newTCPKeepaliveOption("envoy_accesslog_service_tcp_keepalive", value) |
| } |
| |
| func EnvoyExtraStatTags(value []string) Instance { |
| return newStringArrayOptionOrSkipIfEmpty("extraStatTags", value) |
| } |
| |
| func EnvoyStatsMatcherInclusionPrefix(value []string) Instance { |
| return newStringArrayOptionOrSkipIfEmpty("inclusionPrefix", value) |
| } |
| |
| func EnvoyStatsMatcherInclusionSuffix(value []string) Instance { |
| return newStringArrayOptionOrSkipIfEmpty("inclusionSuffix", value) |
| } |
| |
| func EnvoyStatsMatcherInclusionRegexp(value []string) Instance { |
| return newStringArrayOptionOrSkipIfEmpty("inclusionRegexps", value) |
| } |
| |
| func EnvoyStatusPort(value int) Instance { |
| return newOption("envoy_status_port", value) |
| } |
| |
| func EnvoyPrometheusPort(value int) Instance { |
| return newOption("envoy_prometheus_port", value) |
| } |
| |
| func STSPort(value int) Instance { |
| return newOption("sts_port", value) |
| } |
| |
| func GCPProjectID(value string) Instance { |
| return newOption("gcp_project_id", value) |
| } |
| |
| func GCPProjectNumber(value string) Instance { |
| return newOption("gcp_project_number", value) |
| } |
| |
| func Metadata(meta *model.BootstrapNodeMetadata) Instance { |
| return newOption("metadata", meta) |
| } |
| |
| func STSEnabled(value bool) Instance { |
| return newOption("sts", value) |
| } |
| |
| func ProvCert(value string) Instance { |
| return newOption("provisioned_cert", value) |
| } |
| |
| func DiscoveryHost(value string) Instance { |
| return newOption("discovery_host", value) |
| } |