def get_rules_list(): """ DOCSTRING : this function get all the rules then render to the page : 'admin/crush/rules_list.html'. Args : None Returns : render to the template page : 'admin/crush/rules_list.html' """ if request.method == 'GET': try: manage_crush = ManageCrush() rule_list = manage_crush.get_rules() if list_err in session: result = session["err"] session.pop("err") return render_template('admin/crush/rules_list.html', rule_list=rule_list, err=result) elif list_success in session: result = session["success"] session.pop("success") return render_template('admin/crush/rules_list.html', rule_list=rule_list, success=result) elif list_warning in session: result = session["warning"] session.pop("warning") return render_template('admin/crush/rules_list.html', rule_list=rule_list, warning=result) else: return render_template('admin/crush/rules_list.html', rule_list=rule_list) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/crush/rules_list.html') except Exception as e: session['err'] = "ui_admin_view_rule_error" result = session['err'] logger.error(e) return render_template('admin/crush/rules_list.html', err=result)
def save_bucket_tree(): if request.method == 'POST': try: bucket_tree = request.form.get("bucket") manage_crush = ManageCrush() manage_crush.save_buckets_tree(bucket_tree) session['success'] = "ui_admin_save_buckets_success" return redirect(url_for('crush_controller.get_bucket_list')) except CrushException as e: if e.id == CrushException.COMPILE or e.id == CrushException.BUCKET_SAVE: session['err'] = "ui_admin_save_buckets_fail" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) elif e.id == CrushException.BUCKET_NOT_DEFINED: session['err'] = "ui_admin_save_buckets_fail" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) elif e.id == CrushException.DUPLICATE_BUCKET_NAME: session['err'] = "ui_admin_bucket_duplicate_name" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) else: session['err'] = "ui_admin_save_buckets_fail" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list')) except Exception as e: session['err'] = "ui_admin_save_buckets_fail" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list'))
def get_buckets_types(): if request.method == 'GET': try: manage_crush = ManageCrush() buckets_types = manage_crush.get_buckets_types() return buckets_types except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" else: session['err'] = "ui_admin_ceph_general_exception" return redirect(url_for('crush_controller.get_bucket_list'), 307) except Exception as e: session['err'] = "ui_admin_error_read_crush_map" logger.error(e) return redirect(url_for('crush_controller.get_bucket_list'))
def get_selected_rule_info(rule_name): try: manage_crush = ManageCrush() rule_list = manage_crush.get_rules() selected_rule_info = rule_list[rule_name] json_data = json.dumps(selected_rule_info) return json_data except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/crush/rules_list.html') except Exception as e: session['err'] = "ui_admin_view_rule_error" result = session['err'] logger.error(e) return render_template('admin/crush/rules_list.html', err=result)
def remove_rule(rule_name): """ DOCSTRING : this function is called to delete a certain rule , then redirect to the page : 'admin/crush/rules_list.html'. Args : rule_name (string) Returns : redirect to the page : 'admin/crush/rules_list.html' """ if request.method == 'POST': try: used_flag = rule_in_use(rule_name) if used_flag: session["err"] = "ui_admin_cannot_delete_rule_in_use" return redirect(url_for('crush_controller.get_rules_list')) manage_crush = ManageCrush() manage_crush.delete_rule(rule_name) session["success"] = "ui_admin_delete_rule_success" return redirect(url_for('crush_controller.get_rules_list')) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" return redirect(url_for('crush_controller.get_rules_list')) elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" return redirect(url_for('crush_controller.get_rules_list')) session['err'] = "ui_admin_ceph_general_exception" return redirect(url_for('crush_controller.get_rules_list')) except Exception as e: session['err'] = "ui_admin_delete_rule_error" logger.error(e) return redirect(url_for('crush_controller.get_rules_list'))
def get_pool_info(pool_name): """ DOCSTRING : this function is called when opening the Edit Pool form page. Args : pool_name (string) Returns : redirect to the page : 'admin/pool/edit_pool.html' """ global result if request.method == 'GET' or request.method == 'POST': try: selected_pool_profile = ECProfile() manage_pools = ManagePools() pool_list = manage_pools.get_pools_info() for pool_info in pool_list: if pool_info.name == pool_name: selected_pool = pool_info # If the pool was "Erasure" ... get the profile : # ----------------------------------------------- if selected_pool.type == "erasure": # getting the EC Profiles List manage_ec_profiles = ManageEcProfiles() profiles_list = manage_ec_profiles.get_ec_profiles() # Dictionary of Objects for profile_name, profile_obj in profiles_list.items(): if profile_name == selected_pool.ec_profile: selected_pool_profile = profile_obj manage_crush = ManageCrush() rule_list = manage_crush.get_rules() # getting "storage_engine" from Cluster info : conf = configuration() ci = conf.get_cluster_info() storage_engine = "" storage_engine = ci.storage_engine if list_err in session: result = session["err"] session.pop("err") return render_template('admin/pool/edit_pool.html', selected_pool=selected_pool, rule_list=rule_list, selected_pool_profile=selected_pool_profile, storage_engine=storage_engine, err=result) elif list_success in session: result = session["success"] session.pop("success") return render_template('admin/pool/edit_pool.html', selected_pool=selected_pool, rule_list=rule_list, selected_pool_profile=selected_pool_profile, storage_engine=storage_engine, success=result) elif list_warning in session: result = session["warning"] session.pop("warning") return render_template('admin/pool/edit_pool.html', selected_pool=selected_pool, rule_list=rule_list, selected_pool_profile=selected_pool_profile, storage_engine=storage_engine, warning=result) else: return render_template('admin/pool/edit_pool.html', selected_pool=selected_pool, rule_list=rule_list, selected_pool_profile=selected_pool_profile, storage_engine=storage_engine) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: result = session['err'] = "ui_admin_ceph_time_out" return render_template('admin/pool/edit_pool.html', err=result) elif e.id == CephException.GENERAL_EXCEPTION: result = session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/pool/edit_pool.html', err=result) result = session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/pool/edit_pool.html', err=result) except Exception as e: result = session['err'] = "ui_admin_view_get_pool_info_error" logger.error(e) return render_template('admin/pool/edit_pool.html', err=result)
def add_pool(): """ DOCSTRING : this function is called when opening the Add Pool form page. Args : None Returns : render to the template page : 'admin/pool/add_pool.html' """ global result if request.method == 'GET' or request.method == 'POST': try: # getting the Rules List : manage_crush = ManageCrush() rule_list = manage_crush.get_rules() # getting the EC Profiles List : manage_ec_profiles = ManageEcProfiles() ec_profiles_list = manage_ec_profiles.get_ec_profiles() # Dictionary of Objects # getting "storage_engine" from Cluster info : conf = configuration() ci = conf.get_cluster_info() storage_engine = "" storage_engine = ci.storage_engine if list_err in session: result = session["err"] session.pop("err") print(ec_profiles_list) return render_template('admin/pool/add_pool.html', rule_list=rule_list, ec_profiles_list=ec_profiles_list, storage_engine=storage_engine, err=result) elif list_success in session: result = session["success"] session.pop("success") print(ec_profiles_list) return render_template('admin/pool/add_pool.html', rule_list=rule_list, ec_profiles_list=ec_profiles_list, storage_engine=storage_engine, success=result) elif list_warning in session: result = session["warning"] session.pop("warning") print(ec_profiles_list) return render_template('admin/pool/add_pool.html', rule_list=rule_list, ec_profiles_list=ec_profiles_list, storage_engine=storage_engine, warning=result) else: return render_template('admin/pool/add_pool.html', rule_list=rule_list, ec_profiles_list=ec_profiles_list, storage_engine=storage_engine) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/pool/add_pool.html') except Exception as e: session['err'] = "ui_admin_view_pool_error" logger.error(e) return render_template('admin/pool/add_pool.html')
def edit_rule(): """ DOCSTRING : this function is called at editing a specific rule , if editing operation is succeeded it renders to the template page : 'admin/crush/rules_list.html' with a success message , and if not it redirects to : 'admin/crush/edit_rule.html' with an error message ... Args : None Returns : in success , it renders to : 'admin/crush/rules_list.html' with a success message in failure , it redirects to : 'admin/crush/edit_rule.html' """ if request.method == 'POST': try: rule_name = request.form['rule_name'] rule_id = request.form['rule_id'] rule_info = request.form['rule_body'] manage_crush = ManageCrush() # rule_list = manage_crush.get_rules() manage_crush.update_rule(rule_name, rule_info) session['success'] = "ui_admin_edit_rule_success" return redirect(url_for('crush_controller.get_rules_list')) except CrushException as e: if e.id == CrushException.RULE_SAVE: session['err'] = "ui_admin_crush_edit_rule_error" return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) elif e.id == CrushException.DUPLICATE_RULE_ID: session['err'] = "ui_admin_crush_edit_duplicate_id_rule_error" return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) elif e.id == CrushException.DEVICE_TYPE_NOT_EXISTS: session['err'] = "ui_admin_crush_osd_type_edit_rule_error" return redirect( url_for('crush_controller.rule_templates_list', rule_name=rule_name, rule_info=rule_info)) session['err'] = "ui_admin_crush_general_error" logger.error(e) return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: session['err'] = "ui_admin_ceph_time_out" return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id)) except Exception as e: session['err'] = "ui_admin_edit_rule_err" logger.error(e) return redirect( url_for('crush_controller.get_rule_by_name', rule_name=rule_name, rule_id=rule_id), 307)
def get_rule_by_name(rule_name): """ DOCSTRING : this function is called when opening the Edit Rule form page. Args : rule_name (string) Returns : redirect to the page : 'admin/crush/edit_rule.html' """ if request.method == 'GET' or request.method == 'POST': try: manage_crush = ManageCrush() rule_list = manage_crush.get_rules() selected_rule_info = rule_list[rule_name] # selected_rule = {rule_name: selected_rule_info} rule_id = int(request.args.get('rule_id')) if rule_id == 0: result = "ui_admin_edit_default_rule" return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, info=result, rule_id=rule_id) if list_err in session: result = session[list_err] session.pop(list_err) return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, err=result, rule_id=rule_id) elif list_warning in session: result = session[list_warning] session.pop(list_warning) return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, warning=result, rule_id=rule_id) elif list_success in session: result = session[list_success] session.pop(list_success) return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, success=result, rule_id=rule_id) else: return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, rule_id=rule_id) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: result = session['err'] = "ui_admin_ceph_time_out" return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, err=result, rule_id=rule_id) elif e.id == CephException.GENERAL_EXCEPTION: result = session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, err=result, rule_id=rule_id) result = session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/crush/edit_rule.html', rule_name=rule_name, selected_rule_info=selected_rule_info, err=result, rule_id=rule_id)
def rule_templates_list(): """ DOCSTRING : this function is called when opening the Add Rule form page. Args : None Returns : render to the template page : 'admin/crush/add_rule.html' """ if request.method == 'GET' or request.method == 'POST': try: rule_info = request.args.get('rule_info') rules_templates = {} manage_crush = ManageCrush() rules_templates = manage_crush.get_templates() # rules_templates = {'name': 'body'} if list_err in session: result = session[list_err] session.pop(list_err) return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, err=result, rule_info=rule_info) elif list_warning in session: result = session[list_warning] session.pop(list_warning) return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, warning=result, rule_info=rule_info) elif list_success in session: result = session[list_success] session.pop(list_success) return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, success=result, rule_info=rule_info) else: return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, rule_info=rule_info) except CephException as e: if e.id == CephException.CONNECTION_TIMEOUT: result = session['err'] = "ui_admin_ceph_time_out" return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, err=result, rule_info=rule_info) elif e.id == CephException.GENERAL_EXCEPTION: session['err'] = "ui_admin_ceph_general_exception" return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, err=result, rule_info=rule_info) session['err'] = "ui_admin_ceph_general_exception" logger.error(e) return render_template('admin/crush/add_rule.html', ruleTempList=rules_templates, err=result, rule_info=rule_info)