diff --git a/packages/playground/src/components/node_details.vue b/packages/playground/src/components/node_details.vue index 15166c48cf..6f47332144 100644 --- a/packages/playground/src/components/node_details.vue +++ b/packages/playground/src/components/node_details.vue @@ -11,14 +11,8 @@ > - $emit('close-dialog', false)" - > - - mdi-close - + $emit('close-dialog', false)"> + mdi-close @@ -33,87 +27,37 @@ - + {{ errorMessage }} - - closeDialog(val)" - /> + + closeDialog(val)" /> - - - + + + - - + + - + - + - - - + + + @@ -143,7 +87,6 @@ import { getNode, getNodeStatusColor } from "@/utils/get_nodes"; import IPerfCard from "./node_details_cards/iperf_details_card.vue"; import NodeResourcesCharts from "./node_resources_charts.vue"; export default { - components: { NodeResourcesCharts, NodeDetailsCard, diff --git a/packages/playground/src/components/vm_deployment_table.vue b/packages/playground/src/components/vm_deployment_table.vue index a923051552..6392820da8 100644 --- a/packages/playground/src/components/vm_deployment_table.vue +++ b/packages/playground/src/components/vm_deployment_table.vue @@ -3,6 +3,7 @@ {{ errorMessage }} + Failed to load {{ count - items.length }} deployment{{ count - items.length > 1 ? "s" : "" }}. diff --git a/packages/playground/src/dashboard/components/add_ip.vue b/packages/playground/src/dashboard/components/add_ip.vue index 3c07c0993f..828be49681 100644 --- a/packages/playground/src/dashboard/components/add_ip.vue +++ b/packages/playground/src/dashboard/components/add_ip.vue @@ -6,9 +6,7 @@ - - Add Public IP to Farm - + Add Public IP to Farm - - IPs range - + IPs range @@ -98,21 +94,18 @@ Network: - + + {{ network }} - - IP Addresses: - + IP Addresses: - {{ - ip - }} + {{ ip }} @@ -124,28 +117,16 @@ - - Close - + Close - - Close - + Close - - Show IPs Range - - + Show IPs Range + Add @@ -176,7 +157,7 @@ export default { }, }, - setup(_, context) { + setup(props, context) { const gridStore = useGrid(); const IPs = ref(); const items = ref([IPType.single, IPType.range]); @@ -196,15 +177,6 @@ export default { const ipsRangeTable = ref([]); const formValidator = ref(); - watch( - [publicIP, toPublicIP, gateway], - async () => { - if (publicIP.value.length || toPublicIP.value.length || gateway.value.length) - await formValidator.value.validate(); - }, - { deep: true }, - ); - watch( type, () => { @@ -225,34 +197,32 @@ export default { return undefined; } function toIpCheck() { - if (toPublicIP.value.split("/")[1] !== publicIP.value.split("/")[1]) { + if (!publicIP.value || !toPublicIP.value) { + return; + } + + const fromParts = publicIP.value.split("/"); + const toParts = toPublicIP.value.split("/"); + + if (toParts[1] !== fromParts[1]) { return { message: "Subnet is different.", }; } if ( - parseInt(toPublicIP.value.split("/")[0].split(".")[3]) <= parseInt(publicIP.value.split("/")[0].split(".")[3]) + toParts[0].substring(0, toParts[0].lastIndexOf(".")) != fromParts[0].substring(0, fromParts[0].lastIndexOf(".")) ) { return { - message: "To IP must be bigger than From IP.", + message: "IPs are not in the same network.", }; } - - if ( - toPublicIP.value.substring(0, toPublicIP.value.lastIndexOf(".")) != - publicIP.value.substring(0, publicIP.value.lastIndexOf(".")) - ) { + if (parseInt(toParts[0].split(".")[3]) <= parseInt(fromParts[0].split(".")[3])) { return { - message: "IPs are not the same.", + message: "To IP must be bigger than From IP.", }; } - if ( - parseInt(toPublicIP.value.split("/")[0].split(".")[3]) - - parseInt(publicIP.value.split("/")[0].split(".")[3]) + - 1 > - 16 - ) { + if (parseInt(toParts[0].split(".")[3]) - parseInt(fromParts[0].split(".")[3]) + 1 > 16) { return { message: "Range must not exceed 16.", }; @@ -260,6 +230,10 @@ export default { } function gatewayCheck() { + if (!gateway.value || !publicIP.value) { + return; + } + const firstIP = publicIP?.value.split("/")[0]; const lastIP = toPublicIP?.value.split("/")[0]; let isRange = false; @@ -276,13 +250,13 @@ export default { }; } - if (firstIP === gateway.value || lastIP === gateway.value) { + if (firstIP === gateway.value || (lastIP && lastIP === gateway.value)) { return { message: "IPs cannot be the same.", }; } - if (type.value !== IPType.single) { + if (type.value !== IPType.single && lastIP) { try { const range = getIPRange(firstIP, lastIP); if (range.includes(gateway.value)) { @@ -335,6 +309,21 @@ export default { }); } + async function handleAddFarmIp() { + if (!formValidator.value) { + createCustomToast("Form validation error. Please check your inputs.", ToastType.danger); + return; + } + + const isValid = await formValidator.value.validate(); + if (!isValid) { + createCustomToast("Please fix errors before submitting.", ToastType.danger); + return; + } + + await addFarmIp(props.farmId, gateway.value); + } + async function addFarmIp(farmId: number, gw: string) { try { isAdding.value = true; @@ -403,6 +392,7 @@ export default { showRange, addIPs, + handleAddFarmIp, addFarmIp, isExistingIp, toIpCheck,
{{ errorMessage }}
Network:
{{ network }}