@@ -42,6 +42,11 @@ func runSetup() {
42
42
log .Fatalf ("Error: " + err .Error ())
43
43
}
44
44
}
45
+
46
+ err := setRunTriggers (pFlags )
47
+ if err != nil {
48
+ log .Fatalf ("Error: %s" , err )
49
+ }
45
50
}
46
51
47
52
// createSecondaryWorkspaces creates new secondary workspaces by cloning the corresponding primary workspace
@@ -459,3 +464,61 @@ func getWorkspaceID(org, workspaceName string) (string, error) {
459
464
}
460
465
return data .Data .ID , nil
461
466
}
467
+
468
+ func setRunTriggers (pFlags PersistentFlags ) error {
469
+ fmt .Println ("\n Setting workspace run triggers ..." )
470
+
471
+ // map of workspaces (key) and source workspaces (value) for run triggers to be created
472
+ runTriggers := map [string ]string {
473
+ databaseSecondaryWorkspace (pFlags ): clusterSecondaryWorkspace (pFlags ),
474
+ emailSecondaryWorkspace (pFlags ): databaseSecondaryWorkspace (pFlags ),
475
+ brokerSecondaryWorkspace (pFlags ): emailSecondaryWorkspace (pFlags ),
476
+ pwSecondaryWorkspace (pFlags ): brokerSecondaryWorkspace (pFlags ),
477
+ sspSecondaryWorkspace (pFlags ): pwSecondaryWorkspace (pFlags ),
478
+ syncSecondaryWorkspace (pFlags ): sspSecondaryWorkspace (pFlags ),
479
+ }
480
+
481
+ for workspace , source := range runTriggers {
482
+ if err := createRunTrigger (pFlags , workspace , source ); err != nil {
483
+ return fmt .Errorf ("failed to set run trigger from %s to %s: %w" , source , workspace , err )
484
+ }
485
+ }
486
+ return nil
487
+ }
488
+
489
+ func createRunTrigger (pFlags PersistentFlags , workspaceName , sourceName string ) error {
490
+ workspaceID , err := getWorkspaceID (pFlags .org , workspaceName )
491
+ if err != nil {
492
+ return fmt .Errorf ("failed to get workspace ID for run trigger: %w" , err )
493
+ }
494
+
495
+ sourceID , err := getWorkspaceID (pFlags .org , sourceName )
496
+ if err != nil {
497
+ return fmt .Errorf ("failed to get source workspace ID for run trigger: %w" , err )
498
+ }
499
+
500
+ t , err := lib .FindRunTrigger (lib.FindRunTriggerConfig {
501
+ WorkspaceID : workspaceID ,
502
+ SourceWorkspaceID : sourceID ,
503
+ })
504
+ if err != nil {
505
+ return fmt .Errorf ("failed to get run triggers for workspace %s: %w" , workspaceName , err )
506
+ }
507
+ if t != nil {
508
+ fmt .Printf ("Run trigger %s -> %s is already set\n " , sourceName , workspaceName )
509
+ return nil
510
+ }
511
+
512
+ if pFlags .readOnlyMode {
513
+ fmt .Printf ("(Read-only Mode) Run trigger %s -> %s would be set\n " , sourceName , workspaceName )
514
+ return nil
515
+ }
516
+
517
+ if err := lib .CreateRunTrigger (lib.RunTriggerConfig {
518
+ WorkspaceID : workspaceID ,
519
+ SourceWorkspaceID : sourceID ,
520
+ }); err != nil {
521
+ return fmt .Errorf ("create run trigger API error: %w" , err )
522
+ }
523
+ return nil
524
+ }
0 commit comments