//  Copyright 2017 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.

//  $title: Mixer Client
//  $description: Configuration state for the Mixer client library.
//  $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client

//  Describes the configuration state for the Mixer client library that's built into Envoy.
package client

import (
	"github.com/golang/protobuf/ptypes/duration"
	"istio.io/api/mixer/v1"
)

//  Specifies the behavior when the client is unable to connect to Mixer.
NetworkFailPolicy: {

	//  Specifies the behavior when the client is unable to connect to Mixer.
	policy?: NetworkFailPolicy_FailPolicy @protobuf(1,type=FailPolicy)

	//  Max retries on transport error.
	maxRetry?: uint32 @protobuf(2,name=max_retry)

	//  Base time to wait between retries.  Will be adjusted by exponential
	//  backoff and jitter.
	baseRetryWait?: duration.Duration @protobuf(3,type=google.protobuf.Duration,name=base_retry_wait)

	//  Max time to wait between retries.
	maxRetryWait?: duration.Duration @protobuf(4,type=google.protobuf.Duration,name=max_retry_wait)
}

//  Example of single-value enum.
NetworkFailPolicy_FailPolicy:
	//  If network connection fails, request is allowed and delivered to the
	//  service.
	"FAIL_OPEN"

NetworkFailPolicy_FailPolicy_value "FAIL_OPEN": 0

//  Defines the per-service client configuration.
ServiceConfig: {
	//  If true, do not call Mixer Check.
	disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)

	//  If true, do not call Mixer Report.
	disableReportCalls?: bool @protobuf(2,name=disable_report_calls)

	//  Send these attributes to Mixer in both Check and Report. This
	//  typically includes the "destination.service" attribute.
	//  In case of a per-route override, per-route attributes take precedence
	//  over the attributes supplied in the client configuration.
	mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)

	//  HTTP API specifications to generate API attributes.
	httpApiSpec?: [...HTTPAPISpec] @protobuf(4,name=http_api_spec)

	//  Quota specifications to generate quota requirements.
	quotaSpec?: [...QuotaSpec] @protobuf(5,name=quota_spec)

	//  Specifies the behavior when the client is unable to connect to Mixer.
	//  This is the service-level policy. It overrides
	//  [mesh-level
	//  policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
	networkFailPolicy?: NetworkFailPolicy @protobuf(7,name=network_fail_policy)

	//  Default attributes to forward to upstream. This typically
	//  includes the "source.ip" and "source.uid" attributes.
	//  In case of a per-route override, per-route attributes take precedence
	//  over the attributes supplied in the client configuration.
	// 
	//  Forwarded attributes take precedence over the static Mixer attributes.
	//  The full order of application is as follows:
	//  1. static Mixer attributes from the filter config;
	//  2. static Mixer attributes from the route config;
	//  3. forwarded attributes from the source filter config (if any);
	//  4. forwarded attributes from the source route config (if any);
	//  5. derived attributes from the request metadata.
	forwardAttributes?: v1.Attributes @protobuf(8,type=Attributes,name=forward_attributes)
}

//  Defines the transport config on how to call Mixer.
TransportConfig: {
	//  The flag to disable check cache.
	disableCheckCache?: bool @protobuf(1,name=disable_check_cache)

	//  The flag to disable quota cache.
	disableQuotaCache?: bool @protobuf(2,name=disable_quota_cache)

	//  The flag to disable report batch.
	disableReportBatch?: bool @protobuf(3,name=disable_report_batch)

	//  Specifies the behavior when the client is unable to connect to Mixer.
	//  This is the mesh level policy. The default value for policy is FAIL_OPEN.
	networkFailPolicy?: NetworkFailPolicy @protobuf(4,name=network_fail_policy)

	//  Specify refresh interval to write Mixer client statistics to Envoy share
	//  memory. If not specified, the interval is 10 seconds.
	statsUpdateInterval?: duration.Duration @protobuf(5,type=google.protobuf.Duration,name=stats_update_interval)

	//  Name of the cluster that will forward check calls to a pool of mixer
	//  servers. Defaults to "mixer_server". By using different names for
	//  checkCluster and reportCluster, it is possible to have one set of
	//  Mixer servers handle check calls, while another set of Mixer servers
	//  handle report calls.
	// 
	//  NOTE: Any value other than the default "mixer_server" will require the
	//  Istio Grafana dashboards to be reconfigured to use the new name.
	checkCluster?: string @protobuf(6,name=check_cluster)

	//  Name of the cluster that will forward report calls to a pool of mixer
	//  servers. Defaults to "mixer_server". By using different names for
	//  checkCluster and reportCluster, it is possible to have one set of
	//  Mixer servers handle check calls, while another set of Mixer servers
	//  handle report calls.
	// 
	//  NOTE: Any value other than the default "mixer_server" will require the
	//  Istio Grafana dashboards to be reconfigured to use the new name.
	reportCluster?: string @protobuf(7,name=report_cluster)

	//  Default attributes to forward to Mixer upstream. This typically
	//  includes the "source.ip" and "source.uid" attributes. These
	//  attributes are consumed by the proxy in front of mixer.
	attributesForMixerProxy?: v1.Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
}

//  Defines the client config for HTTP.
HttpClientConfig: {
	//  The transport config.
	transport?: TransportConfig @protobuf(1)

	//  Map of control configuration indexed by destination.service. This
	//  is used to support per-service configuration for cases where a
	//  mixerclient serves multiple services.
	serviceConfigs <_>: ServiceConfig

	//  Default destination service name if none was specified in the
	//  client request.
	defaultDestinationService?: string @protobuf(3,name=default_destination_service)

	//  Default attributes to send to Mixer in both Check and
	//  Report. This typically includes "destination.ip" and
	//  "destination.uid" attributes.
	mixerAttributes?: v1.Attributes @protobuf(4,type=Attributes,name=mixer_attributes)

	//  Default attributes to forward to upstream. This typically
	//  includes the "source.ip" and "source.uid" attributes.
	forwardAttributes?: v1.Attributes @protobuf(5,type=Attributes,name=forward_attributes)
}

//  Defines the client config for TCP.
TcpClientConfig: {
	//  The transport config.
	transport?: TransportConfig @protobuf(1)

	//  Default attributes to send to Mixer in both Check and
	//  Report. This typically includes "destination.ip" and
	//  "destination.uid" attributes.
	mixerAttributes?: v1.Attributes @protobuf(2,type=Attributes,name=mixer_attributes)

	//  If set to true, disables Mixer check calls.
	disableCheckCalls?: bool @protobuf(3,name=disable_check_calls)

	//  If set to true, disables Mixer check calls.
	disableReportCalls?: bool @protobuf(4,name=disable_report_calls)

	//  Quota specifications to generate quota requirements.
	//  It applies on the new TCP connections.
	connectionQuotaSpec?: QuotaSpec @protobuf(5,name=connection_quota_spec)

	//  Specify report interval to send periodical reports for long TCP
	//  connections. If not specified, the interval is 10 seconds. This interval
	//  should not be less than 1 second, otherwise it will be reset to 1 second.
	reportInterval?: duration.Duration @protobuf(6,type=google.protobuf.Duration,name=report_interval)
}
