/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.appservice;
import com.microsoft.azure.management.apigeneration.Beta;
import com.microsoft.azure.management.apigeneration.Fluent;
import com.microsoft.azure.management.appservice.implementation.AppServiceManager;
import com.microsoft.azure.management.appservice.implementation.SiteInner;
import com.microsoft.azure.management.resources.fluentcore.arm.models.HasParent;
import com.microsoft.azure.management.resources.fluentcore.arm.models.IndependentChildResource;
import com.microsoft.azure.management.resources.fluentcore.model.Appliable;
import com.microsoft.azure.management.resources.fluentcore.model.Creatable;
import com.microsoft.azure.management.resources.fluentcore.model.Refreshable;
import com.microsoft.azure.management.resources.fluentcore.model.Updatable;
/**
* An immutable client-side representation of an Azure Web App deployment slot.
*/
@Fluent(ContainerName = "/Microsoft.Azure.Management.AppService.Fluent")
@Beta
public interface DeploymentSlot extends
IndependentChildResource<AppServiceManager, SiteInner>,
WebAppBase,
Refreshable<DeploymentSlot>,
Updatable<DeploymentSlot.Update>,
HasParent<WebApp> {
/**************************************************************
* Fluent interfaces to provision a deployment slot
**************************************************************/
/**
* Container interface for all the definitions that need to be implemented.
*/
interface Definition extends
DefinitionStages.Blank,
DefinitionStages.WithConfiguration,
DefinitionStages.WithCreate {
}
/**
* Grouping of all the deployment slot definition stages.
*/
interface DefinitionStages {
/**
* The first stage of the deployment slot definition.
*/
interface Blank extends WithConfiguration {
}
/**
* A deployment slot definition allowing the configuration to clone from to be specified.
*/
interface WithConfiguration {
/**
* Creates the deployment slot with brand new site configurations.
* @return the next stage of the definition
*/
WithCreate withBrandNewConfiguration();
/**
* Copies the site configurations from the web app the deployment slot belongs to.
* @return the next stage of the definition
*/
WithCreate withConfigurationFromParent();
/**
* Copies the site configurations from a given web app.
* @param webApp the web app to copy the configurations from
* @return the next stage of the definition
*/
WithCreate withConfigurationFromWebApp(WebApp webApp);
/**
* Copies the site configurations from a given deployment slot.
* @param deploymentSlot the deployment slot to copy the configurations from
* @return the next stage of the definition
*/
WithCreate withConfigurationFromDeploymentSlot(DeploymentSlot deploymentSlot);
}
/**
* A site definition with sufficient inputs to create a new web app /
* deployments slot in the cloud, but exposing additional optional
* inputs to specify.
*/
interface WithCreate extends
Creatable<DeploymentSlot>,
WebAppBase.DefinitionStages.WithCreate<DeploymentSlot> {
}
}
/**
* The template for a web app update operation, containing all the settings that can be modified.
*/
interface Update extends
Appliable<DeploymentSlot>,
WebAppBase.Update<DeploymentSlot> {
}
}