// Code generated by generate.main.go. DO NOT EDIT.

package msg

import (
	"istio.io/istio/pkg/config/analysis/diag"
	"istio.io/istio/pkg/config/resource"
)

var (
	// InternalError defines a diag.MessageType for message "InternalError".
	// Description: There was an internal error in the toolchain. This is almost always a bug in the implementation.
	InternalError = diag.NewMessageType(diag.Error, "IST0001", "Internal error: %v")

	// Deprecated defines a diag.MessageType for message "Deprecated".
	// Description: A feature that the configuration is depending on is now deprecated.
	Deprecated = diag.NewMessageType(diag.Warning, "IST0002", "Deprecated: %s")

	// ReferencedResourceNotFound defines a diag.MessageType for message "ReferencedResourceNotFound".
	// Description: A resource being referenced does not exist.
	ReferencedResourceNotFound = diag.NewMessageType(diag.Error, "IST0101", "Referenced %s not found: %q")

	// NamespaceNotInjected defines a diag.MessageType for message "NamespaceNotInjected".
	// Description: A namespace is not enabled for Istio injection.
	NamespaceNotInjected = diag.NewMessageType(diag.Info, "IST0102", "The namespace is not enabled for Istio injection. Run 'kubectl label namespace %s istio-injection=enabled' to enable it, or 'kubectl label namespace %s istio-injection=disabled' to explicitly mark it as not needing injection.")

	// PodMissingProxy defines a diag.MessageType for message "PodMissingProxy".
	// Description: A pod is missing the Istio proxy.
	PodMissingProxy = diag.NewMessageType(diag.Warning, "IST0103", "The pod %s is missing the Istio proxy. This can often be resolved by restarting or redeploying the workload.")

	// SchemaValidationError defines a diag.MessageType for message "SchemaValidationError".
	// Description: The resource has a schema validation error.
	SchemaValidationError = diag.NewMessageType(diag.Error, "IST0106", "Schema validation error: %v")

	// MisplacedAnnotation defines a diag.MessageType for message "MisplacedAnnotation".
	// Description: An Istio annotation is applied to the wrong kind of resource.
	MisplacedAnnotation = diag.NewMessageType(diag.Warning, "IST0107", "Misplaced annotation: %s can only be applied to %s")

	// UnknownAnnotation defines a diag.MessageType for message "UnknownAnnotation".
	// Description: An Istio annotation is not recognized for any kind of resource
	UnknownAnnotation = diag.NewMessageType(diag.Warning, "IST0108", "Unknown annotation: %s")

	// ConflictingMeshGatewayVirtualServiceHosts defines a diag.MessageType for message "ConflictingMeshGatewayVirtualServiceHosts".
	// Description: Conflicting hosts on VirtualServices associated with mesh gateway
	ConflictingMeshGatewayVirtualServiceHosts = diag.NewMessageType(diag.Error, "IST0109", "The VirtualServices %s associated with mesh gateway define the same host %s which can lead to undefined behavior. This can be fixed by merging the conflicting VirtualServices into a single resource.")

	// ConflictingSidecarWorkloadSelectors defines a diag.MessageType for message "ConflictingSidecarWorkloadSelectors".
	// Description: A Sidecar resource selects the same workloads as another Sidecar resource
	ConflictingSidecarWorkloadSelectors = diag.NewMessageType(diag.Error, "IST0110", "The Sidecars %v in namespace %q select the same workload pod %q, which can lead to undefined behavior.")

	// MultipleSidecarsWithoutWorkloadSelectors defines a diag.MessageType for message "MultipleSidecarsWithoutWorkloadSelectors".
	// Description: More than one sidecar resource in a namespace has no workload selector
	MultipleSidecarsWithoutWorkloadSelectors = diag.NewMessageType(diag.Error, "IST0111", "The Sidecars %v in namespace %q have no workload selector, which can lead to undefined behavior.")

	// VirtualServiceDestinationPortSelectorRequired defines a diag.MessageType for message "VirtualServiceDestinationPortSelectorRequired".
	// Description: A VirtualService routes to a service with more than one port exposed, but does not specify which to use.
	VirtualServiceDestinationPortSelectorRequired = diag.NewMessageType(diag.Error, "IST0112", "This VirtualService routes to a service %q that exposes multiple ports %v. Specifying a port in the destination is required to disambiguate.")

	// DeploymentAssociatedToMultipleServices defines a diag.MessageType for message "DeploymentAssociatedToMultipleServices".
	// Description: The resulting pods of a service mesh deployment can't be associated with multiple services using the same port but different protocols.
	DeploymentAssociatedToMultipleServices = diag.NewMessageType(diag.Warning, "IST0116", "This deployment %s is associated with multiple services using port %d but different protocols: %v")

	// PortNameIsNotUnderNamingConvention defines a diag.MessageType for message "PortNameIsNotUnderNamingConvention".
	// Description: Port name is not under naming convention. Protocol detection is applied to the port.
	PortNameIsNotUnderNamingConvention = diag.NewMessageType(diag.Info, "IST0118", "Port name %s (port: %d, targetPort: %s) doesn't follow the naming convention of Istio port.")

	// NamespaceMultipleInjectionLabels defines a diag.MessageType for message "NamespaceMultipleInjectionLabels".
	// Description: A namespace has more than one type of injection labels
	NamespaceMultipleInjectionLabels = diag.NewMessageType(diag.Warning, "IST0123", "The namespace has more than one type of injection labels %v, which may lead to undefined behavior. Make sure only one injection label exists.")

	// InvalidAnnotation defines a diag.MessageType for message "InvalidAnnotation".
	// Description: An Istio annotation that is not valid
	InvalidAnnotation = diag.NewMessageType(diag.Warning, "IST0125", "Invalid annotation %s: %s")

	// UnknownMeshNetworksServiceRegistry defines a diag.MessageType for message "UnknownMeshNetworksServiceRegistry".
	// Description: A service registry in Mesh Networks is unknown
	UnknownMeshNetworksServiceRegistry = diag.NewMessageType(diag.Error, "IST0126", "Unknown service registry %s in network %s")

	// NoMatchingWorkloadsFound defines a diag.MessageType for message "NoMatchingWorkloadsFound".
	// Description: There aren't workloads matching the resource labels
	NoMatchingWorkloadsFound = diag.NewMessageType(diag.Warning, "IST0127", "No matching workloads for this resource with the following labels: %s")

	// NoServerCertificateVerificationDestinationLevel defines a diag.MessageType for message "NoServerCertificateVerificationDestinationLevel".
	// Description: No caCertificates are set in DestinationRule, this results in no verification of presented server certificate.
	NoServerCertificateVerificationDestinationLevel = diag.NewMessageType(diag.Warning, "IST0128", "DestinationRule %s in namespace %s has TLS mode set to %s but no caCertificates are set to validate server identity for host: %s")

	// NoServerCertificateVerificationPortLevel defines a diag.MessageType for message "NoServerCertificateVerificationPortLevel".
	// Description: No caCertificates are set in DestinationRule, this results in no verification of presented server certificate for traffic to a given port.
	NoServerCertificateVerificationPortLevel = diag.NewMessageType(diag.Warning, "IST0129", "DestinationRule %s in namespace %s has TLS mode set to %s but no caCertificates are set to validate server identity for host: %s at port %s")

	// VirtualServiceUnreachableRule defines a diag.MessageType for message "VirtualServiceUnreachableRule".
	// Description: A VirtualService rule will never be used because a previous rule uses the same match.
	VirtualServiceUnreachableRule = diag.NewMessageType(diag.Warning, "IST0130", "VirtualService rule %v not used (%s).")

	// VirtualServiceIneffectiveMatch defines a diag.MessageType for message "VirtualServiceIneffectiveMatch".
	// Description: A VirtualService rule match duplicates a match in a previous rule.
	VirtualServiceIneffectiveMatch = diag.NewMessageType(diag.Info, "IST0131", "VirtualService rule %v match %v is not used (duplicate/overlapping match in rule %v).")

	// VirtualServiceHostNotFoundInGateway defines a diag.MessageType for message "VirtualServiceHostNotFoundInGateway".
	// Description: Host defined in VirtualService not found in Gateway.
	VirtualServiceHostNotFoundInGateway = diag.NewMessageType(diag.Warning, "IST0132", "one or more host %v defined in VirtualService %s not found in Gateway %s.")

	// SchemaWarning defines a diag.MessageType for message "SchemaWarning".
	// Description: The resource has a schema validation warning.
	SchemaWarning = diag.NewMessageType(diag.Warning, "IST0133", "Schema validation warning: %v")

	// ServiceEntryAddressesRequired defines a diag.MessageType for message "ServiceEntryAddressesRequired".
	// Description: Virtual IP addresses are required for ports serving TCP (or unset) protocol when PILOT_ENABLE_IP_AUTOALLOCATE is not set on a proxy
	ServiceEntryAddressesRequired = diag.NewMessageType(diag.Warning, "IST0134", "ServiceEntry addresses are required for this protocol.")

	// DeprecatedAnnotation defines a diag.MessageType for message "DeprecatedAnnotation".
	// Description: A resource is using a deprecated Istio annotation.
	DeprecatedAnnotation = diag.NewMessageType(diag.Info, "IST0135", "Annotation %q has been deprecated%s and may not work in future Istio versions.")

	// AlphaAnnotation defines a diag.MessageType for message "AlphaAnnotation".
	// Description: An Istio annotation may not be suitable for production.
	AlphaAnnotation = diag.NewMessageType(diag.Info, "IST0136", "Annotation %q is part of an alpha-phase feature and may be incompletely supported.")

	// DeploymentConflictingPorts defines a diag.MessageType for message "DeploymentConflictingPorts".
	// Description: Two services selecting the same workload with the same targetPort MUST refer to the same port.
	DeploymentConflictingPorts = diag.NewMessageType(diag.Warning, "IST0137", "This deployment %s is associated with multiple services %v using targetPort %q but different ports: %v.")

	// GatewayDuplicateCertificate defines a diag.MessageType for message "GatewayDuplicateCertificate".
	// Description: Duplicate certificate in multiple gateways may cause 404s if clients re-use HTTP2 connections.
	GatewayDuplicateCertificate = diag.NewMessageType(diag.Warning, "IST0138", "Duplicate certificate in multiple gateways %v may cause 404s if clients re-use HTTP2 connections.")

	// InvalidWebhook defines a diag.MessageType for message "InvalidWebhook".
	// Description: Webhook is invalid or references a control plane service that does not exist.
	InvalidWebhook = diag.NewMessageType(diag.Error, "IST0139", "%v")

	// IngressRouteRulesNotAffected defines a diag.MessageType for message "IngressRouteRulesNotAffected".
	// Description: Route rules have no effect on ingress gateway requests
	IngressRouteRulesNotAffected = diag.NewMessageType(diag.Warning, "IST0140", "Subset in virtual service %s has no effect on ingress gateway %s requests")

	// InsufficientPermissions defines a diag.MessageType for message "InsufficientPermissions".
	// Description: Required permissions to install Istio are missing.
	InsufficientPermissions = diag.NewMessageType(diag.Error, "IST0141", "Missing required permission to create resource %v (%v)")

	// UnsupportedKubernetesVersion defines a diag.MessageType for message "UnsupportedKubernetesVersion".
	// Description: The Kubernetes version is not supported
	UnsupportedKubernetesVersion = diag.NewMessageType(diag.Error, "IST0142", "The Kubernetes Version %q is lower than the minimum version: %v")

	// LocalhostListener defines a diag.MessageType for message "LocalhostListener".
	// Description: A port exposed in a Service is bound to a localhost address
	LocalhostListener = diag.NewMessageType(diag.Error, "IST0143", "Port %v is exposed in a Service but listens on localhost. It will not be exposed to other pods.")

	// InvalidApplicationUID defines a diag.MessageType for message "InvalidApplicationUID".
	// Description: Application pods should not run as user ID (UID) 1337
	InvalidApplicationUID = diag.NewMessageType(diag.Warning, "IST0144", "User ID (UID) 1337 is reserved for the sidecar proxy.")

	// ConflictingGateways defines a diag.MessageType for message "ConflictingGateways".
	// Description: Gateway should not have the same selector, port and matched hosts of server
	ConflictingGateways = diag.NewMessageType(diag.Error, "IST0145", "Conflict with gateways %s (workload selector %s, port %s, hosts %v).")

	// ImageAutoWithoutInjectionWarning defines a diag.MessageType for message "ImageAutoWithoutInjectionWarning".
	// Description: Deployments with `image: auto` should be targeted for injection.
	ImageAutoWithoutInjectionWarning = diag.NewMessageType(diag.Warning, "IST0146", "%s %s contains `image: auto` but does not match any Istio injection webhook selectors.")

	// ImageAutoWithoutInjectionError defines a diag.MessageType for message "ImageAutoWithoutInjectionError".
	// Description: Pods with `image: auto` should be targeted for injection.
	ImageAutoWithoutInjectionError = diag.NewMessageType(diag.Error, "IST0147", "%s %s contains `image: auto` but does not match any Istio injection webhook selectors.")

	// NamespaceInjectionEnabledByDefault defines a diag.MessageType for message "NamespaceInjectionEnabledByDefault".
	// Description: user namespace should be injectable if Istio is installed with enableNamespacesByDefault enabled and neither injection label is set.
	NamespaceInjectionEnabledByDefault = diag.NewMessageType(diag.Info, "IST0148", "is enabled for Istio injection, as Istio is installed with enableNamespacesByDefault as true.")

	// JwtClaimBasedRoutingWithoutRequestAuthN defines a diag.MessageType for message "JwtClaimBasedRoutingWithoutRequestAuthN".
	// Description: Virtual service using JWT claim based routing without request authentication.
	JwtClaimBasedRoutingWithoutRequestAuthN = diag.NewMessageType(diag.Error, "IST0149", "The virtual service uses the JWT claim based routing (key: %s) but found no request authentication for the gateway (%s) pod (%s). The request authentication must first be applied for the gateway pods to validate the JWT token and make the claims available for routing.")

	// ExternalNameServiceTypeInvalidPortName defines a diag.MessageType for message "ExternalNameServiceTypeInvalidPortName".
	// Description: Proxy may prevent tcp named ports and unmatched traffic for ports serving TCP protocol from being forwarded correctly for ExternalName services.
	ExternalNameServiceTypeInvalidPortName = diag.NewMessageType(diag.Warning, "IST0150", "Port name for ExternalName service is invalid. Proxy may prevent tcp named ports and unmatched traffic for ports serving TCP protocol from being forwarded correctly")

	// EnvoyFilterUsesRelativeOperation defines a diag.MessageType for message "EnvoyFilterUsesRelativeOperation".
	// Description: This EnvoyFilter does not have a priority and has a relative patch operation set which can cause the EnvoyFilter not to be applied. Using the INSERT_FIRST or ADD option or setting the priority may help in ensuring the EnvoyFilter is applied correctly.
	EnvoyFilterUsesRelativeOperation = diag.NewMessageType(diag.Warning, "IST0151", "This EnvoyFilter does not have a priority and has a relative patch operation set which can cause the EnvoyFilter not to be applied. Using the INSERT_FIRST of ADD option or setting the priority may help in ensuring the EnvoyFilter is applied correctly.")

	// EnvoyFilterUsesReplaceOperationIncorrectly defines a diag.MessageType for message "EnvoyFilterUsesReplaceOperationIncorrectly".
	// Description: The REPLACE operation is only valid for HTTP_FILTER and NETWORK_FILTER.
	EnvoyFilterUsesReplaceOperationIncorrectly = diag.NewMessageType(diag.Error, "IST0152", "The REPLACE operation is only valid for HTTP_FILTER and NETWORK_FILTER.")

	// EnvoyFilterUsesAddOperationIncorrectly defines a diag.MessageType for message "EnvoyFilterUsesAddOperationIncorrectly".
	// Description: The ADD operation will be ignored when applyTo is set to ROUTE_CONFIGURATION, or HTTP_ROUTE.
	EnvoyFilterUsesAddOperationIncorrectly = diag.NewMessageType(diag.Error, "IST0153", "The ADD operation will be ignored when applyTo is set to ROUTE_CONFIGURATION, or HTTP_ROUTE.")

	// EnvoyFilterUsesRemoveOperationIncorrectly defines a diag.MessageType for message "EnvoyFilterUsesRemoveOperationIncorrectly".
	// Description: The REMOVE operation will be ignored when applyTo is set to ROUTE_CONFIGURATION, or HTTP_ROUTE.
	EnvoyFilterUsesRemoveOperationIncorrectly = diag.NewMessageType(diag.Error, "IST0154", "The REMOVE operation will be ignored when applyTo is set to ROUTE_CONFIGURATION, or HTTP_ROUTE.")

	// EnvoyFilterUsesRelativeOperationWithProxyVersion defines a diag.MessageType for message "EnvoyFilterUsesRelativeOperationWithProxyVersion".
	// Description: This EnvoyFilter does not have a priority and has a relative patch operation (NSTERT_BEFORE/AFTER, REPLACE, MERGE, DELETE) and proxyVersion set which can cause the EnvoyFilter not to be applied during an upgrade. Using the INSERT_FIRST or ADD option or setting the priority may help in ensuring the EnvoyFilter is applied correctly.
	EnvoyFilterUsesRelativeOperationWithProxyVersion = diag.NewMessageType(diag.Warning, "IST0155", "This EnvoyFilter does not have a priority and has a relative patch operation (NSTERT_BEFORE/AFTER, REPLACE, MERGE, DELETE) and proxyVersion set which can cause the EnvoyFilter not to be applied during an upgrade. Using the INSERT_FIRST or ADD option or setting the priority may help in ensuring the EnvoyFilter is applied correctly.")

	// UnsupportedGatewayAPIVersion defines a diag.MessageType for message "UnsupportedGatewayAPIVersion".
	// Description: The Gateway API CRD version is not supported
	UnsupportedGatewayAPIVersion = diag.NewMessageType(diag.Error, "IST0156", "The Gateway API CRD version %v is lower than the minimum version: %v")

	// FutureUnsupportedGatewayAPIVersion defines a diag.MessageType for message "FutureUnsupportedGatewayAPIVersion".
	// Description: The Gateway API CRD version will not be supported in the future
	FutureUnsupportedGatewayAPIVersion = diag.NewMessageType(diag.Warning, "IST0172", "The Gateway API CRD version %v is lower than the minimum version: %v")

	// InvalidTelemetryProvider defines a diag.MessageType for message "InvalidTelemetryProvider".
	// Description: The Telemetry with empty providers will be ignored
	InvalidTelemetryProvider = diag.NewMessageType(diag.Warning, "IST0157", "The Telemetry %v in namespace %q with empty providers will be ignored.")

	// PodsIstioProxyImageMismatchInNamespace defines a diag.MessageType for message "PodsIstioProxyImageMismatchInNamespace".
	// Description: The Istio proxy image of the pods running in the namespace do not match the image defined in the injection configuration.
	PodsIstioProxyImageMismatchInNamespace = diag.NewMessageType(diag.Warning, "IST0158", "The Istio proxy images of the pods running in the namespace do not match the image defined in the injection configuration (pod names: %v). This often happens after upgrading the Istio control-plane and can be fixed by redeploying the pods.")

	// ConflictingTelemetryWorkloadSelectors defines a diag.MessageType for message "ConflictingTelemetryWorkloadSelectors".
	// Description: A Telemetry resource selects the same workloads as another Telemetry resource
	ConflictingTelemetryWorkloadSelectors = diag.NewMessageType(diag.Error, "IST0159", "The Telemetries %v in namespace %q select the same workload pod %q, which can lead to undefined behavior.")

	// MultipleTelemetriesWithoutWorkloadSelectors defines a diag.MessageType for message "MultipleTelemetriesWithoutWorkloadSelectors".
	// Description: More than one telemetry resource in a namespace has no workload selector
	MultipleTelemetriesWithoutWorkloadSelectors = diag.NewMessageType(diag.Error, "IST0160", "The Telemetries %v in namespace %q have no workload selector, which can lead to undefined behavior.")

	// InvalidGatewayCredential defines a diag.MessageType for message "InvalidGatewayCredential".
	// Description: The credential provided for the Gateway resource is invalid
	InvalidGatewayCredential = diag.NewMessageType(diag.Error, "IST0161", "The credential referenced by the Gateway %s in namespace %s is invalid, which can cause the traffic not to work as expected.")

	// GatewayPortNotDefinedOnService defines a diag.MessageType for message "GatewayPortNotDefinedOnService".
	// Description: Gateway port not exposed by service
	GatewayPortNotDefinedOnService = diag.NewMessageType(diag.Warning, "IST0162", "The gateway is listening on a target port (port %d) that is not defined in the Service associated with its workload instances (Pod selector %s). If you need to access the gateway port through the gateway Service, it will not be available.")

	// InvalidExternalControlPlaneConfig defines a diag.MessageType for message "InvalidExternalControlPlaneConfig".
	// Description: Address for the ingress gateway on the external control plane is not valid
	InvalidExternalControlPlaneConfig = diag.NewMessageType(diag.Warning, "IST0163", "The hostname (%s) that was provided for the webhook (%s) to reach the ingress gateway on the external control plane cluster %s. Traffic may not flow properly.")

	// ExternalControlPlaneAddressIsNotAHostname defines a diag.MessageType for message "ExternalControlPlaneAddressIsNotAHostname".
	// Description: Address for the ingress gateway on the external control plane is an IP address and not a hostname
	ExternalControlPlaneAddressIsNotAHostname = diag.NewMessageType(diag.Info, "IST0164", "The address (%s) that was provided for the webhook (%s) to reach the ingress gateway on the external control plane cluster is an IP address. This is not recommended for a production environment.")

	// ReferencedInternalGateway defines a diag.MessageType for message "ReferencedInternalGateway".
	// Description: VirtualServices should not reference internal Gateways.
	ReferencedInternalGateway = diag.NewMessageType(diag.Warning, "IST0165", "Gateway reference in VirtualService %s is to an implementation-generated internal Gateway: %s.")

	// IneffectiveSelector defines a diag.MessageType for message "IneffectiveSelector".
	// Description: Selector has no effect when applied to Kubernetes Gateways.
	IneffectiveSelector = diag.NewMessageType(diag.Warning, "IST0166", "Ineffective selector on Kubernetes Gateway %s. Use the TargetRef field instead.")

	// IneffectivePolicy defines a diag.MessageType for message "IneffectivePolicy".
	// Description: The policy applied has no impact.
	IneffectivePolicy = diag.NewMessageType(diag.Warning, "IST0167", "The policy has no impact: %s.")

	// UnknownUpgradeCompatibility defines a diag.MessageType for message "UnknownUpgradeCompatibility".
	// Description: We cannot automatically detect whether a change is fully compatible or not
	UnknownUpgradeCompatibility = diag.NewMessageType(diag.Warning, "IST0168", "The configuration %q changed in release %s, but compatibility cannot be automatically detected: %s. Or, install with `--set compatibilityVersion=%s` to retain the old default.")

	// UpdateIncompatibility defines a diag.MessageType for message "UpdateIncompatibility".
	// Description: The provided configuration object may be incompatible due to an upgrade
	UpdateIncompatibility = diag.NewMessageType(diag.Warning, "IST0169", "The configuration %q changed in release %s: %s. Or, install with `--set compatibilityVersion=%s` to retain the old default.")

	// MultiClusterInconsistentService defines a diag.MessageType for message "MultiClusterInconsistentService".
	// Description: The services live in different clusters under multi-cluster deployment model are inconsistent
	MultiClusterInconsistentService = diag.NewMessageType(diag.Warning, "IST0170", "The service %v in namespace %q is inconsistent across clusters %q, which can lead to undefined behaviors. The inconsistent behaviors are: %v.")

	// NegativeConditionStatus defines a diag.MessageType for message "NegativeConditionStatus".
	// Description: A condition with a negative status is present
	NegativeConditionStatus = diag.NewMessageType(diag.Warning, "IST0171", "A condition with a negative status is present: type=%s, reason=%s, message=%s.")

	// DestinationRuleSubsetNotSelectPods defines a diag.MessageType for message "DestinationRuleSubsetNotSelectPods".
	// Description: Subsets defined in destination does not select any pods.
	DestinationRuleSubsetNotSelectPods = diag.NewMessageType(diag.Error, "IST0173", "The Subset %s defined in the DestinationRule does not select any pods. Which may lead to 503 UH (NoHealthyUpstream).")

	// UnknownDestinationRuleHost defines a diag.MessageType for message "UnknownDestinationRuleHost".
	// Description: Host defined in destination rule does not match any services in the mesh.
	UnknownDestinationRuleHost = diag.NewMessageType(diag.Warning, "IST0174", "The host %s defined in the DestinationRule does not match any services in the mesh.")

	// JwksUriFetchUnrestricted defines a diag.MessageType for message "JwksUriFetchUnrestricted".
	// Description: RequestAuthentication resources exist but BLOCKED_CIDRS_IN_JWKS_URIS is not configured on istiod.
	JwksUriFetchUnrestricted = diag.NewMessageType(diag.Warning, "IST0175", "BLOCKED_CIDRS_IN_JWKS_URIS is not configured but %d RequestAuthentication resource(s) exist (%s). Consider configuring it to restrict JWKS URI fetches to trusted networks.")

	// GatewayAPICRDVersionBelowMinimum defines a diag.MessageType for message "GatewayAPICRDVersionBelowMinimum".
	// Description: A Gateway API CRD is installed at a version below the minimum required by this Istio version. Resources of this kind will not be processed.
	GatewayAPICRDVersionBelowMinimum = diag.NewMessageType(diag.Warning, "IST0176", "Gateway API CRD %q is at version %q but Istio requires at least %q; resources of this kind will not be processed. Upgrade the Gateway API CRDs to satisfy the minimum version.")
)

