const express = require('express');
const router = express.Router();
const vmssService = require('../services/vmssService');
/**
* GET /api/vmss
* Lista todos os VMSS na subscription
*/
router.get('/', async (req, res) => {
try {
const vmssList = await vmssService.listAllVMSS();
res.json({
success: true,
count: vmssList.length,
data: vmssList
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* GET /api/vmss/resource-group/:resourceGroup
* Lista VMSS em um resource group específico
*/
router.get('/resource-group/:resourceGroup', async (req, res) => {
try {
const { resourceGroup } = req.params;
const vmssList = await vmssService.listVMSSByResourceGroup(resourceGroup);
res.json({
success: true,
resourceGroup,
count: vmssList.length,
data: vmssList
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* GET /api/vmss/:resourceGroup/:vmssName
* Obtém detalhes de um VMSS específico
*/
router.get('/:resourceGroup/:vmssName', async (req, res) => {
try {
const { resourceGroup, vmssName } = req.params;
const vmss = await vmssService.getVMSS(resourceGroup, vmssName);
res.json({
success: true,
data: vmss
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* GET /api/vmss/:resourceGroup/:vmssName/status
* Obtém status detalhado de um VMSS
*/
router.get('/:resourceGroup/:vmssName/status', async (req, res) => {
try {
const { resourceGroup, vmssName } = req.params;
const status = await vmssService.getVMSSStatus(resourceGroup, vmssName);
res.json({
success: true,
data: status
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* GET /api/vmss/:resourceGroup/:vmssName/instances
* Lista instâncias de um VMSS
*/
router.get('/:resourceGroup/:vmssName/instances', async (req, res) => {
try {
const { resourceGroup, vmssName } = req.params;
const instances = await vmssService.listVMSSInstances(resourceGroup, vmssName);
res.json({
success: true,
resourceGroup,
vmssName,
count: instances.length,
data: instances
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* GET /api/vmss/:resourceGroup/:vmssName/instances/:instanceId
* Obtém view de uma instância específica do VMSS
*/
router.get('/:resourceGroup/:vmssName/instances/:instanceId', async (req, res) => {
try {
const { resourceGroup, vmssName, instanceId } = req.params;
const instanceView = await vmssService.getVMSSInstanceView(
resourceGroup,
vmssName,
instanceId
);
res.json({
success: true,
data: instanceView
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
module.exports = router;