11package com .yugabyte .yw .commissioner .tasks ;
22
3+ import static com .yugabyte .yw .commissioner .tasks .subtasks .OperatorImportResource .*;
34import static play .mvc .Http .Status .BAD_REQUEST ;
45
56import com .google .inject .Inject ;
1112import com .yugabyte .yw .commissioner .tasks .subtasks .OperatorImportResource ;
1213import com .yugabyte .yw .common .PlatformServiceException ;
1314import com .yugabyte .yw .common .Util ;
15+ import com .yugabyte .yw .common .operator .StorageConfigReconciler ;
1416import com .yugabyte .yw .forms .BackupRequestParams ;
15- import com .yugabyte .yw .forms .UniverseDefinitionTaskParams .UserIntent ;
1617import com .yugabyte .yw .forms .UniverseTaskParams ;
1718import com .yugabyte .yw .models .Backup ;
1819import com .yugabyte .yw .models .Customer ;
@@ -47,7 +48,8 @@ public OperatorImportUniverse(BaseTaskDependencies baseTaskDependencies) {
4748 }
4849
4950 public static class Params extends UniverseTaskParams {
50- UUID universeUUID ;
51+ // UniverseUUID is also required, but already defined in the base class.
52+ String namespace ;
5153 }
5254
5355 @ Override
@@ -71,9 +73,10 @@ private static interface ImportResourceTaskCreator {
7173
7274 @ Override
7375 public void run () {
74- Universe universe =
75- lockAndFreezeUniverseForUpdate (
76- taskParams ().universeUUID , taskParams ().expectedUniverseVersion , null );
76+ log .info (
77+ "Running OperatorImportUniverse task with universe UUID: {}" ,
78+ taskParams ().getUniverseUUID ());
79+ Universe universe = lockAndFreezeUniverseForUpdate (taskParams ().getUniverseUUID (), -1 , null );
7780
7881 for (ImportResourceTaskCreator creator : importResourceTaskCreators ) {
7982 log .trace ("creating subtaskGroup with creator {}" , creator );
@@ -94,13 +97,17 @@ public void run() {
9497 }
9598
9699 private void createImportSecretSubtask (
97- String secretName , String secretValue , SubTaskGroup group ) {
100+ String secretName , String secretKey , String secretValue , SubTaskGroup group ) {
98101 OperatorImportResource task = createTask (OperatorImportResource .class );
99102 OperatorImportResource .Params params = new OperatorImportResource .Params ();
100103 params .secretName = secretName ;
104+ params .secretKey = secretKey ;
101105 params .secretValue = secretValue ;
102106 params .resourceType = OperatorImportResource .Params .ResourceType .SECRET ;
107+ params .namespace = taskParams ().namespace ;
108+
103109 initializeTask (group , task , params );
110+ log .trace ("initialized task for secret" );
104111 }
105112
106113 private void createImportStorageConfigSubtask (
@@ -118,24 +125,41 @@ private void createImportStorageConfigSubtask(
118125 String .format (
119126 "no storage config %s found or is not a storage config" , storageConfigUUID ));
120127 }
128+
129+ OperatorImportResource task = createTask (OperatorImportResource .class );
130+ OperatorImportResource .Params params = new OperatorImportResource .Params ();
131+ params .storageConfigUUID = storageConfigUUID ;
132+ params .resourceType = OperatorImportResource .Params .ResourceType .STORAGE_CONFIG ;
133+ params .namespace = taskParams ().namespace ;
134+
121135 // Create Secret task(s)
122136 switch (storageConfig .getName ()) {
123137 case Util .S3 :
124138 CustomerConfigStorageS3Data s3Data =
125139 (CustomerConfigStorageS3Data ) storageConfig .getDataObject ();
126140 createImportSecretSubtask (
127- "awsSecretAccessKeySecret" , s3Data .awsSecretAccessKey , secretGroup );
141+ "awsSecretAccessKeySecret" ,
142+ StorageConfigReconciler .AWS_SECRET_ACCESS_KEY_SECRET_KEY ,
143+ s3Data .awsSecretAccessKey ,
144+ secretGroup );
128145 break ;
129146 case Util .GCS :
130147 CustomerConfigStorageGCSData gcsData =
131148 (CustomerConfigStorageGCSData ) storageConfig .getDataObject ();
132149 createImportSecretSubtask (
133- "gcsCredentialsJsonSecret" , gcsData .gcsCredentialsJson , secretGroup );
150+ "gcsCredentialsJsonSecret" ,
151+ StorageConfigReconciler .GCS_CREDENTIALS_JSON_SECRET_KEY ,
152+ gcsData .gcsCredentialsJson ,
153+ secretGroup );
134154 break ;
135155 case Util .AZ :
136156 CustomerConfigStorageAzureData azData =
137157 (CustomerConfigStorageAzureData ) storageConfig .getDataObject ();
138- createImportSecretSubtask ("azureStorageSasTokenSecret" , azData .azureSasToken , secretGroup );
158+ createImportSecretSubtask (
159+ "azureStorageSasTokenSecret" ,
160+ StorageConfigReconciler .AZURE_STORAGE_SAS_TOKEN_SECRET_KEY ,
161+ azData .azureSasToken ,
162+ secretGroup );
139163 break ;
140164 case Util .NFS :
141165 // No secrets for NFS
@@ -144,11 +168,8 @@ private void createImportStorageConfigSubtask(
144168 throw new RuntimeException ("Unknown storage config type: " + storageConfig .getName ());
145169 }
146170
147- OperatorImportResource task = createTask (OperatorImportResource .class );
148- OperatorImportResource .Params params = new OperatorImportResource .Params ();
149- params .storageConfigUUID = storageConfigUUID ;
150- params .resourceType = OperatorImportResource .Params .ResourceType .STORAGE_CONFIG ;
151171 initializeTask (storageCfgGroup , task , params );
172+ log .trace ("initialized task for storage config" );
152173 }
153174
154175 private List <SubTaskGroup > createImportReleaseSubtasks (Universe universe ) {
@@ -159,7 +180,9 @@ private List<SubTaskGroup> createImportReleaseSubtasks(Universe universe) {
159180 params .releaseVersion =
160181 universe .getUniverseDetails ().getPrimaryCluster ().userIntent .ybSoftwareVersion ;
161182 params .resourceType = OperatorImportResource .Params .ResourceType .RELEASE ;
183+ params .namespace = taskParams ().namespace ;
162184 initializeTask (group , task , params );
185+ log .trace ("initialized task for release" );
163186 return List .of (group );
164187 }
165188
@@ -174,35 +197,27 @@ private List<SubTaskGroup> createImportProviderSubtasks(Universe universe) {
174197 params .providerUUID =
175198 UUID .fromString (universe .getUniverseDetails ().getPrimaryCluster ().userIntent .provider );
176199 params .resourceType = OperatorImportResource .Params .ResourceType .PROVIDER ;
200+ params .namespace = taskParams ().namespace ;
177201 initializeTask (group , task , params );
202+ log .trace ("initialized task for provider" );
178203 return List .of (group );
179204 }
180205
181206 private List <SubTaskGroup > createImportUniverseSubtasks (Universe universe ) {
182207 List <SubTaskGroup > groups = new ArrayList <>();
183- String secretName ;
184- UserIntent userIntent = universe .getUniverseDetails ().getPrimaryCluster ().userIntent ;
185- SubTaskGroup secretGroup =
186- createSubTaskGroup (UniverseImportSecretTaskName , SubTaskGroupType .OperatorImportResource );
187- if (userIntent .isYSQLAuthEnabled ()) {
188- secretName = universe .getName () + "-ysqlpassword" ;
189- createImportSecretSubtask (secretName , userIntent .ysqlPassword , secretGroup );
190- }
191- if (userIntent .enableYCQLAuth ) {
192- secretName = universe .getName () + "-ycqlpassword" ;
193- createImportSecretSubtask (secretName , userIntent .ycqlPassword , secretGroup );
194- }
195- if (secretGroup .getSubTaskCount () > 0 ) {
196- groups .add (secretGroup );
197- }
208+
209+ // Create universe params first so we can reference them when creating secrets
210+ OperatorImportResource .Params universeParams = new OperatorImportResource .Params ();
211+ universeParams .universeUUID = universe .getUniverseUUID ();
212+ universeParams .resourceType = OperatorImportResource .Params .ResourceType .UNIVERSE ;
213+ universeParams .namespace = taskParams ().namespace ;
214+
198215 SubTaskGroup group =
199216 createSubTaskGroup ("ImportUniverse" , SubTaskGroupType .OperatorImportResource );
200217 groups .add (group );
201218 OperatorImportResource task = createTask (OperatorImportResource .class );
202- OperatorImportResource .Params params = new OperatorImportResource .Params ();
203- params .universeUUID = universe .getUniverseUUID ();
204- params .resourceType = OperatorImportResource .Params .ResourceType .UNIVERSE ;
205- initializeTask (group , task , params );
219+ initializeTask (group , task , universeParams );
220+ log .trace ("initialized task for universe" );
206221 return groups ;
207222 }
208223
@@ -222,14 +237,20 @@ private List<SubTaskGroup> createImportBackupSchedulesSubtasks(Universe universe
222237 // Create tasks for migrating storage configs
223238 BackupRequestParams backupParams =
224239 Json .mapper ().convertValue (schedule .getTaskParams (), BackupRequestParams .class );
225- createImportStorageConfigSubtask (backupParams .scheduleUUID , storageCfgGroup , secretGroup );
240+ createImportStorageConfigSubtask (
241+ backupParams .storageConfigUUID , storageCfgGroup , secretGroup );
226242
227243 // Now migrate the actual schedule.
228244 OperatorImportResource task = createTask (OperatorImportResource .class );
229245 OperatorImportResource .Params params = new OperatorImportResource .Params ();
230246 params .backupScheduleUUID = schedule .getScheduleUUID ();
231247 params .resourceType = OperatorImportResource .Params .ResourceType .BACKUP_SCHEDULE ;
248+ params .namespace = taskParams ().namespace ;
249+
250+ // Add any secrets from storage configs to this backup schedule's secret map
251+ // The storage config subtask will have populated the secret map
232252 initializeTask (group , task , params );
253+ log .trace ("initialized task for backup schedule" );
233254 });
234255 return List .of (secretGroup , storageCfgGroup , group );
235256 }
@@ -254,7 +275,12 @@ private List<SubTaskGroup> createImportBackupsSubtasks(Universe universe) {
254275 OperatorImportResource .Params params = new OperatorImportResource .Params ();
255276 params .backupUUID = backup .getBackupUUID ();
256277 params .resourceType = OperatorImportResource .Params .ResourceType .BACKUP ;
278+ params .namespace = taskParams ().namespace ;
279+ params .customerUUID = customer .getUuid ();
280+ // Add any secrets from storage configs to this backup's secret map
281+ // The storage config subtask will have populated the secret map
257282 initializeTask (group , task , params );
283+ log .trace ("initialized task for backup" );
258284 });
259285 return List .of (group );
260286 }
0 commit comments