// All returns a list of all known message types.
func All() []*diag.MessageType {
	return []*diag.MessageType{
		InternalError,
		Deprecated,
		ReferencedResourceNotFound,
		NamespaceNotInjected,
		PodMissingProxy,
		SchemaValidationError,
		MisplacedAnnotation,
		UnknownAnnotation,
		ConflictingMeshGatewayVirtualServiceHosts,
		ConflictingSidecarWorkloadSelectors,
		MultipleSidecarsWithoutWorkloadSelectors,
		VirtualServiceDestinationPortSelectorRequired,
		DeploymentAssociatedToMultipleServices,
		PortNameIsNotUnderNamingConvention,
		NamespaceMultipleInjectionLabels,
		InvalidAnnotation,
		UnknownMeshNetworksServiceRegistry,
		NoMatchingWorkloadsFound,
		NoServerCertificateVerificationDestinationLevel,
		NoServerCertificateVerificationPortLevel,
		VirtualServiceUnreachableRule,
		VirtualServiceIneffectiveMatch,
		VirtualServiceHostNotFoundInGateway,
		SchemaWarning,
		ServiceEntryAddressesRequired,
		DeprecatedAnnotation,
		AlphaAnnotation,
		DeploymentConflictingPorts,
		GatewayDuplicateCertificate,
		InvalidWebhook,
		IngressRouteRulesNotAffected,
		InsufficientPermissions,
		UnsupportedKubernetesVersion,
		LocalhostListener,
		InvalidApplicationUID,
		ConflictingGateways,
		ImageAutoWithoutInjectionWarning,
		ImageAutoWithoutInjectionError,
		NamespaceInjectionEnabledByDefault,
		JwtClaimBasedRoutingWithoutRequestAuthN,
		ExternalNameServiceTypeInvalidPortName,
		EnvoyFilterUsesRelativeOperation,
		EnvoyFilterUsesReplaceOperationIncorrectly,
		EnvoyFilterUsesAddOperationIncorrectly,
		EnvoyFilterUsesRemoveOperationIncorrectly,
		EnvoyFilterUsesRelativeOperationWithProxyVersion,
		UnsupportedGatewayAPIVersion,
		FutureUnsupportedGatewayAPIVersion,
		InvalidTelemetryProvider,
		PodsIstioProxyImageMismatchInNamespace,
		ConflictingTelemetryWorkloadSelectors,
		MultipleTelemetriesWithoutWorkloadSelectors,
		InvalidGatewayCredential,
		GatewayPortNotDefinedOnService,
		InvalidExternalControlPlaneConfig,
		ExternalControlPlaneAddressIsNotAHostname,
		ReferencedInternalGateway,
		IneffectiveSelector,
		IneffectivePolicy,
		UnknownUpgradeCompatibility,
		UpdateIncompatibility,
		MultiClusterInconsistentService,
		NegativeConditionStatus,
		DestinationRuleSubsetNotSelectPods,
		UnknownDestinationRuleHost,
		JwksUriFetchUnrestricted,
		GatewayAPICRDVersionBelowMinimum,
	}
}

