From 93841e392e4f3c066d3deaaaae88840f8ebe9f9e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alfonso=20Mart=C3=ADnez?= Date: Tue, 3 Mar 2020 12:34:11 +0100 Subject: [PATCH] mgr/dashboard: remove 'config-opt: read' perm. from system roles. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes: https://tracker.ceph.com/issues/44237 Signed-off-by: Alfonso Martínez (cherry picked from commit ad8dbefff848411f459d563b329c6c6af8a0dd82) Conflicts: src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.ts - pool-form.component.ts: keep original version (backport changes not applied). --- qa/tasks/mgr/dashboard/test_pool.py | 4 +++- src/pybind/mgr/dashboard/controllers/pool.py | 11 +++++++---- .../ceph/pool/pool-form/pool-form.component.spec.ts | 4 +++- .../frontend/src/app/shared/models/pool-form-info.ts | 2 ++ src/pybind/mgr/dashboard/services/access_control.py | 6 +----- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/qa/tasks/mgr/dashboard/test_pool.py b/qa/tasks/mgr/dashboard/test_pool.py index 971e560069aa0..40a1e20e12655 100644 --- a/qa/tasks/mgr/dashboard/test_pool.py +++ b/qa/tasks/mgr/dashboard/test_pool.py @@ -288,8 +288,10 @@ class PoolTest(DashboardTestCase): 'compression_algorithms': JList(six.string_types), 'compression_modes': JList(six.string_types), 'is_all_bluestore': bool, - "bluestore_compression_algorithm": six.string_types, + 'bluestore_compression_algorithm': six.string_types, 'osd_count': int, 'crush_rules_replicated': JList(JObj({}, allow_unknown=True)), 'crush_rules_erasure': JList(JObj({}, allow_unknown=True)), + 'pg_autoscale_default_mode': six.string_types, + 'pg_autoscale_modes': JList(six.string_types), })) diff --git a/src/pybind/mgr/dashboard/controllers/pool.py b/src/pybind/mgr/dashboard/controllers/pool.py index 0bc7ef2778fc9..4737b01a28b81 100644 --- a/src/pybind/mgr/dashboard/controllers/pool.py +++ b/src/pybind/mgr/dashboard/controllers/pool.py @@ -207,20 +207,23 @@ class Pool(RESTController): return all(o['osd_objectstore'] == 'bluestore' for o in mgr.get('osd_metadata').values()) - def compression_enum(conf_name): + def get_config_option_enum(conf_name): return [[v for v in o['enum_values'] if len(v) > 0] for o in mgr.get('config_options')['options'] if o['name'] == conf_name][0] + mgr_config = mgr.get('config') result = { "pool_names": [p['pool_name'] for p in self._pool_list()], "crush_rules_replicated": rules(1), "crush_rules_erasure": rules(3), "is_all_bluestore": all_bluestore(), "osd_count": len(mgr.get('osd_map')['osds']), - "bluestore_compression_algorithm": mgr.get('config')['bluestore_compression_algorithm'], - "compression_algorithms": compression_enum('bluestore_compression_algorithm'), - "compression_modes": compression_enum('bluestore_compression_mode'), + "bluestore_compression_algorithm": mgr_config['bluestore_compression_algorithm'], + "compression_algorithms": get_config_option_enum('bluestore_compression_algorithm'), + "compression_modes": get_config_option_enum('bluestore_compression_mode'), + "pg_autoscale_default_mode": mgr_config['osd_pool_default_pg_autoscale_mode'], + "pg_autoscale_modes": get_config_option_enum('osd_pool_default_pg_autoscale_mode'), } if pool_name: diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts index 2d3362b987d87..95ee1eb387b01 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts @@ -130,7 +130,9 @@ describe('PoolFormComponent', () => { compression_algorithms: ['snappy'], compression_modes: ['none', 'passive'], crush_rules_replicated: [], - crush_rules_erasure: [] + crush_rules_erasure: [], + pg_autoscale_default_mode: 'off', + pg_autoscale_modes: ['off', 'warn', 'on'] }; const ecp1 = new ErasureCodeProfile(); ecp1.name = 'ecp1'; diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/models/pool-form-info.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/models/pool-form-info.ts index 7741087b9c321..4f5b653df38d2 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/models/pool-form-info.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/models/pool-form-info.ts @@ -9,4 +9,6 @@ export class PoolFormInfo { compression_modes: string[]; crush_rules_replicated: CrushRule[]; crush_rules_erasure: CrushRule[]; + pg_autoscale_default_mode: string; + pg_autoscale_modes: string[]; } diff --git a/src/pybind/mgr/dashboard/services/access_control.py b/src/pybind/mgr/dashboard/services/access_control.py index 63bf08d20ea00..3787be62d482d 100644 --- a/src/pybind/mgr/dashboard/services/access_control.py +++ b/src/pybind/mgr/dashboard/services/access_control.py @@ -119,7 +119,6 @@ BLOCK_MGR_ROLE = Role('block-manager', 'Block Manager', { # RadosGW manager role provides all permissions for block related scopes RGW_MGR_ROLE = Role('rgw-manager', 'RGW Manager', { Scope.RGW: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], - Scope.CONFIG_OPT: [_P.READ], Scope.GRAFANA: [_P.READ], }) @@ -140,14 +139,12 @@ CLUSTER_MGR_ROLE = Role('cluster-manager', 'Cluster Manager', { # Pool manager role provides all permissions for pool related scopes POOL_MGR_ROLE = Role('pool-manager', 'Pool Manager', { Scope.POOL: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], - Scope.CONFIG_OPT: [_P.READ], Scope.GRAFANA: [_P.READ], }) -# Pool manager role provides all permissions for CephFS related scopes +# CephFS manager role provides all permissions for CephFS related scopes CEPHFS_MGR_ROLE = Role('cephfs-manager', 'CephFS Manager', { Scope.CEPHFS: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], - Scope.CONFIG_OPT: [_P.READ], Scope.GRAFANA: [_P.READ], }) @@ -155,7 +152,6 @@ GANESHA_MGR_ROLE = Role('ganesha-manager', 'NFS Ganesha Manager', { Scope.NFS_GANESHA: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], Scope.CEPHFS: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], Scope.RGW: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE], - Scope.CONFIG_OPT: [_P.READ], Scope.GRAFANA: [_P.READ], }) -- 2.39.5