86 lines
3.1 KiB
Python
86 lines
3.1 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from flasgger.utils import swag_from
|
|
from models.service_instance import ServiceInstance
|
|
from models.service import Service
|
|
from models.user import db
|
|
|
|
service_instance_bp = Blueprint('service_instance', __name__, url_prefix='/service_instance')
|
|
|
|
|
|
@service_instance_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@swag_from('../docs/service_instance/create.yml')
|
|
def create_service_instance():
|
|
data = request.get_json()
|
|
service_id = data.get('service_id')
|
|
name = data.get('name')
|
|
description = data.get('description')
|
|
|
|
# Verifica se o serviço existe
|
|
service = Service.query.get(service_id)
|
|
if not service:
|
|
return jsonify({'error': 'Serviço não encontrado'}), 404
|
|
|
|
# Cria um novo ServiceInstance
|
|
service_instance = ServiceInstance(
|
|
service_id=service_id,
|
|
name=name,
|
|
description=description
|
|
)
|
|
|
|
# Adiciona e comita no banco de dados
|
|
db.session.add(service_instance)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'Instância de serviço criada com sucesso', 'service_instance_id': service_instance.id}), 201
|
|
|
|
@service_instance_bp.route('/', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/service_instance/get.yml')
|
|
def list_ambiente():
|
|
page = request.args.get('page', 1, type=int)
|
|
per_page = request.args.get('per_page', 10, type=int)
|
|
|
|
pagination = ServiceInstance.query.paginate(page=page, per_page=per_page, error_out=False)
|
|
service_instances = pagination.items
|
|
|
|
return jsonify({
|
|
'service_instance': [
|
|
{
|
|
'id': service_instance.id,
|
|
'name': service_instance.name,
|
|
'description': service_instance.description,
|
|
'service_id': service_instance.service_id
|
|
} for service_instance in service_instances
|
|
],
|
|
'total': pagination.total,
|
|
'page': pagination.page,
|
|
'per_page': pagination.per_page
|
|
}), 200
|
|
|
|
@service_instance_bp.route('/get-id-by-name/<string:nome>', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/service_instance/get_id_by_name.yml')
|
|
def get_service_instance_id_by_name(nome):
|
|
if not nome:
|
|
return jsonify({'error': 'Nome não fornecido'}), 400
|
|
|
|
service_instance = ServiceInstance.query.filter_by(name=nome).first()
|
|
if not service_instance:
|
|
return jsonify({'error': 'Instância de serviço não encontrada'}), 404
|
|
|
|
return jsonify({'id': service_instance.id}), 200
|
|
|
|
@service_instance_bp.route('/<int:service_instance_id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
@swag_from('../docs/service_instance/delete.yml')
|
|
def delete_service_instance(service_instance_id):
|
|
service_instance = ServiceInstance.query.get(service_instance_id)
|
|
if not service_instance:
|
|
return jsonify({'error': 'Instância de serviço não encontrada'}), 404
|
|
|
|
db.session.delete(service_instance)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'Instância de serviço excluída com sucesso'}), 200 |