// NewInternalError returns a new diag.Message based on InternalError.
func NewInternalError(r *resource.Instance, detail string) diag.Message {
	return diag.NewMessage(
		InternalError,
		r,
		detail,
	)
}

// NewDeprecated returns a new diag.Message based on Deprecated.
func NewDeprecated(r *resource.Instance, detail string) diag.Message {
	return diag.NewMessage(
		Deprecated,
		r,
		detail,
	)
}

// NewReferencedResourceNotFound returns a new diag.Message based on ReferencedResourceNotFound.
func NewReferencedResourceNotFound(r *resource.Instance, reftype string, refval string) diag.Message {
	return diag.NewMessage(
		ReferencedResourceNotFound,
		r,
		reftype,
		refval,
	)
}

// NewNamespaceNotInjected returns a new diag.Message based on NamespaceNotInjected.
func NewNamespaceNotInjected(r *resource.Instance, namespace string, namespace2 string) diag.Message {
	return diag.NewMessage(
		NamespaceNotInjected,
		r,
		namespace,
		namespace2,
	)
}

// NewPodMissingProxy returns a new diag.Message based on PodMissingProxy.
func NewPodMissingProxy(r *resource.Instance, podName string) diag.Message {
	return diag.NewMessage(
		PodMissingProxy,
		r,
		podName,
	)
}

