'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),
}))
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:
i18nProviders
} from '../../../../testing/unit-test-helper';
import { NotFoundComponent } from '../../../core/not-found/not-found.component';
-import { ConfigurationService } from '../../../shared/api/configuration.service';
import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
import { PoolService } from '../../../shared/api/pool.service';
import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
let component: PoolFormComponent;
let fixture: ComponentFixture<PoolFormComponent>;
let poolService: PoolService;
- let configurationService: ConfigurationService;
let form: CdFormGroup;
let router: Router;
let ecpService: ErasureCodeProfileService;
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';
beforeEach(() => {
setUpPoolComponent();
- configurationService = TestBed.get(ConfigurationService);
- spyOn(configurationService, 'get').and.callFake(() => [
- { default: 'off', enum_values: ['on', 'warn', 'off'], value: [] }
- ]);
poolService = TestBed.get(PoolService);
spyOn(poolService, 'getInfo').and.callFake(() => [component.info]);
ecpService = TestBed.get(ErasureCodeProfileService);
import { BsModalService } from 'ngx-bootstrap/modal';
import { forkJoin, Subscription } from 'rxjs';
-import { ConfigurationService } from '../../../shared/api/configuration.service';
import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
import { PoolService } from '../../../shared/api/pool.service';
import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
private router: Router,
private modalService: BsModalService,
private poolService: PoolService,
- private configurationService: ConfigurationService,
private authStorageService: AuthStorageService,
private formatter: FormatterService,
private bsModalService: BsModalService,
}
ngOnInit() {
- forkJoin(
- this.configurationService.get('osd_pool_default_pg_autoscale_mode'),
- this.poolService.getInfo(),
- this.ecpService.list()
- ).subscribe((data: [any, PoolFormInfo, ErasureCodeProfile[]]) => {
- const pgAutoscaleConfig = data[0];
- this.pgAutoscaleModes = pgAutoscaleConfig.enum_values;
- const defaultPgAutoscaleMode = this.configurationService.getValue(pgAutoscaleConfig, 'mon');
- this.form.silentSet('pgAutoscaleMode', defaultPgAutoscaleMode);
- this.initInfo(data[1]);
- this.initEcp(data[2]);
- if (this.editing) {
- this.initEditMode();
- } else {
- this.setAvailableApps();
+ forkJoin(this.poolService.getInfo(), this.ecpService.list()).subscribe(
+ (data: [PoolFormInfo, ErasureCodeProfile[]]) => {
+ this.pgAutoscaleModes = data[0].pg_autoscale_modes;
+ this.form.silentSet('pgAutoscaleMode', data[0].pg_autoscale_default_mode);
+ this.initInfo(data[0]);
+ this.initEcp(data[1]);
+ if (this.editing) {
+ this.initEditMode();
+ } else {
+ this.setAvailableApps();
+ }
+ this.listenToChanges();
+ this.setComplexValidators();
}
- this.listenToChanges();
- this.setComplexValidators();
- });
+ );
}
private initInfo(info: PoolFormInfo) {
compression_modes: string[];
crush_rules_replicated: CrushRule[];
crush_rules_erasure: CrushRule[];
+ pg_autoscale_default_mode: string;
+ pg_autoscale_modes: string[];
}
# 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],
})
# 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],
})
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],
})