@@ -39,7 +39,8 @@ const CATEGORIES: CATEGORY[] = ['auth', 'storage'];
3939const TEMPLATES_DIR = '.amplify/migration/templates' ;
4040const SEPARATOR = ' to ' ;
4141
42- const SOURCE_TO_DESTINATION_STACKS = [ `Gen1` , `Gen2` ] ;
42+ const GEN1 = 'Gen 1' ;
43+ const GEN2 = 'Gen 2' ;
4344const AUTH_RESOURCES_TO_REFACTOR = [
4445 CFN_AUTH_TYPE . UserPool ,
4546 CFN_AUTH_TYPE . UserPoolClient ,
@@ -247,6 +248,10 @@ class TemplateGenerator {
247248 ) ;
248249 }
249250
251+ private getStackCategoryName ( category : string ) {
252+ return ! this . isCustomResource ( category ) ? category : 'custom' ;
253+ }
254+
250255 private async processGen1Stack (
251256 category : string ,
252257 categoryTemplateGenerator : CategoryTemplateGenerator < CFN_CATEGORY_TYPE > ,
@@ -257,17 +262,19 @@ class TemplateGenerator {
257262 const { newTemplate, parameters : gen1StackParameters } = await categoryTemplateGenerator . generateGen1PreProcessTemplate ( ) ;
258263
259264 assert ( gen1StackParameters ) ;
260- updatingGen1CategoryStack = ora ( `Updating Gen1 ${ category } stack...` ) . start ( ) ;
265+ updatingGen1CategoryStack = ora ( `Updating Gen 1 ${ this . getStackCategoryName ( category ) } stack...` ) . start ( ) ;
261266
262267 const gen1StackUpdateStatus = await tryUpdateStack ( this . cfnClient , sourceCategoryStackId , gen1StackParameters , newTemplate ) ;
263268
264269 assert ( gen1StackUpdateStatus === CFNStackStatus . UPDATE_COMPLETE ) ;
265- updatingGen1CategoryStack . succeed ( `Updated Gen1 ${ category } stack successfully` ) ;
270+ updatingGen1CategoryStack . succeed ( `Updated Gen 1 ${ this . getStackCategoryName ( category ) } stack successfully` ) ;
266271
267272 return newTemplate ;
268273 } catch ( e ) {
269274 if ( this . isNoResourcesError ( e ) ) {
270- updatingGen1CategoryStack ?. succeed ( `No resources found to move in Gen1 ${ category } stack. Skipping update.` ) ;
275+ updatingGen1CategoryStack ?. succeed (
276+ `No resources found to move in Gen 1 ${ this . getStackCategoryName ( category ) } stack. Skipping update.` ,
277+ ) ;
271278 return undefined ;
272279 }
273280 throw e ;
@@ -286,12 +293,12 @@ class TemplateGenerator {
286293 try {
287294 const { newTemplate, oldTemplate, parameters } = await categoryTemplateGenerator . generateGen2ResourceRemovalTemplate ( ) ;
288295
289- const updatingGen2CategoryStack = ora ( `Updating Gen2 ${ category } stack...` ) . start ( ) ;
296+ const updatingGen2CategoryStack = ora ( `Updating Gen 2 ${ this . getStackCategoryName ( category ) } stack...` ) . start ( ) ;
290297
291298 const gen2StackUpdateStatus = await tryUpdateStack ( this . cfnClient , destinationCategoryStackId , parameters ?? [ ] , newTemplate ) ;
292299
293300 assert ( gen2StackUpdateStatus === CFNStackStatus . UPDATE_COMPLETE ) ;
294- updatingGen2CategoryStack . succeed ( `Updated Gen2 ${ category } stack successfully` ) ;
301+ updatingGen2CategoryStack . succeed ( `Updated Gen 2 ${ this . getStackCategoryName ( category ) } stack successfully` ) ;
295302
296303 return { newTemplate, oldTemplate, parameters } ;
297304 } catch ( e ) {
@@ -361,6 +368,12 @@ class TemplateGenerator {
361368 ) ;
362369 }
363370
371+ private isCustomResource ( category : string ) {
372+ return ! Object . values ( NON_CUSTOM_RESOURCE_CATEGORY )
373+ . map ( ( nonCustomCategory ) => nonCustomCategory . valueOf ( ) )
374+ . includes ( category ) ;
375+ }
376+
364377 private async generateCategoryTemplates ( isRevert = false , customResourceMap ?: ResourceMapping [ ] ) {
365378 this . initializeCategoryGenerators ( customResourceMap ) ;
366379 for ( const [ category , sourceCategoryStackId , destinationCategoryStackId , categoryTemplateGenerator ] of this
@@ -373,7 +386,7 @@ class TemplateGenerator {
373386 let destinationTemplateForRefactor : CFNTemplate | undefined ;
374387 let logicalIdMappingForRefactor : Map < string , string > | undefined ;
375388
376- if ( customResourceMap && ! Object . values ( NON_CUSTOM_RESOURCE_CATEGORY ) . includes ( category as NON_CUSTOM_RESOURCE_CATEGORY ) ) {
389+ if ( customResourceMap && this . isCustomResource ( category ) ) {
377390 newSourceTemplate = await this . processGen1Stack ( category , categoryTemplateGenerator , sourceCategoryStackId ) ;
378391 if ( ! newSourceTemplate ) continue ;
379392 const { newTemplate } = await this . processGen2Stack ( category , categoryTemplateGenerator , destinationCategoryStackId ) ;
@@ -447,7 +460,9 @@ class TemplateGenerator {
447460 assert ( newSourceTemplate ) ;
448461 assert ( newDestinationTemplate ) ;
449462
450- const refactorResources = ora ( `Moving ${ category } resources from ${ this . getSourceToDestinationMessage ( isRevert ) } stack...` ) . start ( ) ;
463+ const refactorResources = ora (
464+ `Moving ${ this . getStackCategoryName ( category ) } resources from ${ this . getSourceToDestinationMessage ( isRevert ) } stack...` ,
465+ ) . start ( ) ;
451466 const { success, failedRefactorMetadata } = await this . refactorResources (
452467 logicalIdMappingForRefactor ,
453468 sourceCategoryStackId ,
@@ -459,17 +474,21 @@ class TemplateGenerator {
459474 ) ;
460475 if ( ! success ) {
461476 refactorResources . fail (
462- `Moving ${ category } resources from ${ this . getSourceToDestinationMessage ( isRevert ) } stack failed. Reason: ${
463- failedRefactorMetadata ?. reason
464- } . Status: ${ failedRefactorMetadata ?. status } . RefactorId: ${ failedRefactorMetadata ?. stackRefactorId } .`,
477+ `Moving ${ this . getStackCategoryName ( category ) } resources from ${ this . getSourceToDestinationMessage (
478+ isRevert ,
479+ ) } stack failed. Reason: ${ failedRefactorMetadata ?. reason } . Status: ${ failedRefactorMetadata ?. status } . RefactorId: ${
480+ failedRefactorMetadata ?. stackRefactorId
481+ } .`,
465482 ) ;
466483 await pollStackForCompletionState ( this . cfnClient , destinationCategoryStackId , 30 ) ;
467484 if ( ! isRevert && oldDestinationTemplate ) {
468485 await this . rollbackGen2Stack ( category , destinationCategoryStackId , destinationStackParameters , oldDestinationTemplate ) ;
469486 }
470487 return false ;
471488 } else {
472- refactorResources . succeed ( `Moved ${ category } resources from ${ this . getSourceToDestinationMessage ( isRevert ) } stack successfully` ) ;
489+ refactorResources . succeed (
490+ `Moved ${ this . getStackCategoryName ( category ) } resources from ${ this . getSourceToDestinationMessage ( isRevert ) } stack successfully` ,
491+ ) ;
473492 }
474493 }
475494 if ( ! isRevert ) {
@@ -527,10 +546,10 @@ class TemplateGenerator {
527546 gen2StackParameters : Parameter [ ] | undefined ,
528547 oldGen2Template : CFNTemplate ,
529548 ) {
530- const rollingBackGen2Stack = ora ( `Rolling back Gen2 ${ category } stack...` ) . start ( ) ;
549+ const rollingBackGen2Stack = ora ( `Rolling back Gen 2 ${ this . getStackCategoryName ( category ) } stack...` ) . start ( ) ;
531550 const gen2StackUpdateStatus = await tryUpdateStack ( this . cfnClient , gen2CategoryStackId , gen2StackParameters ?? [ ] , oldGen2Template ) ;
532- assert ( gen2StackUpdateStatus === CFNStackStatus . UPDATE_COMPLETE , `Gen2 Stack in a failed state: ${ gen2StackUpdateStatus } .` ) ;
533- rollingBackGen2Stack . succeed ( `Rolled back Gen2 ${ category } stack successfully` ) ;
551+ assert ( gen2StackUpdateStatus === CFNStackStatus . UPDATE_COMPLETE , `Gen 2 Stack is in a failed state: ${ gen2StackUpdateStatus } .` ) ;
552+ rollingBackGen2Stack . succeed ( `Rolled back Gen 2 ${ this . getStackCategoryName ( category ) } stack successfully` ) ;
534553 }
535554
536555 private async generateRefactorTemplatesForRevert (
@@ -621,7 +640,8 @@ class TemplateGenerator {
621640 }
622641
623642 private getSourceToDestinationMessage ( revert : boolean ) {
624- return revert ? [ ...SOURCE_TO_DESTINATION_STACKS ] . reverse ( ) . join ( SEPARATOR ) : SOURCE_TO_DESTINATION_STACKS . join ( SEPARATOR ) ;
643+ const SOURCE_TO_DESTINATION_STACKS = [ GEN1 , GEN2 ] ;
644+ return revert ? SOURCE_TO_DESTINATION_STACKS . reverse ( ) . join ( SEPARATOR ) : SOURCE_TO_DESTINATION_STACKS . join ( SEPARATOR ) ;
625645 }
626646
627647 private constructRoleArn ( roleName : string ) {
0 commit comments