You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ConsulManager/flask-consul/views/consul.py

49 lines
1.7 KiB

from flask import Blueprint
from flask_restful import reqparse, Resource, Api
import sys
sys.path.append("..")
from units import token_auth,consul_manager
blueprint = Blueprint('consul',__name__)
api = Api(blueprint)
parser = reqparse.RequestParser()
parser.add_argument('service_name',type=str)
parser.add_argument('sid',type=str)
parser.add_argument('instance_dict',type=dict)
class ConsulApi(Resource):
decorators = [token_auth.auth.login_required]
def get(self, stype):
if stype == 'services':
return consul_manager.get_services()
elif stype == 'services_name':
return consul_manager.get_services_nameonly()
elif stype == 'instances':
args = parser.parse_args()
return consul_manager.get_instances(args['service_name'])
elif stype == 'hosts':
return consul_manager.get_hosts()
def post(self, stype):
if stype == 'sid':
args = parser.parse_args()
return consul_manager.add_instance(args['instance_dict'])
def put(self, stype):
if stype == 'sid':
args = parser.parse_args()
resp_del = consul_manager.del_instance(args['sid'])
resp_add = consul_manager.add_instance(args['instance_dict'])
if resp_del["code"] == 20000 and resp_add["code"] == 20000:
return {"code": 20000, "data": f"更新成功!"}
else:
return {"code": 50000, "data": f"更新失败!"}
def delete(self, stype):
if stype == 'sid':
args = parser.parse_args()
return consul_manager.del_instance(args['sid'])
api.add_resource(ConsulApi, '/api/consul/<stype>')