From 7e8cb7e0e1ef58d315e0cfe83e3f3e199979f908 Mon Sep 17 00:00:00 2001 From: Mark Vulfson Date: Wed, 16 Oct 2019 19:25:02 -0700 Subject: [PATCH] fix(monitored deploy): fix the rollback config to match what orca expects (#7532) Note: `Manual` type is not yet implemented in orca, hence it's not used in deck, other then the enum definition --- .../strategies/monitored/AdditionalFields.tsx | 36 ++++++++++++++++--- .../monitored/monitored.strategy.ts | 7 ++-- .../modules/core/src/help/help.contents.ts | 2 ++ 3 files changed, 39 insertions(+), 6 deletions(-) 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
+
+ +