@@ -64,7 +64,7 @@ func verifyApplicationNameExactMatch(applicationName string, resp *wrappers.Appl
6464 return application
6565}
6666
67- func findApplicationAndUpdate (applicationName string , applicationsWrapper wrappers.ApplicationsWrapper , projectName string ) error {
67+ func findApplicationAndUpdate (applicationName string , applicationsWrapper wrappers.ApplicationsWrapper , projectName string , projectID string , featureFlagsWrapper wrappers. FeatureFlagsWrapper ) error {
6868 if applicationName == "" {
6969 logger .PrintfIfVerbose ("No application name provided. Skipping application update" )
7070 return nil
@@ -76,6 +76,15 @@ func findApplicationAndUpdate(applicationName string, applicationsWrapper wrappe
7676 if applicationResp == nil {
7777 return errors .Errorf ("%s: %s" , errorConstants .ApplicationNotFound , applicationName )
7878 }
79+
80+ directAssociationEnabled , _ := wrappers .GetSpecificFeatureFlag (featureFlagsWrapper , wrappers .DirectAssociationEnabled )
81+ if directAssociationEnabled .Status {
82+ err = associateProjectToApplication (applicationResp .ID , projectID , applicationResp .ProjectIds , applicationsWrapper )
83+ if err != nil {
84+ return err
85+ }
86+ return nil
87+ }
7988 var applicationModel wrappers.ApplicationConfiguration
8089 var newApplicationRule wrappers.Rule
8190 var applicationID string
@@ -100,6 +109,19 @@ func findApplicationAndUpdate(applicationName string, applicationsWrapper wrappe
100109
101110func updateApplication (applicationModel * wrappers.ApplicationConfiguration , applicationWrapper wrappers.ApplicationsWrapper , applicationID string ) error {
102111 errorModel , err := applicationWrapper .Update (applicationID , applicationModel )
112+ return handleApplicationUpdateResponse (errorModel , err )
113+ }
114+
115+ func associateProjectToApplication (applicationID string , projectID string , associatedProjectIds []string , applicationsWrapper wrappers.ApplicationsWrapper ) error {
116+ associatedProjectIds = append (associatedProjectIds , projectID )
117+ associateProjectsModel := & wrappers.AssociateProjectModel {
118+ ProjectIds : associatedProjectIds ,
119+ }
120+ errorModel , err := applicationsWrapper .CreateProjectAssociation (applicationID , associateProjectsModel )
121+ return handleApplicationUpdateResponse (errorModel , err )
122+ }
123+
124+ func handleApplicationUpdateResponse (errorModel * wrappers.ErrorModel , err error ) error {
103125 if errorModel != nil {
104126 err = errors .Errorf (ErrorCodeFormat , errorConstants .FailedToUpdateApplication , errorModel .Code , errorModel .Message )
105127 }
0 commit comments