diff --git a/app/scripts/modules/core/src/deploymentStrategy/strategies/monitored/AdditionalFields.tsx b/app/scripts/modules/core/src/deploymentStrategy/strategies/monitored/AdditionalFields.tsx index 05a0e1285e9..2a05e0324c6 100644 --- a/app/scripts/modules/core/src/deploymentStrategy/strategies/monitored/AdditionalFields.tsx +++ b/app/scripts/modules/core/src/deploymentStrategy/strategies/monitored/AdditionalFields.tsx @@ -13,8 +13,9 @@ import { export interface IMonitoredDeployCommand extends IServerGroupCommand { delayBeforeScaleDownSec: string; - rollback: { - onFailure: boolean; + failureActions: { + destroyInstances: boolean; + rollback: string; }; maxRemainingAsgs: number; scaleDown: boolean; @@ -25,6 +26,12 @@ export interface IMonitoredDeployCommand extends IServerGroupCommand { }; } +export enum RollbackType { + None = 'None', + Automatic = 'Automatic', + Manual = 'Manual', +} + export interface IMonitoredDeployStrategyAdditionalFieldsProps extends IDeploymentStrategyAdditionalFieldsProps { command: IMonitoredDeployCommand; } @@ -58,7 +65,16 @@ export class AdditionalFields extends React.Component< }; private rollbackOnFailureChange = (e: React.ChangeEvent) => { - this.props.command.rollback.onFailure = e.target.checked; + this.props.command.failureActions.rollback = e.target.checked ? RollbackType.Automatic : RollbackType.None; + + if (this.props.command.failureActions.rollback === RollbackType.None) { + this.props.command.failureActions.destroyInstances = false; + } + this.forceUpdate(); + }; + + private destroyFailedAsgChange = (e: React.ChangeEvent) => { + this.props.command.failureActions.destroyInstances = e.target.checked; this.forceUpdate(); }; @@ -80,7 +96,8 @@ export class AdditionalFields extends React.Component< public render() { const { NumberList } = NgReact; const { command } = this.props; - const rollbackOnFailure = command.rollback && command.rollback.onFailure; + const rollbackOnFailure = command.failureActions && command.failureActions.rollback === RollbackType.Automatic; + const destroyFailedAsg = command.failureActions && command.failureActions.destroyInstances; return (
@@ -119,6 +136,17 @@ export class AdditionalFields extends React.Component< Rollback to previous server group if deployment fails
+
+ +