// NewSchemaValidationError returns a new diag.Message based on SchemaValidationError.
func NewSchemaValidationError(r *resource.Instance, err error) diag.Message {
	return diag.NewMessage(
		SchemaValidationError,
		r,
		err,
	)
}

// NewMisplacedAnnotation returns a new diag.Message based on MisplacedAnnotation.
func NewMisplacedAnnotation(r *resource.Instance, annotation string, kind string) diag.Message {
	return diag.NewMessage(
		MisplacedAnnotation,
		r,
		annotation,
		kind,
	)
}

// NewUnknownAnnotation returns a new diag.Message based on UnknownAnnotation.
func NewUnknownAnnotation(r *resource.Instance, annotation string) diag.Message {
	return diag.NewMessage(
		UnknownAnnotation,
		r,
		annotation,
	)
}

// NewConflictingMeshGatewayVirtualServiceHosts returns a new diag.Message based on ConflictingMeshGatewayVirtualServiceHosts.
func NewConflictingMeshGatewayVirtualServiceHosts(r *resource.Instance, virtualServices string, host string) diag.Message {
	return diag.NewMessage(
		ConflictingMeshGatewayVirtualServiceHosts,
		r,
		virtualServices,
		host,
	)
}

// NewConflictingSidecarWorkloadSelectors returns a new diag.Message based on ConflictingSidecarWorkloadSelectors.
func NewConflictingSidecarWorkloadSelectors(r *resource.Instance, conflictingSidecars []string, namespace string, workloadPod string) diag.Message {
	return diag.NewMessage(
		ConflictingSidecarWorkloadSelectors,
		r,
		conflictingSidecars,
		namespace,
		workloadPod,
	)
}

