feat: Expand workload host endpoints to include pooled and fixed resources
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import uuid
|
||||
from flask import request, jsonify
|
||||
from app import app, db, logger
|
||||
from app.models.models import WorkloadHost, Region, Label, Workload, WorkloadHostPooledResource
|
||||
from app.models.models import WorkloadHost, Region, Label, Workload, WorkloadHostPooledResource, WorkloadHostFixedResource
|
||||
from app.controller import api_bp
|
||||
import ipaddress
|
||||
|
||||
@@ -39,7 +39,37 @@ def edit_workload_host(workload_host_id):
|
||||
@api_bp.route('/workload_hosts/<workload_host_id>', methods=['GET'])
|
||||
def get_workload_host(workload_host_id):
|
||||
workload_host = WorkloadHost.query.filter_by(id=workload_host_id,deleted=0).first_or_404()
|
||||
return jsonify(workload_host.to_json())
|
||||
|
||||
# Get pooled resources
|
||||
pooled_resources = WorkloadHostPooledResource.query.filter_by(workload_host_id=workload_host_id).all()
|
||||
pooled_resources_data = []
|
||||
for resource in pooled_resources:
|
||||
pooled_resources_data.append({
|
||||
"id": str(resource.id),
|
||||
"name": resource.name,
|
||||
"resource_type": resource.resource_type,
|
||||
"total_quantity": resource.total_quantity,
|
||||
"quantity_in_use": resource.quantity_in_use,
|
||||
"quantity_available": resource.quantity_available
|
||||
})
|
||||
|
||||
# Get fixed resources
|
||||
fixed_resources = WorkloadHostFixedResource.query.filter_by(workload_host_id=workload_host_id).all()
|
||||
fixed_resources_data = []
|
||||
for resource in fixed_resources:
|
||||
fixed_resources_data.append({
|
||||
"id": str(resource.id),
|
||||
"name": resource.name,
|
||||
"resource_type": resource.resource_type,
|
||||
"quantity": resource.quantity
|
||||
})
|
||||
|
||||
# Combine host data with resources
|
||||
host_data = workload_host.to_json()
|
||||
host_data["pooled_resources"] = pooled_resources_data
|
||||
host_data["fixed_resources"] = fixed_resources_data
|
||||
|
||||
return jsonify(host_data)
|
||||
|
||||
@api_bp.route('/workload_hosts/<workload_host_id>', methods=['DELETE'])
|
||||
def delete_workload_host(workload_host_id):
|
||||
@@ -53,7 +83,43 @@ def get_workload_hosts():
|
||||
# TODO - Filter only hosts this user can see.
|
||||
# Regular users cant see this info, admins cna only see hosts in regions they have access to
|
||||
workload_hosts = WorkloadHost.query.filter_by(deleted=0).all()
|
||||
return jsonify([host.to_json() for host in workload_hosts])
|
||||
|
||||
# Prepare response with resources
|
||||
hosts_data = []
|
||||
for host in workload_hosts:
|
||||
host_data = host.to_json()
|
||||
|
||||
# Get pooled resources
|
||||
pooled_resources = WorkloadHostPooledResource.query.filter_by(workload_host_id=host.id).all()
|
||||
pooled_resources_data = []
|
||||
for resource in pooled_resources:
|
||||
pooled_resources_data.append({
|
||||
"id": str(resource.id),
|
||||
"name": resource.name,
|
||||
"resource_type": resource.resource_type,
|
||||
"total_quantity": resource.total_quantity,
|
||||
"quantity_in_use": resource.quantity_in_use,
|
||||
"quantity_available": resource.quantity_available
|
||||
})
|
||||
|
||||
# Get fixed resources
|
||||
fixed_resources = WorkloadHostFixedResource.query.filter_by(workload_host_id=host.id).all()
|
||||
fixed_resources_data = []
|
||||
for resource in fixed_resources:
|
||||
fixed_resources_data.append({
|
||||
"id": str(resource.id),
|
||||
"name": resource.name,
|
||||
"resource_type": resource.resource_type,
|
||||
"quantity": resource.quantity
|
||||
})
|
||||
|
||||
# Add resources to host data
|
||||
host_data["pooled_resources"] = pooled_resources_data
|
||||
host_data["fixed_resources"] = fixed_resources_data
|
||||
|
||||
hosts_data.append(host_data)
|
||||
|
||||
return jsonify(hosts_data)
|
||||
|
||||
@api_bp.route("/workload_hosts/<workload_host_id>/ovs_bridges", methods=['GET'])
|
||||
def get_all_ovs_bridges(workload_host_id):
|
||||
|
||||
Reference in New Issue
Block a user