
//  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 (
	"istio.io/api/mixer/v1"
	"time"
)

//  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?: time.Duration @protobuf(3,type=google.protobuf.Duration,name=base_retry_wait)

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

//  Describes the policy.
NetworkFailPolicy_FailPolicy:
	//  If network connection fails, request is allowed and delivered to the
	//  service.
	*"FAIL_OPEN" |

	//  If network connection fails, request is rejected.
	"FAIL_CLOSE"

NetworkFailPolicy_FailPolicy_value: {
	"FAIL_OPEN":  0
	"FAIL_CLOSE": 1
}

//  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?: time.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?: time.Duration @protobuf(6,type=google.protobuf.Duration,name=report_interval)
}