// NewMultipleSidecarsWithoutWorkloadSelectors returns a new diag.Message based on MultipleSidecarsWithoutWorkloadSelectors.
func NewMultipleSidecarsWithoutWorkloadSelectors(r *resource.Instance, conflictingSidecars []string, namespace string) diag.Message {
	return diag.NewMessage(
		MultipleSidecarsWithoutWorkloadSelectors,
		r,
		conflictingSidecars,
		namespace,
	)
}

// NewVirtualServiceDestinationPortSelectorRequired returns a new diag.Message based on VirtualServiceDestinationPortSelectorRequired.
func NewVirtualServiceDestinationPortSelectorRequired(r *resource.Instance, destHost string, destPorts []int) diag.Message {
	return diag.NewMessage(
		VirtualServiceDestinationPortSelectorRequired,
		r,
		destHost,
		destPorts,
	)
}

// NewDeploymentAssociatedToMultipleServices returns a new diag.Message based on DeploymentAssociatedToMultipleServices.
func NewDeploymentAssociatedToMultipleServices(r *resource.Instance, deployment string, port int32, services []string) diag.Message {
	return diag.NewMessage(
		DeploymentAssociatedToMultipleServices,
		r,
		deployment,
		port,
		services,
	)
}

// NewPortNameIsNotUnderNamingConvention returns a new diag.Message based on PortNameIsNotUnderNamingConvention.
func NewPortNameIsNotUnderNamingConvention(r *resource.Instance, portName string, port int, targetPort string) diag.Message {
	return diag.NewMessage(
		PortNameIsNotUnderNamingConvention,
		r,
		portName,
		port,
		targetPort,
	)
}

