IW4M-Admin/Master/master/resources/instance.py

45 lines
1.6 KiB
Python
Raw Normal View History

2018-04-18 16:46:53 -04:00
from flask_restful import Resource
from flask import request
from flask_jwt_extended import jwt_required
from marshmallow import ValidationError
from master.schema.instanceschema import InstanceSchema
from master import ctx
import json
2018-04-18 16:46:53 -04:00
class Instance(Resource):
def get(self, id=None):
if id is None:
schema = InstanceSchema(many=True)
instances = schema.dump(ctx.get_instances())
2018-04-18 16:46:53 -04:00
return instances
else:
try:
instance = ctx.get_instance(id)
return InstanceSchema().dump(instance)
except KeyError:
return {'message' : 'instance not found'}, 404
@jwt_required
def put(self, id):
try:
for server in request.json['servers']:
if 'ip' not in server or server['ip'] == 'localhost':
server['ip'] = request.remote_addr
2018-04-18 16:46:53 -04:00
instance = InstanceSchema().load(request.json)
except ValidationError as err:
return {'message' : err.messages }, 400
ctx.update_instance(instance)
return { 'message' : 'instance updated successfully' }, 200
2018-04-18 16:46:53 -04:00
@jwt_required
def post(self):
try:
for server in request.json['servers']:
if 'ip' not in server or server['ip'] == 'localhost':
server['ip'] = request.remote_addr
2018-04-18 16:46:53 -04:00
instance = InstanceSchema().load(request.json)
except ValidationError as err:
return {'message' : err.messages }, 400
2018-04-18 16:46:53 -04:00
ctx.add_instance(instance)
return { 'message' : 'instance added successfully' }, 200