@ns.route('/config/osd_recovery_qos')
@api.header('Accept', 'application/bigtera.vs.v1+json')
class OSDRecoveryQOS(Resource):
@accept('application/json', 'application/bigtera.vs.v1+json')
@login_required()
def get(self):
try:
config = OsdRecoveryQosConfig()
res = {
'enabled': False,
'recovery_maxbw': 0
}
if config.value():
res.update(config)
return res
except:
return "get osd recovery qos failed", 500
@accept('application/json', 'application/bigtera.vs.v1+json')
@login_required()
def post(self):
qconfig = OsdRecoveryQosConfig()
config = {
'enabled': api.payload['enabled'] == 'true',
'recovery_maxbx': int(api.payload['recovery_maxbx']),
'mode': api.payload['recovery_mode']
}
if not config['enabled']:
qconfig.save()
else:
if mode not in RECOVERY_MODE.modes():
return "invalid recovery mode", 500
qconfig.update(config)
#notify_sync_recovery_qos()
return "set osd recovery qos success", 204