// NewNamespaceMultipleInjectionLabels returns a new diag.Message based on NamespaceMultipleInjectionLabels.
func NewNamespaceMultipleInjectionLabels(r *resource.Instance, labels []string) diag.Message {
	return diag.NewMessage(
		NamespaceMultipleInjectionLabels,
		r,
		labels,
	)
}

// NewInvalidAnnotation returns a new diag.Message based on InvalidAnnotation.
func NewInvalidAnnotation(r *resource.Instance, annotation string, problem string) diag.Message {
	return diag.NewMessage(
		InvalidAnnotation,
		r,
		annotation,
		problem,
	)
}

// NewUnknownMeshNetworksServiceRegistry returns a new diag.Message based on UnknownMeshNetworksServiceRegistry.
func NewUnknownMeshNetworksServiceRegistry(r *resource.Instance, serviceregistry string, network string) diag.Message {
	return diag.NewMessage(
		UnknownMeshNetworksServiceRegistry,
		r,
		serviceregistry,
		network,
	)
}

// NewNoMatchingWorkloadsFound returns a new diag.Message based on NoMatchingWorkloadsFound.
func NewNoMatchingWorkloadsFound(r *resource.Instance, labels string) diag.Message {
	return diag.NewMessage(
		NoMatchingWorkloadsFound,
		r,
		labels,
	)
}

// NewNoServerCertificateVerificationDestinationLevel returns a new diag.Message based on NoServerCertificateVerificationDestinationLevel.
func NewNoServerCertificateVerificationDestinationLevel(r *resource.Instance, destinationrule string, namespace string, mode string, host string) diag.Message {
	return diag.NewMessage(
		NoServerCertificateVerificationDestinationLevel,
		r,
		destinationrule,
		namespace,
		mode,
		host,
	)
}

// NewNoServerCertificateVerificationPortLevel returns a new diag.Message based on NoServerCertificateVerificationPortLevel.
func NewNoServerCertificateVerificationPortLevel(r *resource.Instance, destinationrule string, namespace string, mode string, host string, port string) diag.Message {
	return diag.NewMessage(
		NoServerCertificateVerificationPortLevel,
		r,
		destinationrule,
		namespace,
		mode,
		host,
		port,
	)
}

// NewVirtualServiceUnreachableRule returns a new diag.Message based on VirtualServiceUnreachableRule.
func NewVirtualServiceUnreachableRule(r *resource.Instance, ruleno string, reason string) diag.Message {
	return diag.NewMessage(
		VirtualServiceUnreachableRule,
		r,
		ruleno,
		reason,
	)
}

// NewVirtualServiceIneffectiveMatch returns a new diag.Message based on VirtualServiceIneffectiveMatch.
func NewVirtualServiceIneffectiveMatch(r *resource.Instance, ruleno string, matchno string, dupno string) diag.Message {
	return diag.NewMessage(
		VirtualServiceIneffectiveMatch,
		r,
		ruleno,
		matchno,
		dupno,
	)
}

// NewVirtualServiceHostNotFoundInGateway returns a new diag.Message based on VirtualServiceHostNotFoundInGateway.
func NewVirtualServiceHostNotFoundInGateway(r *resource.Instance, host []string, virtualservice string, gateway string) diag.Message {
	return diag.NewMessage(
		VirtualServiceHostNotFoundInGateway,
		r,
		host,
		virtualservice,
		gateway,
	)
}

// NewSchemaWarning returns a new diag.Message based on SchemaWarning.
func NewSchemaWarning(r *resource.Instance, err error) diag.Message {
	return diag.NewMessage(
		SchemaWarning,
		r,
		err,
	)
}

// NewServiceEntryAddressesRequired returns a new diag.Message based on ServiceEntryAddressesRequired.
func NewServiceEntryAddressesRequired(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		ServiceEntryAddressesRequired,
		r,
	)
}

// NewDeprecatedAnnotation returns a new diag.Message based on DeprecatedAnnotation.
func NewDeprecatedAnnotation(r *resource.Instance, annotation string, extra string) diag.Message {
	return diag.NewMessage(
		DeprecatedAnnotation,
		r,
		annotation,
		extra,
	)
}

// NewAlphaAnnotation returns a new diag.Message based on AlphaAnnotation.
func NewAlphaAnnotation(r *resource.Instance, annotation string) diag.Message {
	return diag.NewMessage(
		AlphaAnnotation,
		r,
		annotation,
	)
}

// NewDeploymentConflictingPorts returns a new diag.Message based on DeploymentConflictingPorts.
func NewDeploymentConflictingPorts(r *resource.Instance, deployment string, services []string, targetPort string, ports []int32) diag.Message {
	return diag.NewMessage(
		DeploymentConflictingPorts,
		r,
		deployment,
		services,
		targetPort,
		ports,
	)
}

// NewGatewayDuplicateCertificate returns a new diag.Message based on GatewayDuplicateCertificate.
func NewGatewayDuplicateCertificate(r *resource.Instance, gateways []string) diag.Message {
	return diag.NewMessage(
		GatewayDuplicateCertificate,
		r,
		gateways,
	)
}

