diff --git a/resource.py b/resource.py index e1486e71ede09fc01b004bddf4468e17d1bae4ca..ae80d1129ddfa3e670ee3673e76c74da90e4f513 100644 --- a/resource.py +++ b/resource.py @@ -1,9 +1,50 @@ -''' import common_utils -def get_resouce_add(): - status, output = common_utils.run_cmd("crm_resource --list-standards") - print(output) -''' +import xmltodict +from xml.dom.minidom import parseString +import xml.etree.ElementTree as ET +from collections import OrderedDict +def get_rsc_metas(rsc_class, rsc_type, rsc_provider): + # item = {'rsc_class':'ocf', 'rsc_type':'IPaddr', 'rsc_provider': 'common'} + data = {} + prop = [] + actions = [] + class_name = str(rsc_class) + type_name = str(rsc_type) + provider_name = str(rsc_provider) + # crm_resource --show-metadata ocf:heartbeat:IPaddr + status, output = common_utils.run_cmd("crm_resource --show-metadata " + class_name + ":" + type_name + ":" + provider_name + "") + etree = ET.fromstring(output)#封装 + data_name = etree.get("name", "")#找跟目录下的name + data['name'] = data_name + parameter = etree.findall("./parameters/parameter")#parameter路径 + for i in parameter: + parameters={ + "name": i.get("name", ""), + "required": i.get("required", ""), + "unique": i.get("unique", "") + } + content = i.find("content") + cnt={ + "default": content.get("default", ""), + "type": content.get("type", "") + } + parameters['content'] = cnt + parameters['shortdesc'] = i.find("shortdesc").text.replace("\n", " ") + parameters['longdesc'] = i.find("longdesc").text.replace("\n", " ") + prop.append(parameters) + for action in etree.findall("./actions/action"): + act = {} + for key, value in action.items(): + act[str(key)] = str(value) + actions.append(act) + data['version'] = etree.find('version').text + data['longdesc'] = etree.find('longdesc').text.replace("\n", " ") + data['shortdesc'] = etree.find('shortdesc').text.replace("\n", " ") + data['parameters'] = prop + data['actions'] = actions + return {'action': True, "data": data} + + diff --git a/run.py b/run.py index 20a58326bb780d89e6f19bb3e26d0dae4df83304..6c4082912f6a0c019ab72f962d98c90e6db4955a 100644 --- a/run.py +++ b/run.py @@ -76,7 +76,7 @@ def create_app(test_config=None): user_name = session.get('user_name') if user_name: return render_template('index.html') - redirect('/login') + return redirect('/login') @app.route('/login') def set_login_html(): @@ -101,11 +101,12 @@ def create_app(test_config=None): def nodes_action(node_id, action): if request.method == 'PUT': return json.dumps(node.get_nodes_action(node_id, action)) - # #获取资源创建 - # @app.route('/api/' + API_VERSION + '/haclusters/1/metas/', methods=['GET', 'POST', 'PUT']) - # def get_resource_creation(): - # if request.method == 'GET': - # return json.dumps(resource.get_resouce_add()) + #获取资源创建 + @app.route('/api/' + API_VERSION + '/haclusters/1/metas//', methods=['GET', 'POST', 'PUT']) + @app.route('/api/' + API_VERSION + '/haclusters/1/metas///', methods=['GET', 'POST', 'PUT']) + def get_rsc_meta(rsc_class, rsc_type, rsc_provider=None): + if request.method == 'GET': + return json.dumps(resource.get_rsc_metas(rsc_class, rsc_type, rsc_provider)) return app