@@ -23,56 +23,78 @@ import { renameInstance } from './commands/renameInstance'
2323import { addTag , listTags , removeTag } from './commands/tagCommands'
2424import { Uri } from 'vscode'
2525import { openUrl } from '../shared/utilities/vsCodeUtils'
26+ import { getLogger } from '../shared/logger'
2627
2728/**
28- * Activates DocumentDB components .
29+ * A utility function to automatically invoke trackChanges after a command .
2930 */
3031
32+ function withTrackChanges < T extends DBResourceNode > (
33+ command : ( node : T ) => Promise < void > ,
34+ commandName : string = 'UnnamedCommand'
35+ ) : ( node : T ) => Promise < void > {
36+ return async ( node : T ) => {
37+ const arn = node . arn || 'UnknownARN'
38+ const startTime = new Date ( ) . toISOString ( )
39+
40+ getLogger ( ) . info (
41+ `[${ startTime } ] Executing command "${ commandName } " for resource with ARN: ${ arn } . Tracking changes will be invoked post-execution.`
42+ )
43+
44+ await command ( node )
45+
46+ const endTime = new Date ( ) . toISOString ( )
47+ getLogger ( ) . info (
48+ `[${ endTime } ] Successfully executed command "${ commandName } " for resource with ARN: ${ arn } . Invoking trackChanges now.`
49+ )
50+
51+ await node . trackChangesWithWaitProcessingStatus ( )
52+ }
53+ }
54+
55+ /**
56+ * Activates DocumentDB components.
57+ */
3158export async function activate ( ctx : ExtContext ) : Promise < void > {
3259 ctx . extensionContext . subscriptions . push (
3360 Commands . register ( 'aws.docdb.createCluster' , async ( node ?: DocumentDBNode ) => {
3461 await createCluster ( node )
3562 } ) ,
3663
37- Commands . register ( 'aws.docdb.deleteCluster' , async ( node : DBClusterNode ) => {
38- await deleteCluster ( node )
39- } ) ,
64+ Commands . register ( 'aws.docdb.deleteCluster' , withTrackChanges < DBClusterNode > ( deleteCluster , 'deleteCluster' ) ) ,
4065
41- Commands . register ( 'aws.docdb.renameCluster' , async ( node : DBClusterNode ) => {
42- await renameCluster ( node )
43- } ) ,
66+ Commands . register ( 'aws.docdb.renameCluster' , withTrackChanges < DBClusterNode > ( renameCluster , 'renameCluster' ) ) ,
4467
45- Commands . register ( 'aws.docdb.startCluster' , async ( node ?: DBClusterNode ) => {
46- await startCluster ( node )
47- } ) ,
68+ Commands . register ( 'aws.docdb.startCluster' , withTrackChanges < DBClusterNode > ( startCluster , 'startCluster' ) ) ,
4869
49- Commands . register ( 'aws.docdb.stopCluster' , async ( node ?: DBClusterNode ) => {
50- await stopCluster ( node )
51- } ) ,
70+ Commands . register ( 'aws.docdb.stopCluster' , withTrackChanges < DBClusterNode > ( stopCluster , 'stopCluster' ) ) ,
5271
53- Commands . register ( 'aws.docdb.addRegion' , async ( node : DBClusterNode ) => {
54- await addRegion ( node )
55- } ) ,
72+ Commands . register ( 'aws.docdb.addRegion' , withTrackChanges < DBClusterNode > ( addRegion , 'addRegion' ) ) ,
5673
57- Commands . register ( 'aws.docdb.createInstance' , async ( node : DBClusterNode ) => {
58- await createInstance ( node )
59- } ) ,
74+ Commands . register (
75+ 'aws.docdb.createInstance' ,
76+ withTrackChanges < DBClusterNode > ( createInstance , 'createInstance' )
77+ ) ,
6078
61- Commands . register ( 'aws.docdb.deleteInstance' , async ( node : DBInstanceNode ) => {
62- await deleteInstance ( node )
63- } ) ,
79+ Commands . register (
80+ 'aws.docdb.deleteInstance' ,
81+ withTrackChanges < DBInstanceNode > ( deleteInstance , 'deleteInstance' )
82+ ) ,
6483
65- Commands . register ( 'aws.docdb.modifyInstance' , async ( node : DBInstanceNode ) => {
66- await modifyInstance ( node )
67- } ) ,
84+ Commands . register (
85+ 'aws.docdb.modifyInstance' ,
86+ withTrackChanges < DBInstanceNode > ( modifyInstance , 'modifyInstance' )
87+ ) ,
6888
69- Commands . register ( 'aws.docdb.rebootInstance' , async ( node : DBInstanceNode ) => {
70- await rebootInstance ( node )
71- } ) ,
89+ Commands . register (
90+ 'aws.docdb.rebootInstance' ,
91+ withTrackChanges < DBInstanceNode > ( rebootInstance , 'rebootInstance' )
92+ ) ,
7293
73- Commands . register ( 'aws.docdb.renameInstance' , async ( node : DBInstanceNode ) => {
74- await renameInstance ( node )
75- } ) ,
94+ Commands . register (
95+ 'aws.docdb.renameInstance' ,
96+ withTrackChanges < DBInstanceNode > ( renameInstance , 'renameInstance' )
97+ ) ,
7698
7799 Commands . register ( 'aws.docdb.listTags' , async ( node : DBResourceNode ) => {
78100 await listTags ( node )
@@ -90,7 +112,7 @@ export async function activate(ctx: ExtContext): Promise<void> {
90112 await node ?. openInBrowser ( )
91113 } ) ,
92114
93- Commands . register ( 'aws.docdb.viewDocs' , async ( node ?: DBResourceNode ) => {
115+ Commands . register ( 'aws.docdb.viewDocs' , async ( ) => {
94116 await openUrl (
95117 Uri . parse ( 'https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html' )
96118 )
0 commit comments