]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
disable default check if already set to true for selected realm
authoravanthakkar <avanjohn@gmail.com>
Tue, 21 Mar 2023 13:00:13 +0000 (18:30 +0530)
committerAashish Sharma <aasharma@li-e74156cc-2f67-11b2-a85c-e98659a63c5c.ibm.com>
Thu, 10 Aug 2023 11:42:55 +0000 (17:12 +0530)
Fixes: https://tracker.ceph.com/issues/59171
Signed-off-by: avanthakkar <avanjohn@gmail.com>
(cherry picked from commit f658ac2670b8f4fcd1cb8231374123879cfa8a10)

src/pybind/mgr/dashboard/controllers/rgw.py
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-realm-form/rgw-multisite-realm-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-realm-form/rgw-multisite-realm-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-zonegroup-form/rgw-multisite-zonegroup-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-realm.service.ts
src/pybind/mgr/dashboard/openapi.yaml
src/pybind/mgr/dashboard/services/rgw_client.py

index a52b6e5bfbdcb2ed5a48f86157b580bc29f95bf1..ffb757e86d49066d9671dd61a1f1cd3a9ca2d1d2 100644 (file)
@@ -710,7 +710,7 @@ class RgwRealm(RESTController):
     # pylint: disable=W0613
     def create(self, realm_name, default, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.create_realm(realm_name, default)
             return result
         except NoRgwDaemonsException as e:
@@ -720,7 +720,7 @@ class RgwRealm(RESTController):
     # pylint: disable=W0613
     def list(self, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.list_realms()
             return result
         except NoRgwDaemonsException as e:
@@ -730,7 +730,7 @@ class RgwRealm(RESTController):
     # pylint: disable=W0613
     def get(self, realm_name, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.get_realm(realm_name)
             return result
         except NoRgwDaemonsException as e:
@@ -748,10 +748,10 @@ class RgwRealm(RESTController):
 
     @allow_empty_body
     # pylint: disable=W0613
-    def set(self, realm_name, default, new_realm_name, daemon_name=None):
+    def set(self, realm_name: str, new_realm_name: str, default: str = None, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
-            result = instance.edit_realm(realm_name, default, new_realm_name)
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
+            result = instance.edit_realm(realm_name, new_realm_name, default)
             return result
         except NoRgwDaemonsException as e:
             raise DashboardException(e, http_status_code=404, component='rgw')
@@ -764,7 +764,7 @@ class RgwZonegroup(RESTController):
     def create(self, realm_name, zonegroup_name, default=None, master=None,
                zonegroup_endpoints=None, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.create_zonegroup(realm_name, zonegroup_name, default,
                                                master, zonegroup_endpoints)
             return result
@@ -775,7 +775,7 @@ class RgwZonegroup(RESTController):
     # pylint: disable=W0613
     def list(self, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.list_zonegroups()
             return result
         except NoRgwDaemonsException as e:
@@ -785,7 +785,7 @@ class RgwZonegroup(RESTController):
     # pylint: disable=W0613
     def get(self, zonegroup_name, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.get_zonegroup(zonegroup_name)
             return result
         except NoRgwDaemonsException as e:
@@ -809,7 +809,7 @@ class RgwZone(RESTController):
     def create(self, zone_name, zonegroup_name=None, default=False, master=False,
                zone_endpoints=None, user=None, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.create_zone(zone_name, zonegroup_name, default,
                                           master, zone_endpoints, user)
             return result
@@ -820,7 +820,7 @@ class RgwZone(RESTController):
     # pylint: disable=W0613
     def list(self, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.list_zones()
             return result
         except NoRgwDaemonsException as e:
@@ -830,7 +830,7 @@ class RgwZone(RESTController):
     # pylint: disable=W0613
     def get(self, zone_name, daemon_name=None):
         try:
-            instance = RgwClient.admin_instance()
+            instance = RgwClient.admin_instance(daemon_name=daemon_name)
             result = instance.get_zone(zone_name)
             return result
         except NoRgwDaemonsException as e:
index a3f95d94979c597aa19d7b443d7e31731a31d1ab..46e732659c18d1ad13051c724e7071822fcd1384 100644 (file)
@@ -34,6 +34,9 @@
             <label class="form-check-label"
                    for="default_realm"
                    i18n>Default</label>
+            <cd-helper *ngIf="multisiteRealmForm.get('default_realm').disabled">
+              <span i18n>You cannot unset the default flag. Please create another realm and set it as default.</span>
+            </cd-helper>
           </div>
         </div>
       </div>
index 0d7d4e732324fe109eda173486f8927d8ffa20ba..b3d000c94fbde30c324c9b14fccc45faff65d61b 100644 (file)
@@ -67,6 +67,9 @@ export class RgwMultisiteRealmFormComponent implements OnInit {
     if (this.action === 'edit') {
       this.multisiteRealmForm.get('realmName').setValue(this.info.data.name);
       this.multisiteRealmForm.get('default_realm').setValue(this.info.data.is_default);
+      if (this.info.data.is_default) {
+        this.multisiteRealmForm.get('default_realm').disable();
+      }
     }
   }
 
index 3a701a1bc0ebf20b7afbac2f01429e76bb89b773..c36c636ce305bc4f990075e61649f7ac0012247e 100644 (file)
@@ -93,7 +93,11 @@ export class RgwMultisiteZonegroupFormComponent implements OnInit {
         ? this.multisiteInfo[1]['zonegroups']
         : [];
     this.zonegroupList.forEach((zgp: any) => {
-      if (zgp.is_master === true && !_.isEmpty(zgp.realm_id)) {
+      if (
+        zgp.is_master === true &&
+        !_.isEmpty(zgp.realm_id) &&
+        zgp.realm_id === this.defaultsInfo['defaultRealmName']
+      ) {
         this.isMaster = true;
       }
     });
index 4c9c80c83f4eaeba2cc09c5038cbcc738f1d23a5..bacdedc19dc58eb29bd313b0fe4538bc3d29b933 100644 (file)
@@ -24,13 +24,13 @@ export class RgwRealmService {
   }
 
   update(realm: RgwRealm, defaultRealm: boolean, newRealmName: string) {
-    return this.rgwDaemonService.request((params: HttpParams) => {
-      params = params.appendAll({
+    return this.rgwDaemonService.request((requestBody: any) => {
+      requestBody = {
         realm_name: realm.name,
         default: defaultRealm,
         new_realm_name: newRealmName
-      });
-      return this.http.put(`${this.url}/${realm.name}`, null, { params: params });
+      };
+      return this.http.put(`${this.url}/${realm.name}`, requestBody);
     });
   }
 
index 681bf03b95db6a5b9d667dc7a308f2331a78a770..1f79dd126705673f7d6235a82a03574d944038f7 100644 (file)
@@ -8549,22 +8549,14 @@ paths:
           application/json:
             schema:
               properties:
-<<<<<<< HEAD
-                default:
-                  default: ''
-=======
                 daemon_name:
                   type: string
                 default:
->>>>>>> e8048004324 (mgr/dashboard: edit rgw-multisite)
                   type: string
                 new_realm_name:
                   type: string
               required:
-<<<<<<< HEAD
-=======
               - default
->>>>>>> e8048004324 (mgr/dashboard: edit rgw-multisite)
               - new_realm_name
               type: object
       responses:
index 1fd66ef2be3d0006e469568117132a3772f63045..829a0f5c1e380afe0ce0d9a2d97fa0cebeaf7bda 100644 (file)
@@ -661,28 +661,11 @@ class RgwClient(RestClient):
         except SubprocessError as error:
             raise DashboardException(error, http_status_code=500, component='rgw')
 
-    def edit_realm(self, realm_name: str, default: bool, new_realm_name: str):
+    def edit_realm(self, realm_name: str, new_realm_name: str, default: str = None):
         rgw_realm_edit_cmd = []
-        cmd_edit_realm_options = []
-        if new_realm_name == realm_name:
-            if str_to_bool(default):
-                rgw_realm_edit_cmd = ['realm', 'default']
-                cmd_edit_realm_options = ['--rgw-realm', realm_name]
-                rgw_realm_edit_cmd += cmd_edit_realm_options
-                try:
-                    exit_code, _, err = mgr.send_rgwadmin_command(rgw_realm_edit_cmd)
-                    if exit_code > 0:
-                        raise DashboardException(e=err, msg='Unable to set {} as default realm'.format(realm_name),  # noqa E501  #pylint: disable=line-too-long
-                                                 http_status_code=500, component='rgw')
-                except SubprocessError as error:
-                    raise DashboardException(error, http_status_code=500, component='rgw')
-            else:
-                raise DashboardException(msg='The realm already exists',
-                                         http_status_code=400, component='rgw')
-        else:
-            rgw_realm_edit_cmd = ['realm', 'rename']
-            cmd_edit_realm_options = ['--rgw-realm', realm_name, '--realm-new-name', new_realm_name]
-            rgw_realm_edit_cmd += cmd_edit_realm_options
+        if new_realm_name != realm_name:
+            rgw_realm_edit_cmd = ['realm', 'rename', '--rgw-realm',
+                                  realm_name, '--realm-new-name', new_realm_name]
             try:
                 exit_code, _, err = mgr.send_rgwadmin_command(rgw_realm_edit_cmd, False)
                 if exit_code > 0:
@@ -690,17 +673,15 @@ class RgwClient(RestClient):
                                              http_status_code=500, component='rgw')
             except SubprocessError as error:
                 raise DashboardException(error, http_status_code=500, component='rgw')
-            if str_to_bool(default):
-                rgw_realm_edit_cmd = ['realm', 'default']
-                cmd_edit_realm_options = ['--rgw-realm', new_realm_name]
-                rgw_realm_edit_cmd += cmd_edit_realm_options
-                try:
-                    exit_code, _, _ = mgr.send_rgwadmin_command(rgw_realm_edit_cmd, False)
-                    if exit_code > 0:
-                        raise DashboardException(msg='Unable to set {} as default realm'.format(new_realm_name),  # noqa E501  #pylint: disable=line-too-long
-                                                 http_status_code=500, component='rgw')
-                except SubprocessError as error:
-                    raise DashboardException(error, http_status_code=500, component='rgw')
+        if default and str_to_bool(default):
+            rgw_realm_edit_cmd = ['realm', 'default', '--rgw-realm', new_realm_name]
+            try:
+                exit_code, _, _ = mgr.send_rgwadmin_command(rgw_realm_edit_cmd, False)
+                if exit_code > 0:
+                    raise DashboardException(msg='Unable to set {} as default realm'.format(new_realm_name),  # noqa E501  #pylint: disable=line-too-long
+                                             http_status_code=500, component='rgw')
+            except SubprocessError as error:
+                raise DashboardException(error, http_status_code=500, component='rgw')
 
     def create_zonegroup(self, realm_name: str, zonegroup_name: str,
                          default: bool, master: bool, endpoints: List[str]):