/** * 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.batch; import com.microsoft.azure.management.apigeneration.Fluent; import com.microsoft.azure.management.batch.implementation.ApplicationInner; import com.microsoft.azure.management.resources.fluentcore.arm.models.ExternalChildResource; import com.microsoft.azure.management.resources.fluentcore.model.Attachable; import com.microsoft.azure.management.resources.fluentcore.model.Settable; import com.microsoft.azure.management.resources.fluentcore.model.HasInner; import java.util.Map; /** * An immutable client-side representation of an Azure Batch account application. */ @Fluent public interface Application extends ExternalChildResource<Application, BatchAccount>, HasInner<ApplicationInner> { /** * @return the display name of the application */ String displayName(); /** * @return application packages */ Map<String, ApplicationPackage> applicationPackages(); /** * @return true if automatic updates are allowed, otherwise false */ boolean updatesAllowed(); /** * @return the default version for the application. */ String defaultVersion(); /** * The entirety of a Batch application definition as a part of a Batch account definition. * * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface Definition<ParentT> extends DefinitionStages.Blank<ParentT>, DefinitionStages.WithAttach<ParentT> { } /** * Grouping of all the application package definition stages. */ interface DefinitionStages { /** * The first stage of a batch application definition. * * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface Blank<ParentT> extends WithAttach<ParentT> { } /** * The stage of a Batch application definition that allows the creation of an application package. * * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface WithApplicationPackage<ParentT> { /** * The first stage of a new application package definition in a Batch account application. * * @param applicationPackageName the version of the application * @return the next stage of the definition */ DefinitionStages.WithAttach<ParentT> defineNewApplicationPackage(String applicationPackageName); } /** * The final stage of the application definition. * <p> * At this stage, any remaining optional settings can be specified, or the application definition * can be attached to the parent batch account definition. * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface WithAttach<ParentT> extends Attachable.InDefinition<ParentT>, WithApplicationPackage<ParentT> { /** * The stage of a Batch application definition allowing automatic application updates. * * @param allowUpdates true to allow the automatic updates of application, otherwise false * @return the next stage of the definition */ DefinitionStages.WithAttach<ParentT> withAllowUpdates(boolean allowUpdates); /** * Specifies a display name for the Batch application. * * @param displayName a display name * @return the next stage of the definition */ DefinitionStages.WithAttach<ParentT> withDisplayName(String displayName); } } /** * The entirety of a Batch application definition as a part of parent update. * @param <ParentT> the stage of the parent Batch account update to return to after attaching this definition */ interface UpdateDefinition<ParentT> extends UpdateDefinitionStages.Blank<ParentT>, UpdateDefinitionStages.WithAttach<ParentT> { } /** * Grouping of application definition stages as part of a Batch account update. */ interface UpdateDefinitionStages { /** * The first stage of a Batch application definition. * * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface Blank<ParentT> extends WithAttach<ParentT> { } /** * The stage of a Batch application definition allowing the creation of an application package. * * @param <ParentT> the stage of the parent Batch account definition to return to after attaching this definition */ interface WithApplicationPackage<ParentT> { /** * First stage to create new application package in Batch account application. * * @param version the version of the application * @return next stage to create the application. */ UpdateDefinitionStages.WithAttach<ParentT> defineNewApplicationPackage(String version); } /** The final stage of a Batch application definition. * <p> * At this stage, any remaining optional settings can be specified, or the application definition * can be attached to the parent batch Account update. * @param <ParentT> the stage of the parent Batch account update to return to after attaching this definition */ interface WithAttach<ParentT> extends Attachable.InUpdate<ParentT>, WithApplicationPackage<ParentT> { /** * Allows automatic application updates. * * @param allowUpdates true to allow automatic updates of a Batch application, otherwise false * @return the next stage of the definition */ UpdateDefinitionStages.WithAttach<ParentT> withAllowUpdates(boolean allowUpdates); /** * Specifies the display name for the Batch application. * * @param displayName a display name for the application. * @return the next stage of the definition */ UpdateDefinitionStages.WithAttach<ParentT> withDisplayName(String displayName); } } /** * Grouping of Batch application update stages. */ interface UpdateStages { /** * The stage of a Batch application update allowing the creation of an application package. */ interface WithApplicationPackage { /** * First stage to create new application package in Batch account application. * * @param version the version of the application * @return next stage to create the application. */ Update defineNewApplicationPackage(String version); /** * Deletes specified application package from the application. * * @param version the reference version of the application to be removed * @return the stage representing updatable batch account definition. */ Update withoutApplicationPackage(String version); } /** * The stage of an application update allowing to enable or disable auto upgrade of the * application. */ interface WithOptionalProperties { /** * Allows automatic application updates. * * @param allowUpdates true to allow the automatic updates of the application, otherwise false * @return the next stage of the update */ Update withAllowUpdates(boolean allowUpdates); /** * Specifies the display name for the application. * * @param displayName a display name * @return the next stage of the update */ Update withDisplayName(String displayName); } } /** * The entirety of a Batch application update as a part of a Batch account update. */ interface Update extends Settable<BatchAccount.Update>, UpdateStages.WithOptionalProperties, UpdateStages.WithApplicationPackage { } }