| // 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 v3 |
| |
| import ( |
| "strings" |
| ) |
| |
| import ( |
| resource "github.com/envoyproxy/go-control-plane/pkg/resource/v3" |
| ) |
| |
| const ( |
| envoyTypePrefix = resource.APITypePrefix + "envoy." |
| |
| ClusterType = resource.ClusterType |
| EndpointType = resource.EndpointType |
| ListenerType = resource.ListenerType |
| RouteType = resource.RouteType |
| SecretType = resource.SecretType |
| ExtensionConfigurationType = resource.ExtensionConfigType |
| |
| NameTableType = resource.APITypePrefix + "istio.networking.nds.v1.NameTable" |
| HealthInfoType = resource.APITypePrefix + "istio.v1.HealthInformation" |
| ProxyConfigType = resource.APITypePrefix + "istio.mesh.v1alpha1.ProxyConfig" |
| // DebugType requests debug info from istio, a secured implementation for istio debug interface. |
| DebugType = "istio.io/debug" |
| BootstrapType = resource.APITypePrefix + "envoy.config.bootstrap.v3.Bootstrap" |
| |
| // nolint |
| HttpProtocolOptionsType = "envoy.extensions.upstreams.http.v3.HttpProtocolOptions" |
| DubboServiceNameMappingType = "dubbo.networking.v1alpha1.v1.servicenamemapping" |
| ) |
| |
| // GetShortType returns an abbreviated form of a type, useful for logging or human friendly messages |
| func GetShortType(typeURL string) string { |
| switch typeURL { |
| case ClusterType: |
| return "CDS" |
| case ListenerType: |
| return "LDS" |
| case RouteType: |
| return "RDS" |
| case EndpointType: |
| return "EDS" |
| case SecretType: |
| return "SDS" |
| case NameTableType: |
| return "NDS" |
| case ProxyConfigType: |
| return "PCDS" |
| case ExtensionConfigurationType: |
| return "ECDS" |
| default: |
| return typeURL |
| } |
| } |
| |
| // GetMetricType returns the form of a type reported for metrics |
| func GetMetricType(typeURL string) string { |
| switch typeURL { |
| case ClusterType: |
| return "cds" |
| case ListenerType: |
| return "lds" |
| case RouteType: |
| return "rds" |
| case EndpointType: |
| return "eds" |
| case SecretType: |
| return "sds" |
| case NameTableType: |
| return "nds" |
| case ProxyConfigType: |
| return "pcds" |
| case ExtensionConfigurationType: |
| return "ecds" |
| case BootstrapType: |
| return "bds" |
| default: |
| return typeURL |
| } |
| } |
| |
| // IsEnvoyType checks whether the typeURL is a valid Envoy type. |
| func IsEnvoyType(typeURL string) bool { |
| return strings.HasPrefix(typeURL, envoyTypePrefix) |
| } |