// NewInvalidWebhook returns a new diag.Message based on InvalidWebhook.
func NewInvalidWebhook(r *resource.Instance, error string) diag.Message {
	return diag.NewMessage(
		InvalidWebhook,
		r,
		error,
	)
}

// NewIngressRouteRulesNotAffected returns a new diag.Message based on IngressRouteRulesNotAffected.
func NewIngressRouteRulesNotAffected(r *resource.Instance, virtualservicesubset string, virtualservice string) diag.Message {
	return diag.NewMessage(
		IngressRouteRulesNotAffected,
		r,
		virtualservicesubset,
		virtualservice,
	)
}

// NewInsufficientPermissions returns a new diag.Message based on InsufficientPermissions.
func NewInsufficientPermissions(r *resource.Instance, resource string, error string) diag.Message {
	return diag.NewMessage(
		InsufficientPermissions,
		r,
		resource,
		error,
	)
}

// NewUnsupportedKubernetesVersion returns a new diag.Message based on UnsupportedKubernetesVersion.
func NewUnsupportedKubernetesVersion(r *resource.Instance, version string, minimumVersion string) diag.Message {
	return diag.NewMessage(
		UnsupportedKubernetesVersion,
		r,
		version,
		minimumVersion,
	)
}

// NewLocalhostListener returns a new diag.Message based on LocalhostListener.
func NewLocalhostListener(r *resource.Instance, port string) diag.Message {
	return diag.NewMessage(
		LocalhostListener,
		r,
		port,
	)
}

// NewInvalidApplicationUID returns a new diag.Message based on InvalidApplicationUID.
func NewInvalidApplicationUID(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		InvalidApplicationUID,
		r,
	)
}

// NewConflictingGateways returns a new diag.Message based on ConflictingGateways.
func NewConflictingGateways(r *resource.Instance, gateway string, selector string, portnumber string, hosts string) diag.Message {
	return diag.NewMessage(
		ConflictingGateways,
		r,
		gateway,
		selector,
		portnumber,
		hosts,
	)
}

// NewImageAutoWithoutInjectionWarning returns a new diag.Message based on ImageAutoWithoutInjectionWarning.
func NewImageAutoWithoutInjectionWarning(r *resource.Instance, resourceType string, resourceName string) diag.Message {
	return diag.NewMessage(
		ImageAutoWithoutInjectionWarning,
		r,
		resourceType,
		resourceName,
	)
}

// NewImageAutoWithoutInjectionError returns a new diag.Message based on ImageAutoWithoutInjectionError.
func NewImageAutoWithoutInjectionError(r *resource.Instance, resourceType string, resourceName string) diag.Message {
	return diag.NewMessage(
		ImageAutoWithoutInjectionError,
		r,
		resourceType,
		resourceName,
	)
}

// NewNamespaceInjectionEnabledByDefault returns a new diag.Message based on NamespaceInjectionEnabledByDefault.
func NewNamespaceInjectionEnabledByDefault(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		NamespaceInjectionEnabledByDefault,
		r,
	)
}

// NewJwtClaimBasedRoutingWithoutRequestAuthN returns a new diag.Message based on JwtClaimBasedRoutingWithoutRequestAuthN.
func NewJwtClaimBasedRoutingWithoutRequestAuthN(r *resource.Instance, key string, gateway string, pod string) diag.Message {
	return diag.NewMessage(
		JwtClaimBasedRoutingWithoutRequestAuthN,
		r,
		key,
		gateway,
		pod,
	)
}

// NewExternalNameServiceTypeInvalidPortName returns a new diag.Message based on ExternalNameServiceTypeInvalidPortName.
func NewExternalNameServiceTypeInvalidPortName(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		ExternalNameServiceTypeInvalidPortName,
		r,
	)
}

// NewEnvoyFilterUsesRelativeOperation returns a new diag.Message based on EnvoyFilterUsesRelativeOperation.
func NewEnvoyFilterUsesRelativeOperation(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		EnvoyFilterUsesRelativeOperation,
		r,
	)
}

// NewEnvoyFilterUsesReplaceOperationIncorrectly returns a new diag.Message based on EnvoyFilterUsesReplaceOperationIncorrectly.
func NewEnvoyFilterUsesReplaceOperationIncorrectly(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		EnvoyFilterUsesReplaceOperationIncorrectly,
		r,
	)
}

// NewEnvoyFilterUsesAddOperationIncorrectly returns a new diag.Message based on EnvoyFilterUsesAddOperationIncorrectly.
func NewEnvoyFilterUsesAddOperationIncorrectly(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		EnvoyFilterUsesAddOperationIncorrectly,
		r,
	)
}

// NewEnvoyFilterUsesRemoveOperationIncorrectly returns a new diag.Message based on EnvoyFilterUsesRemoveOperationIncorrectly.
func NewEnvoyFilterUsesRemoveOperationIncorrectly(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		EnvoyFilterUsesRemoveOperationIncorrectly,
		r,
	)
}

// NewEnvoyFilterUsesRelativeOperationWithProxyVersion returns a new diag.Message based on EnvoyFilterUsesRelativeOperationWithProxyVersion.
func NewEnvoyFilterUsesRelativeOperationWithProxyVersion(r *resource.Instance) diag.Message {
	return diag.NewMessage(
		EnvoyFilterUsesRelativeOperationWithProxyVersion,
		r,
	)
}

// NewUnsupportedGatewayAPIVersion returns a new diag.Message based on UnsupportedGatewayAPIVersion.
func NewUnsupportedGatewayAPIVersion(r *resource.Instance, version string, minimumVersion string) diag.Message {
	return diag.NewMessage(
		UnsupportedGatewayAPIVersion,
		r,
		version,
		minimumVersion,
	)
}

// NewFutureUnsupportedGatewayAPIVersion returns a new diag.Message based on FutureUnsupportedGatewayAPIVersion.
func NewFutureUnsupportedGatewayAPIVersion(r *resource.Instance, version string, minimumVersion string) diag.Message {
	return diag.NewMessage(
		FutureUnsupportedGatewayAPIVersion,
		r,
		version,
		minimumVersion,
	)
}

// NewInvalidTelemetryProvider returns a new diag.Message based on InvalidTelemetryProvider.
func NewInvalidTelemetryProvider(r *resource.Instance, name string, namespace string) diag.Message {
	return diag.NewMessage(
		InvalidTelemetryProvider,
		r,
		name,
		namespace,
	)
}

