UNPKG

aws-cdk

Version:

AWS CDK CLI, the command line tool for CDK apps

88 lines 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RollbackChoice = exports.StackStatus = void 0; const client_cloudformation_1 = require("@aws-sdk/client-cloudformation"); /** * A utility class to inspect CloudFormation stack statuses. * * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html */ class StackStatus { static fromStackDescription(description) { return new StackStatus(description.StackStatus, description.StackStatusReason); } constructor(name, reason) { this.name = name; this.reason = reason; } get isCreationFailure() { return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.ROLLBACK_FAILED; } get isDeleted() { return this.name.startsWith('DELETE_'); } get isFailure() { return this.name.endsWith('FAILED'); } get isInProgress() { return this.name.endsWith('_IN_PROGRESS') && !this.isReviewInProgress; } get isReviewInProgress() { return this.name === client_cloudformation_1.StackStatus.REVIEW_IN_PROGRESS; } get isNotFound() { return this.name === 'NOT_FOUND'; } get isDeploySuccess() { return (!this.isNotFound && (this.name === client_cloudformation_1.StackStatus.CREATE_COMPLETE || this.name === client_cloudformation_1.StackStatus.UPDATE_COMPLETE || this.name === client_cloudformation_1.StackStatus.IMPORT_COMPLETE)); } get isRollbackSuccess() { return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_COMPLETE; } /** * Whether the stack is in a paused state due to `--no-rollback`. * * The possible actions here are retrying a new `--no-rollback` deployment, or initiating a rollback. */ get rollbackChoice() { switch (this.name) { case client_cloudformation_1.StackStatus.CREATE_FAILED: case client_cloudformation_1.StackStatus.UPDATE_FAILED: return RollbackChoice.START_ROLLBACK; case client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_FAILED: return RollbackChoice.CONTINUE_UPDATE_ROLLBACK; case client_cloudformation_1.StackStatus.ROLLBACK_FAILED: // Unfortunately there is no option to continue a failed rollback without // a stable target state. return RollbackChoice.ROLLBACK_FAILED; default: return RollbackChoice.NONE; } } get isRollbackable() { return [RollbackChoice.START_ROLLBACK, RollbackChoice.CONTINUE_UPDATE_ROLLBACK].includes(this.rollbackChoice); } toString() { return this.name + (this.reason ? ` (${this.reason})` : ''); } } exports.StackStatus = StackStatus; /** * Describe the current rollback options for this state */ var RollbackChoice; (function (RollbackChoice) { RollbackChoice[RollbackChoice["START_ROLLBACK"] = 0] = "START_ROLLBACK"; RollbackChoice[RollbackChoice["CONTINUE_UPDATE_ROLLBACK"] = 1] = "CONTINUE_UPDATE_ROLLBACK"; /** * A sign that stack creation AND its rollback have failed. * * There is no way to recover from this, other than recreating the stack. */ RollbackChoice[RollbackChoice["ROLLBACK_FAILED"] = 2] = "ROLLBACK_FAILED"; RollbackChoice[RollbackChoice["NONE"] = 3] = "NONE"; })(RollbackChoice || (exports.RollbackChoice = RollbackChoice = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBFQUF5RjtBQUV6Rjs7OztHQUlHO0FBQ0gsTUFBYSxXQUFXO0lBQ2YsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQWtCO1FBQ25ELE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVksRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsWUFDa0IsSUFBWSxFQUNaLE1BQWU7UUFEZixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUVqQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQztJQUNwRyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNoQixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyxlQUFlO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsZUFBZTtnQkFDMUMsSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyx3QkFBd0IsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksY0FBYztRQUNoQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLG1DQUFZLENBQUMsYUFBYSxDQUFDO1lBQ2hDLEtBQUssbUNBQVksQ0FBQyxhQUFhO2dCQUM3QixPQUFPLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDdkMsS0FBSyxtQ0FBWSxDQUFDLHNCQUFzQjtnQkFDdEMsT0FBTyxjQUFjLENBQUMsd0JBQXdCLENBQUM7WUFDakQsS0FBSyxtQ0FBWSxDQUFDLGVBQWU7Z0JBQy9CLHlFQUF5RTtnQkFDekUseUJBQXlCO2dCQUN6QixPQUFPLGNBQWMsQ0FBQyxlQUFlLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBNUVELGtDQTRFQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHVFQUFjLENBQUE7SUFDZCwyRkFBd0IsQ0FBQTtJQUN4Qjs7OztPQUlHO0lBQ0gseUVBQWUsQ0FBQTtJQUNmLG1EQUFJLENBQUE7QUFDTixDQUFDLEVBVlcsY0FBYyw4QkFBZCxjQUFjLFFBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBTdGFjaywgU3RhY2tTdGF0dXMgYXMgX1N0YWNrU3RhdHVzIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdG8gaW5zcGVjdCBDbG91ZEZvcm1hdGlvbiBzdGFjayBzdGF0dXNlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3VzaW5nLWNmbi1kZXNjcmliaW5nLXN0YWNrcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja1N0YXR1cyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0YWNrRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFN0YWNrKSB7XG4gICAgcmV0dXJuIG5ldyBTdGFja1N0YXR1cyhkZXNjcmlwdGlvbi5TdGFja1N0YXR1cyEsIGRlc2NyaXB0aW9uLlN0YWNrU3RhdHVzUmVhc29uKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHJlYXNvbj86IHN0cmluZyxcbiAgKSB7XG4gIH1cblxuICBnZXQgaXNDcmVhdGlvbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0NPTVBMRVRFIHx8IHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0ZBSUxFRDtcbiAgfVxuXG4gIGdldCBpc0RlbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZS5zdGFydHNXaXRoKCdERUxFVEVfJyk7XG4gIH1cblxuICBnZXQgaXNGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUuZW5kc1dpdGgoJ0ZBSUxFRCcpO1xuICB9XG5cbiAgZ2V0IGlzSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLmVuZHNXaXRoKCdfSU5fUFJPR1JFU1MnKSAmJiAhdGhpcy5pc1Jldmlld0luUHJvZ3Jlc3M7XG4gIH1cblxuICBnZXQgaXNSZXZpZXdJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5SRVZJRVdfSU5fUFJPR1JFU1M7XG4gIH1cblxuICBnZXQgaXNOb3RGb3VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSAnTk9UX0ZPVU5EJztcbiAgfVxuXG4gIGdldCBpc0RlcGxveVN1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmlzTm90Rm91bmQgJiZcbiAgICAgICh0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUgfHxcbiAgICAgICAgdGhpcy5uYW1lID09PSBfU3RhY2tTdGF0dXMuVVBEQVRFX0NPTVBMRVRFIHx8XG4gICAgICAgIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLklNUE9SVF9DT01QTEVURSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzUm9sbGJhY2tTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5ST0xMQkFDS19DT01QTEVURSB8fCB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfQ09NUExFVEU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RhY2sgaXMgaW4gYSBwYXVzZWQgc3RhdGUgZHVlIHRvIGAtLW5vLXJvbGxiYWNrYC5cbiAgICpcbiAgICogVGhlIHBvc3NpYmxlIGFjdGlvbnMgaGVyZSBhcmUgcmV0cnlpbmcgYSBuZXcgYC0tbm8tcm9sbGJhY2tgIGRlcGxveW1lbnQsIG9yIGluaXRpYXRpbmcgYSByb2xsYmFjay5cbiAgICovXG4gIGdldCByb2xsYmFja0Nob2ljZSgpOiBSb2xsYmFja0Nob2ljZSB7XG4gICAgc3dpdGNoICh0aGlzLm5hbWUpIHtcbiAgICAgIGNhc2UgX1N0YWNrU3RhdHVzLkNSRUFURV9GQUlMRUQ6XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuU1RBUlRfUk9MTEJBQ0s7XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuQ09OVElOVUVfVVBEQVRFX1JPTExCQUNLO1xuICAgICAgY2FzZSBfU3RhY2tTdGF0dXMuUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIG9wdGlvbiB0byBjb250aW51ZSBhIGZhaWxlZCByb2xsYmFjayB3aXRob3V0XG4gICAgICAgIC8vIGEgc3RhYmxlIHRhcmdldCBzdGF0ZS5cbiAgICAgICAgcmV0dXJuIFJvbGxiYWNrQ2hvaWNlLlJPTExCQUNLX0ZBSUxFRDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBSb2xsYmFja0Nob2ljZS5OT05FO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1JvbGxiYWNrYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1JvbGxiYWNrQ2hvaWNlLlNUQVJUX1JPTExCQUNLLCBSb2xsYmFja0Nob2ljZS5DT05USU5VRV9VUERBVEVfUk9MTEJBQ0tdLmluY2x1ZGVzKHRoaXMucm9sbGJhY2tDaG9pY2UpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSArICh0aGlzLnJlYXNvbiA/IGAgKCR7dGhpcy5yZWFzb259KWAgOiAnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZSB0aGUgY3VycmVudCByb2xsYmFjayBvcHRpb25zIGZvciB0aGlzIHN0YXRlXG4gKi9cbmV4cG9ydCBlbnVtIFJvbGxiYWNrQ2hvaWNlIHtcbiAgU1RBUlRfUk9MTEJBQ0ssXG4gIENPTlRJTlVFX1VQREFURV9ST0xMQkFDSyxcbiAgLyoqXG4gICAqIEEgc2lnbiB0aGF0IHN0YWNrIGNyZWF0aW9uIEFORCBpdHMgcm9sbGJhY2sgaGF2ZSBmYWlsZWQuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIHdheSB0byByZWNvdmVyIGZyb20gdGhpcywgb3RoZXIgdGhhbiByZWNyZWF0aW5nIHRoZSBzdGFjay5cbiAgICovXG4gIFJPTExCQUNLX0ZBSUxFRCxcbiAgTk9ORSxcbn1cbiJdfQ==