]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: remove archive option from master zone creation 68486/head
authorAashish Sharma <aashish@li-e9bf2ecc-2ad7-11b2-a85c-baf05c5182ab.ibm.com>
Tue, 21 Apr 2026 06:25:16 +0000 (11:55 +0530)
committerAashish Sharma <aashish@li-e9bf2ecc-2ad7-11b2-a85c-baf05c5182ab.ibm.com>
Tue, 21 Apr 2026 06:25:16 +0000 (11:55 +0530)
Fixes: https://tracker.ceph.com/issues/76156
Signed-off-by: Aashish Sharma <aasharma@redhat.com>
src/pybind/mgr/dashboard/controllers/rgw.py
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-migrate/rgw-multisite-migrate.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-migrate/rgw-multisite-migrate.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-wizard/rgw-multisite-wizard.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-wizard/rgw-multisite-wizard.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-zone-form/rgw-multisite-zone-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts
src/pybind/mgr/dashboard/services/rgw_client.py

index f0d3d0dce4952276a93cd344a768224eb60fda19..1ccae36b3267bfa7ae60b465d38609e601693cf0 100755 (executable)
@@ -119,25 +119,25 @@ class RgwMultisiteStatus(RESTController):
     @allow_empty_body
     # pylint: disable=W0102,W0613
     def migrate(self, daemon_name=None, realm_name=None, zonegroup_name=None, zone_name=None,
-                zonegroup_endpoints=None, zone_endpoints=None, username=None, tier_type=None):
+                zonegroup_endpoints=None, zone_endpoints=None, username=None):
         multisite_instance = RgwMultisite()
         result = multisite_instance.migrate_to_multisite(realm_name, zonegroup_name,
                                                          zone_name, zonegroup_endpoints,
-                                                         zone_endpoints, username, tier_type)
+                                                         zone_endpoints, username)
         return result
 
     @RESTController.Collection(method='POST', path='/multisite-replications')
     @allow_empty_body
     # pylint: disable=W0102,W0613
     def setup_multisite_replication(self, daemon_name=None, realm_name=None, zonegroup_name=None,
-                                    zonegroup_endpoints=None, zone_name=None, tier_type=None,
+                                    zonegroup_endpoints=None, zone_name=None,
                                     zone_endpoints=None, username=None, cluster_fsid=None,
                                     replication_zone_name=None, cluster_details=None,
                                     selectedRealmName=None):
         multisite_instance = RgwMultisiteAutomation()
         result = multisite_instance.setup_multisite_replication(realm_name, zonegroup_name,
                                                                 zonegroup_endpoints, zone_name,
-                                                                tier_type, zone_endpoints,
+                                                                zone_endpoints,
                                                                 username, cluster_fsid,
                                                                 replication_zone_name,
                                                                 cluster_details,
index aa44b8a58d70685b93c23c64859a7838dad515fd..aa3f59ae9d750db6790e73bc4572003f56793ebc 100644 (file)
                 i18n>The chosen zone name is already in use.</span>
         </div>
       </div>
-      <div class="form-group row">
-        <div class="cd-col-form-offset">
-          <input type="checkbox"
-                 formControlName="archive_zone"
-                 id="archive_zone">
-          <label for="archive_zone"
-                 class="custom-control-label cds-ml-3"
-                 i18n>Archive</label>
-          <cd-help-text>
-            <span i18n>Enable archival storage to keep all object versions and protect data from deletion or corruption.</span>
-          </cd-help-text>
-        </div>
-      </div>
       <div class="form-group row">
         <label class="cd-col-form-label required"
                for="zone_endpoints"
index 5332df20db4ff0c494023fea2e11561eebdfc051..f11bc87c4589d38d9ade07aaf5162017b4bc9161 100644 (file)
@@ -81,7 +81,6 @@ export class RgwMultisiteMigrateComponent implements OnInit {
           })
         ]
       }),
-      archive_zone: new UntypedFormControl(false),
       zone_endpoints: new UntypedFormControl(null, {
         validators: [CdValidators.url, Validators.required]
       }),
