
com.azure.resourcemanager.network.models.ApplicationGatewayRequestRoutingRule Maven / Gradle / Ivy
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.resourcemanager.network.models;
import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.network.fluent.models.ApplicationGatewayRequestRoutingRuleInner;
import com.azure.resourcemanager.resources.fluentcore.arm.models.ChildResource;
import com.azure.resourcemanager.resources.fluentcore.model.Attachable;
import com.azure.resourcemanager.resources.fluentcore.model.HasInnerModel;
import com.azure.resourcemanager.resources.fluentcore.model.Settable;
import java.util.Collection;
/** A client-side representation of an application gateway request routing rule. */
@Fluent()
public interface ApplicationGatewayRequestRoutingRule
extends HasInnerModel,
ChildResource,
HasPublicIpAddress,
HasSslCertificate,
HasFrontendPort,
HasBackendPort,
HasHostname,
HasCookieBasedAffinity,
HasServerNameIndication {
/** @return the redirect configuration associated with this request routing rule, if any */
ApplicationGatewayRedirectConfiguration redirectConfiguration();
/** @return the frontend protocol */
ApplicationGatewayProtocol frontendProtocol();
/** @return rule type */
ApplicationGatewayRequestRoutingRuleType ruleType();
/** @return the associated backend address pool */
ApplicationGatewayBackend backend();
/** @return the associated backend HTTP settings configuration */
ApplicationGatewayBackendHttpConfiguration backendHttpConfiguration();
/** @return the associated frontend HTTP listener */
ApplicationGatewayListener listener();
/** @return the addresses assigned to the associated backend */
Collection backendAddresses();
/** @return the associated URL path map */
ApplicationGatewayUrlPathMap urlPathMap();
/** @return the priority of the rule
only available for {@link ApplicationGatewaySkuName#STANDARD_V2} and {@link ApplicationGatewaySkuName#WAF_V2} */
Integer priority();
/** Grouping of application gateway request routing rule definition stages. */
interface DefinitionStages {
/**
* The first stage of an application gateway request routing rule definition.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface Blank extends WithListenerOrFrontend {
}
/**
* The final stage of an application gateway request routing rule definition.
*
* At this stage, any remaining optional settings can be specified, or the definition can be attached to the
* parent application gateway definition.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithAttach
extends Attachable.InDefinition,
WithHostname,
WithCookieBasedAffinity,
WithUrlPathMap,
WithPriority {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify an existing listener
* to associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithListener {
/**
* Associates the request routing rule with a frontend listener.
*
* If the listener with the specified name does not yet exist, it must be defined separately in the
* optional stages of the application gateway definition. This only adds a reference to the listener by its
* name.
*
*
Also, note that a given listener can be used by no more than one request routing rule at a time.
*
* @param name the name of a listener to reference
* @return the next stage of the definition
*/
WithBackendHttpConfigOrRedirect fromListener(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to associate an existing
* listener with the rule, or create a new one implicitly by specifying the frontend to listen to.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithListenerOrFrontend extends WithListener, WithFrontend {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the frontend for the
* rule to apply to.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithFrontend {
/**
* Enables the rule to apply to the application gateway's public (Internet-facing) frontend.
*
* If the public frontend IP configuration does not yet exist, it will be created under an auto-generated
* name.
*
*
If the application gateway does not have a public IP address specified for its public frontend, one
* will be created automatically, unless a specific public IP address is specified in the application
* gateway definition's optional settings.
*
* @return the next stage of the definition
*/
WithFrontendPort fromPublicFrontend();
/**
* Enables the rule to apply to the application gateway's private (internal) frontend.
*
* If the private frontend IP configuration does not yet exist, it will be created under an
* auto-generated name.
*
*
If the application gateway does not have a subnet specified for its private frontend, one will be
* created automatically, unless a specific subnet is specified in the application gateway definition's
* optional settings.
*
* @return the next stage of the definition
*/
WithFrontendPort fromPrivateFrontend();
}
/**
* The stage of an application gateway request routing rule definition allowing to create an associate listener
* and frontend for a specific port number and protocol.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithFrontendPort {
/**
* Associates a new listener for the specified port number and the HTTP protocol with this rule.
*
* @param portNumber the port number to listen to
* @return the next stage of the definition, or null if the specified port number is already used for a
* different protocol
*/
WithBackendHttpConfigOrRedirect fromFrontendHttpPort(int portNumber);
/**
* Associates a new listener for the specified port number and the HTTPS protocol with this rule.
*
* @param portNumber the port number to listen to
* @return the next stage of the definition, or null if the specified port number is already used for a
* different protocol
*/
WithSslCertificate fromFrontendHttpsPort(int portNumber);
}
/**
* The stage of an application gateway request routing rule allowing to specify an SSL certificate.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithSslCertificate
extends HasSslCertificate.DefinitionStages.WithSslCertificate<
WithBackendHttpConfigOrSniOrRedirect> {
}
/**
* The stage of an application gateway request routing rule allowing to specify backend HTTP settings, or SNI,
* or a redirect configuration.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfigOrSniOrRedirect
extends WithBackendHttpConfigurationOrSni, WithRedirectConfig {
}
/**
* The stage of an application gateway request routing rule allowing to specify an SSL certificate.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithSslPassword extends HasSslCertificate.DefinitionStages.WithSslPassword {
}
/**
* The stage of an application gateway request routing rule allowing to enable cookie based affinity.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithCookieBasedAffinity
extends HasCookieBasedAffinity.DefinitionStages.WithCookieBasedAffinity> {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the backend to
* associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackend {
/**
* Associates the request routing rule with a backend on this application gateway.
*
* If the backend does not yet exist, it will be automatically created.
*
* @param name the name of an existing backend
* @return the next stage of the definition
*/
WithAttach toBackend(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to add an address to the backend
* used by this request routing rule.
*
* A new backend will be created if none is associated with this rule yet.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendAddress {
/**
* Adds an IP address to the backend associated with this rule.
*
* If no backend has been associated with this rule yet, a new one will be created with an auto-generated
* name.
*
*
This call can be used in a sequence to add multiple IP addresses.
*
* @param ipAddress an IP address
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendIPAddress(String ipAddress);
/**
* Adds the specified IP addresses to the backend associated with this rule.
*
* @param ipAddresses IP addresses to add
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendIPAddresses(String... ipAddresses);
/**
* Adds an FQDN (fully qualified domain name) to the backend associated with this rule.
*
* If no backend has been associated with this rule yet, a new one will be created with an auto-generated
* name.
*
*
This call can be used in a sequence to add multiple FQDNs.
*
* @param fqdn a fully qualified domain name
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendFqdn(String fqdn);
}
/**
* The stage of an application gateway request routing rule definition allowing to add more backend addresses,
* start specifying optional settings, or finish the definition by attaching it to the parent application
* gateway.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendAddressOrAttach extends WithBackendAddress, WithAttach {
}
/**
* The stage of an application gateway request routing rule definition allowing to add an address to specify an
* existing backend to associate with this request routing rule or create a new backend with an auto-generated
* name and addresses to it.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendOrAddress extends WithBackend, WithBackendAddress {
}
/**
* The stage of an application gateway request routing rule definition allowing to require server name
* indication if the application gateway is serving multiple websites in its backends and SSL is required.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfigurationOrSni
extends WithBackendHttpConfiguration,
HasServerNameIndication.DefinitionStages.WithServerNameIndication<
WithBackendHttpConfiguration> {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the backend HTTP
* settings configuration to associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfiguration {
/**
* Associates the specified backend HTTP settings configuration with this request routing rule.
*
* If the backend configuration does not exist yet, it must be defined in the optional part of the
* application gateway definition. The request routing rule references it only by name.
*
* @param name the name of a backend HTTP settings configuration
* @return the next stage of the definition
*/
WithBackendOrAddress toBackendHttpConfiguration(String name);
/**
* Creates a backend HTTP settings configuration for the specified backend port and the HTTP protocol, and
* associates it with this request routing rule.
*
* An auto-generated name will be used for this newly created configuration.
*
* @param portNumber the port number for a new backend HTTP settings configuration
* @return the next stage of the definition
*/
WithBackendOrAddress toBackendHttpPort(int portNumber);
// TODO: toBackendHttpsPort(int portNumber) ?
}
/**
* The stage of an application gateway request routing rule definition allowing to select either a backend or a
* redirect configuration.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfigOrRedirect
extends WithBackendHttpConfiguration, WithRedirectConfig {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the host name of a
* backend website for the listener to receive traffic for.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithHostname extends HasHostname.DefinitionStages.WithHostname> {
}
/**
* The stage of an application gateway request routing rule definition allowing to require server name
* indication.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithServerNameIndication
extends HasServerNameIndication.DefinitionStages.WithServerNameIndication> {
}
/**
* The stage of an application gateway request routing rule definition allowing to associate the rule with a
* redirect configuration.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithRedirectConfig {
/**
* Associates the specified redirect configuration with this request routing rule.
*
* @param name the name of a redirect configuration on this application gateway
* @return the next stage of the definition
*/
WithAttach withRedirectConfiguration(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to associate the rule with a
* URL path map.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithUrlPathMap {
/**
* Associates the specified URL path map with this request routing rule.
*
* @param urlPathMapName the name of a URL path map on this application gateway
* @return the next stage of the definition
*/
WithAttach withUrlPathMap(String urlPathMapName);
}
/**
* The stage of an application gateway request routing rule definition allowing to associate the rule with a
* priority.
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithPriority {
/**
* Specifies a unique priority value for the request routing rule. It is required and only available for
* {@link ApplicationGatewaySkuName#STANDARD_V2} and {@link ApplicationGatewaySkuName#WAF_V2}。
* You should always specify the priority, if applicable.
*
If you don't specify, SDK will automatically assign a unique value for you (ranging from 10010 to 20000)
* in the ordering of definition. Those which defined later will have larger priority values (lower priority)
* over those which defined earlier. This auto-assignment feature is meant for working with your existing
* code only. You should avoid relying on it and always specify priorities for all rules whenever possible.
* @param priority unique priority value of the request routing rule ranging from 1(highest) to 20000(lowest)
* @return the next stage of the definition
*/
WithAttach withPriority(int priority);
}
}
/**
* The entirety of an application gateway request routing rule definition.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface Definition
extends DefinitionStages.Blank,
DefinitionStages.WithAttach,
DefinitionStages.WithFrontend,
DefinitionStages.WithListener,
DefinitionStages.WithFrontendPort,
DefinitionStages.WithListenerOrFrontend,
DefinitionStages.WithBackend,
DefinitionStages.WithBackendAddress,
DefinitionStages.WithBackendOrAddress,
DefinitionStages.WithBackendAddressOrAttach,
DefinitionStages.WithBackendHttpConfigOrRedirect,
DefinitionStages.WithBackendHttpConfiguration,
DefinitionStages.WithBackendHttpConfigurationOrSni,
DefinitionStages.WithSslCertificate,
DefinitionStages.WithBackendHttpConfigOrSniOrRedirect,
DefinitionStages.WithSslPassword>,
DefinitionStages.WithUrlPathMap {
}
/** Grouping of application gateway request routing rule update stages. */
interface UpdateStages {
/**
* The stage of an application gateway request routing rule update allowing to associate the rule with a
* redirect configuration.
*/
interface WithRedirectConfig {
/**
* Associates the specified redirect configuration with this request routing rule.
*
* Note that no backend can be associated with this request routing rule if it has a redirect
* configuration assigned to it, so this will also remove any backend and backend HTTP settings
* configuration.
*
* @param name the name of a redirect configuration on this application gateway
* @return the next stage of the update
*/
Update withRedirectConfiguration(String name);
/**
* Removes the association with a redirect configuration, if any.
*
* @return the next stage of the update
*/
Update withoutRedirectConfiguration();
}
/**
* The stage of an application gateway request routing rule update allowing to specify an existing listener to
* associate the routing rule with.
*/
interface WithListener {
/**
* Associates the request routing rule with an existing frontend listener.
*
*
Also, note that a given listener can be used by no more than one request routing rule at a time.
*
* @param name the name of a listener to reference
* @return the next stage of the update
*/
Update fromListener(String name);
}
/**
* The stage of an application gateway request routing rule update allowing to specify the backend to associate
* the routing rule with.
*/
interface WithBackend {
/**
* Associates the request routing rule with a backend on this application gateway.
*
*
If the specified backend does not yet exist, it will be automatically created.
*
* @param name the name of a backend
* @return the next stage of the update
*/
Update toBackend(String name);
}
/**
* The stage of an application gateway request routing rule update allowing to specify the backend HTTP settings
* configuration to associate the routing rule with.
*/
interface WithBackendHttpConfiguration {
/**
* Associates the specified backend HTTP settings configuration with this request routing rule.
*
* @param name the name of a backend HTTP settings configuration
* @return the next stage of the update
*/
Update toBackendHttpConfiguration(String name);
}
/** The stage of an application gateway request routing rule allowing to specify an SSL certificate. */
interface WithSslCertificate extends HasSslCertificate.UpdateStages.WithSslCertificate {
}
/**
* The stage of an application gateway request routing rule allowing to specify password of the SSL certificate
* pfx file.
*/
interface WithSslPassword extends HasSslCertificate.UpdateStages.WithSslPassword {
}
/**
* The stage of an application gateway request routing rule allowing to associate the rule with a priority.
*/
interface WithPriority {
/**
* Updates with a unique priority value for the request routing rule. It is required and only available for
* {@link ApplicationGatewaySkuName#STANDARD_V2} and {@link ApplicationGatewaySkuName#WAF_V2}。
* Rules with no priorities before will be auto-assigned with values ranging from 10010 to 20000.
* For updating rules with auto-assigned priorities, consider updating all existing ones for that Gateway.
* Otherwise, it would lead to unexpected ordering.
* @param priority unique priority value of the request routing rule ranging from 1(highest) to 20000(lowest)
* @return the next stage of the update
*/
Update withPriority(int priority);
}
}
/** The entirety of an application gateway request routing rule update as part of an application gateway update. */
interface Update
extends Settable,
UpdateStages.WithListener,
UpdateStages.WithBackend,
UpdateStages.WithBackendHttpConfiguration,
UpdateStages.WithSslCertificate,
UpdateStages.WithSslPassword,
UpdateStages.WithRedirectConfig,
UpdateStages.WithPriority {
}
/**
* Grouping of application gateway request routing rule definition stages applicable as part of an application
* gateway update.
*/
interface UpdateDefinitionStages {
/**
* The first stage of an application gateway request routing rule definition.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface Blank extends WithListenerOrFrontend {
}
/**
* The final stage of an application gateway request routing rule definition.
*
* At this stage, any remaining optional settings can be specified, or the definition can be attached to the
* parent application gateway definition.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithAttach
extends Attachable.InUpdate,
WithHostname,
WithCookieBasedAffinity,
WithRedirectConfig,
WithPriority {
}
/**
* The stage of an application gateway request routing rule definition allowing to select either a backend or a
* redirect configuration.
*
* @param the stage of the application gateway update to return to after attaching this definition
*/
interface WithBackendHttpConfigOrRedirect
extends WithBackendHttpConfiguration, WithRedirectConfig {
}
/**
* The stage of an application gateway request routing rule definition allowing to associate the rule with a
* redirect configuration.
*
* @param the stage of the application gateway update to return to after attaching this definition
*/
interface WithRedirectConfig {
/**
* Associates the specified redirect configuration with this request routing rule.
*
* @param name the name of a redirect configuration on this application gateway
* @return the next stage of the definition
*/
WithAttach withRedirectConfiguration(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to associate the rule with a
* priority.
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithPriority {
/**
* Specifies a unique priority value for the request routing rule. It is required and only available for
* {@link ApplicationGatewaySkuName#STANDARD_V2} and {@link ApplicationGatewaySkuName#WAF_V2}。
* You should always specify the priority, if applicable.
*
If you don't specify, SDK will automatically assign a unique value for you (ranging from 10010 to 20000)
* in the ordering of definition. Those which defined later will have larger priority values (lower priority)
* over those which defined earlier. This auto-assignment feature is meant for working with your existing
* code only. You should avoid relying on it and always specify priorities for all rules whenever possible.
* @param priority unique priority value of the request routing rule ranging from 1(highest) to 20000(lowest)
* @return the next stage of the definition
*/
WithAttach withPriority(int priority);
}
/**
* The stage of an application gateway request routing rule definition allowing to specify an existing listener
* to associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithListener {
/**
* Associates the request routing rule with a frontend listener.
*
* If the listener with the specified name does not yet exist, it must be defined separately in the
* optional part of the application gateway definition. This only adds a reference to the listener by its
* name.
*
*
Also, note that a given listener can be used by no more than one request routing rule at a time.
*
* @param name the name of a listener to reference
* @return the next stage of the definition
*/
WithBackendHttpConfigOrRedirect fromListener(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to associate an existing
* listener with the rule, or create a new one implicitly by specifying the frontend to listen to.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithListenerOrFrontend extends WithListener, WithFrontend {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the frontend for the
* rule to apply to.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithFrontend {
/**
* Enables the rule to apply to the application gateway's public (Internet-facing) frontend.
*
* If the public frontend IP configuration does not yet exist, it will be created under an auto-generated
* name.
*
*
If the application gateway does not have a public IP address specified for its public frontend, one
* will be created automatically, unless a specific public IP address is specified in the application
* gateway definition's optional settings.
*
* @return the next stage of the definition
*/
WithFrontendPort fromPublicFrontend();
/**
* Enables the rule to apply to the application gateway's private (internal) frontend.
*
* If the private frontend IP configuration does not yet exist, it will be created under an
* auto-generated name.
*
*
If the application gateway does not have a subnet specified for its private frontend, one will be
* created automatically, unless a specific subnet is specified in the application gateway definition's
* optional settings.
*
* @return the next stage of the definition
*/
WithFrontendPort fromPrivateFrontend();
}
/**
* The stage of an application gateway request routing rule definition allowing to create an associate listener
* and frontend for a specific port number and protocol.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithFrontendPort {
/**
* Associates a new listener for the specified port number and the HTTP protocol with this rule.
*
* @param portNumber the port number to listen to
* @return the next stage of the definition, or null if the specified port number is already used for a
* different protocol
*/
WithBackendHttpConfigOrRedirect fromFrontendHttpPort(int portNumber);
/**
* Associates a new listener for the specified port number and the HTTPS protocol with this rule.
*
* @param portNumber the port number to listen to
* @return the next stage of the definition, or null if the specified port number is already used for a
* different protocol
*/
WithSslCertificate fromFrontendHttpsPort(int portNumber);
}
/**
* The stage of an application gateway request routing rule allowing to specify an SSL certificate.
*
* @param the next stage of the definition
*/
interface WithSslCertificate
extends HasSslCertificate.UpdateDefinitionStages.WithSslCertificate<
WithBackendHttpConfigOrSniOrRedirect> {
}
/**
* The stage of an application gateway request routing rule allowing to specify an SSL certificate.
*
* @param the next stage of the definition
*/
interface WithSslPassword extends HasSslCertificate.UpdateDefinitionStages.WithSslPassword {
}
/**
* The stage of an application gateway request routing rule allowing to enable cookie based affinity.
*
* @param the next stage of the definition
*/
interface WithCookieBasedAffinity
extends HasCookieBasedAffinity.UpdateDefinitionStages.WithCookieBasedAffinity> {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the backend to
* associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackend {
/**
* Associates the request routing rule with a backend on this application gateway.
*
* If the backend does not yet exist, it will be automatically created.
*
* @param name the name of an existing backend
* @return the next stage of the definition
*/
WithAttach toBackend(String name);
}
/**
* The stage of an application gateway request routing rule definition allowing to add an address to the backend
* used by this request routing rule.
*
* A new backend will be created if none is associated with this rule yet.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendAddress {
/**
* Adds an IP address to the backend associated with this rule.
*
* If no backend has been associated with this rule yet, a new one will be created with an auto-generated
* name.
*
*
This call can be used in a sequence to add multiple IP addresses.
*
* @param ipAddress an IP address
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendIPAddress(String ipAddress);
/**
* Adds the specified IP addresses to the backend associated with this rule.
*
* @param ipAddresses IP addresses to add
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendIPAddresses(String... ipAddresses);
/**
* Adds an FQDN (fully qualified domain name) to the backend associated with this rule.
*
* If no backend has been associated with this rule yet, a new one will be created with an auto-generated
* name.
*
*
This call can be used in a sequence to add multiple FQDNs.
*
* @param fqdn a fully qualified domain name
* @return the next stage of the definition
*/
WithBackendAddressOrAttach toBackendFqdn(String fqdn);
}
/**
* The stage of an application gateway request routing rule definition allowing to add more backend addresses,
* start specifying optional settings, or finish the definition by attaching it to the parent application
* gateway.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendAddressOrAttach extends WithBackendAddress, WithAttach {
}
/**
* The stage of an application gateway request routing rule definition allowing to add an address to specify an
* existing backend to associate with this request routing rule or create a new backend with an auto-generated
* name and addresses to it.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendOrAddress extends WithBackend, WithBackendAddress {
}
/**
* The stage of an application gateway request routing rule definition allowing to require server name
* indication if the application gateway is serving multiple websites in its backends and SSL is required.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfigurationOrSni
extends WithBackendHttpConfiguration,
HasServerNameIndication.UpdateDefinitionStages.WithServerNameIndication<
WithBackendHttpConfiguration> {
}
/**
* The stage of an application gateway request routing rule allowing to specify backend HTTP settings, or SNI,
* or a redirect configuration.
*
* @param the stage of the application gateway update to return to after attaching this definition
*/
interface WithBackendHttpConfigOrSniOrRedirect
extends WithBackendHttpConfigurationOrSni, WithRedirectConfig {
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the backend HTTP
* settings configuration to associate the routing rule with.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithBackendHttpConfiguration {
/**
* Associates the specified backend HTTP settings configuration with this request routing rule.
*
* If the backend configuration does not exist yet, it must be defined in the optional part of the
* application gateway definition. The request routing rule references it only by name.
*
* @param name the name of a backend HTTP settings configuration
* @return the next stage of the definition
*/
WithBackendOrAddress toBackendHttpConfiguration(String name);
/**
* Creates a backend HTTP settings configuration for the specified backend port and the HTTP protocol, and
* associates it with this request routing rule.
*
* An auto-generated name will be used for this newly created configuration.
*
* @param portNumber the port number for a new backend HTTP settings configuration
* @return the next stage of the definition
*/
WithBackendOrAddress toBackendHttpPort(int portNumber);
// TODO: toBackendHttpsPort(int portNumber) ?
}
/**
* The stage of an application gateway request routing rule definition allowing to specify the host name of a
* backend website for the listener to receive traffic for.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithHostname extends HasHostname.UpdateDefinitionStages.WithHostname> {
}
/**
* The stage of an application gateway request routing rule definition allowing to require server name
* indication.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface WithServerNameIndication
extends HasServerNameIndication.UpdateDefinitionStages.WithServerNameIndication> {
}
}
/**
* The entirety of an application gateway request routing rule definition as part of an application gateway update.
*
* @param the stage of the application gateway definition to return to after attaching this definition
*/
interface UpdateDefinition
extends UpdateDefinitionStages.Blank,
UpdateDefinitionStages.WithAttach,
UpdateDefinitionStages.WithFrontend,
UpdateDefinitionStages.WithListener,
UpdateDefinitionStages.WithFrontendPort,
UpdateDefinitionStages.WithListenerOrFrontend,
UpdateDefinitionStages.WithBackend,
UpdateDefinitionStages.WithBackendAddress,
UpdateDefinitionStages.WithBackendOrAddress,
UpdateDefinitionStages.WithBackendAddressOrAttach,
UpdateDefinitionStages.WithBackendHttpConfiguration,
UpdateDefinitionStages.WithBackendHttpConfigOrRedirect,
UpdateDefinitionStages.WithBackendHttpConfigurationOrSni,
UpdateDefinitionStages.WithBackendHttpConfigOrSniOrRedirect,
UpdateDefinitionStages.WithSslCertificate,
UpdateDefinitionStages.WithSslPassword<
UpdateDefinitionStages.WithBackendHttpConfigOrSniOrRedirect> {
}
}