// NewPodsIstioProxyImageMismatchInNamespace returns a new diag.Message based on PodsIstioProxyImageMismatchInNamespace.
func NewPodsIstioProxyImageMismatchInNamespace(r *resource.Instance, podNames []string) diag.Message {
	return diag.NewMessage(
		PodsIstioProxyImageMismatchInNamespace,
		r,
		podNames,
	)
}

// NewConflictingTelemetryWorkloadSelectors returns a new diag.Message based on ConflictingTelemetryWorkloadSelectors.
func NewConflictingTelemetryWorkloadSelectors(r *resource.Instance, conflictingTelemetries []string, namespace string, workloadPod string) diag.Message {
	return diag.NewMessage(
		ConflictingTelemetryWorkloadSelectors,
		r,
		conflictingTelemetries,
		namespace,
		workloadPod,
	)
}

// NewMultipleTelemetriesWithoutWorkloadSelectors returns a new diag.Message based on MultipleTelemetriesWithoutWorkloadSelectors.
func NewMultipleTelemetriesWithoutWorkloadSelectors(r *resource.Instance, conflictingTelemetries []string, namespace string) diag.Message {
	return diag.NewMessage(
		MultipleTelemetriesWithoutWorkloadSelectors,
		r,
		conflictingTelemetries,
		namespace,
	)
}

// NewInvalidGatewayCredential returns a new diag.Message based on InvalidGatewayCredential.
func NewInvalidGatewayCredential(r *resource.Instance, gatewayName string, gatewayNamespace string) diag.Message {
	return diag.NewMessage(
		InvalidGatewayCredential,
		r,
		gatewayName,
		gatewayNamespace,
	)
}

// NewGatewayPortNotDefinedOnService returns a new diag.Message based on GatewayPortNotDefinedOnService.
func NewGatewayPortNotDefinedOnService(r *resource.Instance, port int, selector string) diag.Message {
	return diag.NewMessage(
		GatewayPortNotDefinedOnService,
		r,
		port,
		selector,
	)
}

// NewInvalidExternalControlPlaneConfig returns a new diag.Message based on InvalidExternalControlPlaneConfig.
func NewInvalidExternalControlPlaneConfig(r *resource.Instance, hostname string, webhook string, msg string) diag.Message {
	return diag.NewMessage(
		InvalidExternalControlPlaneConfig,
		r,
		hostname,
		webhook,
		msg,
	)
}

// NewExternalControlPlaneAddressIsNotAHostname returns a new diag.Message based on ExternalControlPlaneAddressIsNotAHostname.
func NewExternalControlPlaneAddressIsNotAHostname(r *resource.Instance, hostname string, webhook string) diag.Message {
	return diag.NewMessage(
		ExternalControlPlaneAddressIsNotAHostname,
		r,
		hostname,
		webhook,
	)
}

// NewReferencedInternalGateway returns a new diag.Message based on ReferencedInternalGateway.
func NewReferencedInternalGateway(r *resource.Instance, virtualservice string, gateway string) diag.Message {
	return diag.NewMessage(
		ReferencedInternalGateway,
		r,
		virtualservice,
		gateway,
	)
}

// NewIneffectiveSelector returns a new diag.Message based on IneffectiveSelector.
func NewIneffectiveSelector(r *resource.Instance, gateway string) diag.Message {
	return diag.NewMessage(
		IneffectiveSelector,
		r,
		gateway,
	)
}

// NewIneffectivePolicy returns a new diag.Message based on IneffectivePolicy.
func NewIneffectivePolicy(r *resource.Instance, reason string) diag.Message {
	return diag.NewMessage(
		IneffectivePolicy,
		r,
		reason,
	)
}

// NewUnknownUpgradeCompatibility returns a new diag.Message based on UnknownUpgradeCompatibility.
func NewUnknownUpgradeCompatibility(r *resource.Instance, field string, release string, info string, compatVersion string) diag.Message {
	return diag.NewMessage(
		UnknownUpgradeCompatibility,
		r,
		field,
		release,
		info,
		compatVersion,
	)
}

// NewUpdateIncompatibility returns a new diag.Message based on UpdateIncompatibility.
func NewUpdateIncompatibility(r *resource.Instance, field string, release string, info string, compatVersion string) diag.Message {
	return diag.NewMessage(
		UpdateIncompatibility,
		r,
		field,
		release,
		info,
		compatVersion,
	)
}

// NewMultiClusterInconsistentService returns a new diag.Message based on MultiClusterInconsistentService.
func NewMultiClusterInconsistentService(r *resource.Instance, serviceName string, namespace string, clusters []string, error string) diag.Message {
	return diag.NewMessage(
		MultiClusterInconsistentService,
		r,
		serviceName,
		namespace,
		clusters,
		error,
	)
}

// NewNegativeConditionStatus returns a new diag.Message based on NegativeConditionStatus.
func NewNegativeConditionStatus(r *resource.Instance, conditionType string, reason string, message string) diag.Message {
	return diag.NewMessage(
		NegativeConditionStatus,
		r,
		conditionType,
		reason,
		message,
	)
}

// NewDestinationRuleSubsetNotSelectPods returns a new diag.Message based on DestinationRuleSubsetNotSelectPods.
func NewDestinationRuleSubsetNotSelectPods(r *resource.Instance, subset string) diag.Message {
	return diag.NewMessage(
		DestinationRuleSubsetNotSelectPods,
		r,
		subset,
	)
}

// NewUnknownDestinationRuleHost returns a new diag.Message based on UnknownDestinationRuleHost.
func NewUnknownDestinationRuleHost(r *resource.Instance, host string) diag.Message {
	return diag.NewMessage(
		UnknownDestinationRuleHost,
		r,
		host,
	)
}

// NewJwksUriFetchUnrestricted returns a new diag.Message based on JwksUriFetchUnrestricted.
func NewJwksUriFetchUnrestricted(r *resource.Instance, count int, names string) diag.Message {
	return diag.NewMessage(
		JwksUriFetchUnrestricted,
		r,
		count,
		names,
	)
}

// NewGatewayAPICRDVersionBelowMinimum returns a new diag.Message based on GatewayAPICRDVersionBelowMinimum.
func NewGatewayAPICRDVersionBelowMinimum(r *resource.Instance, crd string, installedVersion string, minimumVersion string) diag.Message {
	return diag.NewMessage(
		GatewayAPICRDVersionBelowMinimum,
		r,
		crd,
		installedVersion,
		minimumVersion,
	)
}
