Files
virt-dashboard/api/app/swagger.py
2023-09-08 19:05:37 +03:00

60 lines
2.2 KiB
Python

import logging
from flask import Flask
from safrs import SAFRSAPI
from models.common.core.contour import contour as mcc_Contour
from models.common.core.environment import environment as mcc_Environment
from models.common.core.timestamps import timestamp as mcc_Timestamp
from models.vmware.core.vcenter import vcenter as mvc_vCenter
from models.vmware.core.cluster import cluster as mvc_Cluster
from models.vmware.reports.capacity.frame import frame as mvrc_Frame
from models.vmware.reports.capacity.report import capacity as mvrc_Report
from models.vmware.reports.mmhosts.report import maintenance as mvrm_Report
from models.vmware.reports.datastores.report import datastore as mvrd_Report # noqa
from models.vmware.reports.sharedNetworks.report import sharedNetwork as mvrsn_Report # noqa
from models.nutanix.core.pelement import pelement as mnc_Cluster
from models.nutanix.core.pcentral import pcentral as mnc_Central
from models.nutanix.reports.prismElement.report import npereport as mnrpe_Report # noqa
from models.nutanix.reports.prismCentral.report import npcreport as mnrpc_Report # noqa
from models.nutanix.reports.mmhosts.report import nmreport as mnrm_Report
from models.nutanix.reports.utilization.report import nureport as mnru_Report # noqa
logger = logging.getLogger(__name__)
def create_api(
app: Flask,
host: str,
port: str,
api_prefix: str,
custom_swagger: dict = {}
) -> None:
api = SAFRSAPI(
app,
host=host,
schemes=["http", "https"],
port=port,
prefix=api_prefix,
custom_swagger=custom_swagger
)
for model in [mcc_Contour, mcc_Environment, mcc_Timestamp]:
api.expose_object(model, url_prefix="/common")
for model in [mvc_vCenter, mvc_Cluster]:
api.expose_object(model, url_prefix="/vmware")
for model in [mvrc_Report, mvrm_Report, mvrd_Report, mvrsn_Report]:
api.expose_object(model, url_prefix="/vmware/report")
api.expose_object(mvrc_Frame, url_prefix="/vmware/report/capacity")
for model in [mnc_Cluster, mnc_Central]:
api.expose_object(model, url_prefix="/nutanix")
for model in [mnrpe_Report, mnrpc_Report, mnrm_Report, mnru_Report]:
api.expose_object(model, url_prefix="/nutanix/report")