@@ -128,7 +127,6 @@ export class RgwMultisiteMigrateComponent implements OnInit {
     this.zone = new RgwZone();
     this.zone.name = values['zoneName'];
     this.zone.endpoints = values['zone_endpoints'];
-    this.zone.tier_type = values['archive_zone'] ? 'archive' : '';
     this.rgwMultisiteService
       .migrate(this.realm, this.zonegroup, this.zone, values['username'])
       .subscribe(
index af96cc9bd56a54e69146cba9e6884a0d2dc4374e..6c8b6e49dd29a30db77368cd03146aa4f3a21a5d 100644 (file)
                           i18n>This zone name is already in use. Choose a unique name.</span>
                   </div>
                 </div>
-                <div class="form-group row">
-                  <div class="cd-col-form-offset">
-                    <input type="checkbox"
-                           formControlName="archive_zone"
-                           id="archive_zone">
-                    <label for="archive_zone"
-                           class="custom-control-label cds-ml-3"
-                           i18n>Archive</label>
-                    <cd-help-text>
-                      <span i18n>Enable archival storage to keep all object versions and protect data from deletion or corruption.</span>
-                    </cd-help-text>
-                  </div>
-                </div>
                 <div class="form-group row">
                   <label class="cd-col-form-label required"
                          for="zone_endpoints"
index f908df6750a78e77f44240fec12cf7bacc54990a..d2428ef1b88616a401f536ae5eb52c97bc6eadad 100644 (file)
@@ -223,7 +223,6 @@ export class RgwMultisiteWizardComponent extends BaseModal implements OnInit {
       zoneName: new UntypedFormControl('default_zone', {
         validators: [Validators.required]
       }),
-      archive_zone: new UntypedFormControl(false, {}),
       zone_endpoints: new UntypedFormControl(null, {
         validators: [Validators.required]
       }),
@@ -297,7 +296,6 @@ export class RgwMultisiteWizardComponent extends BaseModal implements OnInit {
       const zoneName = values['zoneName'];
       const zoneEndpoints = this.rgwEndpoints.value.join(',');
       const username = values['username'];
-      const tierType = values['archive_zone'] ? 'archive' : '';
       if (!this.isMultiClusterConfigured || this.stepsToSkip['Select Cluster']) {
         this.rgwMultisiteService
           .setUpMultisiteReplication(
@@ -305,11 +303,10 @@ export class RgwMultisiteWizardComponent extends BaseModal implements OnInit {
             zonegroupName,
             zonegroupEndpoints,
             zoneName,
-            tierType,
             zoneEndpoints,
             username
           )
-          .subscribe((data: object[]) => {
+          .subscribe((data: object) => {
             this.setupCompleted = true;
             this.rgwMultisiteService.setRestartGatewayMessage(false);
             this.loading = false;
@@ -331,7 +328,6 @@ export class RgwMultisiteWizardComponent extends BaseModal implements OnInit {
             zonegroupName,
             zonegroupEndpoints,
             zoneName,
-            tierType,
             zoneEndpoints,
             username,
             cluster,
index 54d117fb56380934b0ff0f1ac5c64f93c1a002ac..b7d3f0b67e973e9011758454cebaaa9787549c6d 100644 (file)
           </cd-help-text>
         </cds-checkbox>
       </div>
-      <div class="form-item">
+      <div *ngIf="multisiteZoneForm.get('master_zone')?.value === false"
+           class="form-item">
         <cds-checkbox
           id="archive_zone"
           formControlName="archive_zone"
           </cd-help-text>
         </cds-checkbox>
       </div>
-      <div class="form-item">
+      <div *ngIf="multisiteZoneForm.get('master_zone')?.value === false"
+           class="form-item">
         <cds-checkbox
           id="sync_from_all"
           formControlName="sync_from_all"
           </div>
         </cds-checkbox>
       </div>
-      <div *ngIf="multisiteZoneForm.get('sync_from_all')?.value === false"
+      <div *ngIf="multisiteZoneForm.get('sync_from_all')?.value === false || multisiteZoneForm.get('master_zone')?.value === false"
            class="form-item">
         <cds-combo-box type="multi"
                        selectionFeedback="top-after-reopen"
index 25bc6b7dc666b120f03088a480ad8e760546bd55..808362b90fb6be2aa785652ebad971edb962cea3 100644 (file)
@@ -32,8 +32,7 @@ export class RgwMultisiteService {
         zone_name: zone.name,
         zonegroup_endpoints: zonegroup.endpoints,
         zone_endpoints: zone.endpoints,
-        username: username,
-        tier_type: zone.tier_type
+        username: username
       });
       return this.http.put(`${this.uiUrl}/migrate`, null, { params: params });
     });
@@ -91,7 +90,6 @@ export class RgwMultisiteService {
     zonegroupName: string,
     zonegroupEndpoints: string,
     zoneName: string,
-    tierType: string,
     zoneEndpoints: string,
     username: string,
     cluster?: string,
@@ -104,7 +102,6 @@ export class RgwMultisiteService {
       .set('zonegroup_name', zonegroupName)
       .set('zonegroup_endpoints', zonegroupEndpoints)
       .set('zone_name', zoneName)
-      .set('tier_type', tierType)
       .set('zone_endpoints', zoneEndpoints)
       .set('username', username);
 
index 881cb0c63723d9236b369c43acb300f3811c136d..d48ba19a65c92b7a8792c56793a80f8c10e6e5a4 100755 (executable)
@@ -1332,8 +1332,8 @@ class RgwMultisiteAutomation:
 
     def setup_multisite_replication(self, realm_name: str, zonegroup_name: str,
                                     zonegroup_endpoints: str, zone_name: str,
-                                    tier_type: str, zone_endpoints: str,
-                                    username: str, cluster_fsid: Optional[str] = None,
+                                    zone_endpoints: str, username: str,
+                                    cluster_fsid: Optional[str] = None,
                                     replication_zone_name: Optional[str] = None,
                                     cluster_details: Optional[str] = None,
                                     selectedRealmName: Optional[str] = None):
@@ -1355,8 +1355,7 @@ class RgwMultisiteAutomation:
         if not selectedRealmName:
             self.create_realm_and_zonegroup(
                 realm_name, zonegroup_name, zone_name, zonegroup_ip_url, username)
-            self.create_zone_and_user(zone_name, tier_type, zonegroup_name, username,
-                                      zone_ip_url)
+            self.create_zone_and_user(zone_name, zonegroup_name, username, zone_ip_url)
             self.restart_daemons()
 
         return self.export_and_import_realm(
@@ -1391,14 +1390,13 @@ class RgwMultisiteAutomation:
             self.update_progress("Failed to create realm or zonegroup", 'fail', str(e))
             raise
 
-    def create_zone_and_user(self, zone: str, tier_type: str, zg: str, username: str,
+    def create_zone_and_user(self, zone: str, zg: str, username: str,
                              zone_url: str):
         try:
             rgw_multisite_instance = RgwMultisite()
             if rgw_multisite_instance.create_zone(zone_name=zone, zonegroup_name=zg, default=True,
                                                   master=True, endpoints=zone_url,
-                                                  access_key=None, secret_key=None,
-                                                  tier_type=tier_type):
+                                                  access_key=None, secret_key=None):
                 self.progress_done += 1
                 user_details = rgw_multisite_instance.create_system_user(username, zone)
                 keys = user_details.get('keys', [{}])[0]
@@ -1408,7 +1406,7 @@ class RgwMultisiteAutomation:
                     rgw_multisite_instance.modify_zone(
                         zone_name=zone, zonegroup_name=zg, default='true',
                         master='true', endpoints=zone_url, access_key=access_key,
-                        secret_key=secret_key, tier_type=tier_type)
+                        secret_key=secret_key)
                 else:
                     raise DashboardException("Access key or secret key is missing",
                                              component='rgw', http_status_code=500)
@@ -1772,8 +1770,7 @@ class RgwRateLimit:
 
 class RgwMultisite:
     def migrate_to_multisite(self, realm_name: str, zonegroup_name: str, zone_name: str,
-                             zonegroup_endpoints: str, zone_endpoints: str, username: str,
-                             tier_type: str):
+                             zonegroup_endpoints: str, zone_endpoints: str, username: str):
         rgw_realm_create_cmd = ['realm', 'create', '--rgw-realm', realm_name, '--default']
         try:
             exit_code, _, err = mgr.send_rgwadmin_command(rgw_realm_create_cmd, False)
@@ -1849,8 +1846,7 @@ class RgwMultisite:
                                      default='true', master='true',
                                      endpoints=zone_endpoints,
                                      access_key=keys['access_key'],
-                                     secret_key=keys['secret_key'],
-                                     tier_type=tier_type)
+                                     secret_key=keys['secret_key'])
                 else:
                     raise DashboardException(msg='Access key or secret key is missing',
                                              http_status_code=500, component='rgw')
@@ -2391,7 +2387,7 @@ class RgwMultisite:
             raise DashboardException(error, http_status_code=500, component='rgw')
 
     def create_zone(self, zone_name, zonegroup_name, default, master, endpoints, access_key,
-                    secret_key, tier_type, sync_from: Optional[str] = None,
+                    secret_key, tier_type: Optional[str] = None, sync_from: Optional[str] = None,
                     sync_from_all: Optional[str] = None):
         rgw_zone_create_cmd = ['zone', 'create']
         cmd_create_zone_options = ['--rgw-zone', zone_name]
@@ -2411,7 +2407,7 @@ class RgwMultisite:
         if secret_key is not None:
             cmd_create_zone_options.append('--secret')
             cmd_create_zone_options.append(secret_key)
-        if tier_type:
+        if tier_type is not None:
             cmd_create_zone_options.append('--tier-type')
             cmd_create_zone_options.append(tier_type)
         if sync_from is not None:
@@ -2441,8 +2437,9 @@ class RgwMultisite:
         return '', ''
 
     def modify_zone(self, zone_name: str, zonegroup_name: str, default: str, master: str,
-                    endpoints: str, access_key: str, secret_key: str, tier_type: str,
-                    sync_from: Optional[str] = None, sync_from_all: Optional[str] = None):
+                    endpoints: str, access_key: str, secret_key: str,
+                    tier_type: Optional[str] = None, sync_from: Optional[str] = None,
+                    sync_from_all: Optional[str] = None):
         rgw_zone_modify_cmd = ['zone', 'modify', '--rgw-zonegroup',
                                zonegroup_name, '--rgw-zone', zone_name]
         if endpoints: