from flask import Flask, jsonify, request
from flask_cors import CORS
import sys
from datetime import datetime
from index import create_vm_from_custom_image, destroy_vm_and_resources

app = Flask(__name__)
# Allow CORS on all routes, from any origin
CORS(app, resources={r"/*": {"origins": "*"}})

@app.route("/", methods=["GET"])
def index():
    return f"Python app is live under Flask! Python v{sys.version.split()[0]}", 200

@app.route("/api/health", methods=["GET"])
def health_check():
    return jsonify({
        "status": "OK",
        "timestamp": datetime.utcnow().isoformat() + "Z"
    }), 200

@app.route("/api/deploy", methods=["POST"])
def deploy_vm():
    try:
        info = create_vm_from_custom_image()
        return jsonify(info), 200
    except Exception as e:
        app.logger.exception("Deployment failed")
        return jsonify({
            "error": "Deployment failed",
            "details": str(e)
        }), 500

@app.route("/destroy", methods=["POST"])
def destroy():
    try:
        data = request.get_json()
        vm_name = data.get("vm_name")
        if not vm_name:
            return jsonify({"error": "vm_name is required"}), 400

        destroy_vm_and_resources(vm_name)
        return jsonify({"message": f"Resources for VM {vm_name} destroyed successfully."}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
