]> git.apps.os.sepia.ceph.com Git - ceph-ci.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@redhat.com>
Mon, 27 Mar 2023 12:12:08 +0000 (17:42 +0530)
Fixes: https://tracker.ceph.com/issues/59171
Signed-off-by: avanthakkar <avanjohn@gmail.com>
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 d58dc309ea923c100704d3a02ec668af0e291aa0..a7c9cb9ac8ef1d3430f4aad3d75a4c9ba0d826a3 100644 (file)
@@ -666,7 +666,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:
@@ -676,7 +676,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:
@@ -686,7 +686,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:
@@ -704,10 +704,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')
@@ -720,7 +720,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
@@ -731,7 +731,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:
@@ -741,7 +741,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:
@@ -765,7 +765,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
@@ -776,7 +776,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:
@@ -786,7 +786,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 a48600ff0e205aa5717298981f151a2a76dff72c..00ad59bb1e69493dbdce6476818f2aa392330f2e 100644 (file)
@@ -8321,7 +8321,6 @@ paths:
                 new_realm_name:
                   type: string
               required:
-              - default
               - new_realm_name
               type: object
       responses:
index 5b14b1abf9e84a103efbbca5fff0094956d68bde..6b073586387237e46423e9476c8e6aa74f5879d2 100644 (file)
@@ -660,28 +660,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:
@@ -689,17 +672,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]):