Consolidate many of the server api files into one
This commit is contained in:
parent
5b5e3f26f4
commit
e908c391ee
15 changed files with 81 additions and 90 deletions
|
@ -1,31 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
|
|
||||||
export type ServerPowerState = 'offline' | 'starting' | 'running' | 'stopping';
|
|
||||||
|
|
||||||
export interface ServerStats {
|
|
||||||
status: ServerPowerState;
|
|
||||||
isSuspended: boolean;
|
|
||||||
memoryUsageInBytes: number;
|
|
||||||
cpuUsagePercent: number;
|
|
||||||
diskUsageInBytes: number;
|
|
||||||
networkRxInBytes: number;
|
|
||||||
networkTxInBytes: number;
|
|
||||||
uptime: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default (server: string): Promise<ServerStats> => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
http.get(`/api/client/servers/${server}/resources`)
|
|
||||||
.then(({ data: { attributes } }) => resolve({
|
|
||||||
status: attributes.current_state,
|
|
||||||
isSuspended: attributes.is_suspended,
|
|
||||||
memoryUsageInBytes: attributes.resources.memory_bytes,
|
|
||||||
cpuUsagePercent: attributes.resources.cpu_absolute,
|
|
||||||
diskUsageInBytes: attributes.resources.disk_bytes,
|
|
||||||
networkRxInBytes: attributes.resources.network_rx_bytes,
|
|
||||||
networkTxInBytes: attributes.resources.network_tx_bytes,
|
|
||||||
uptime: attributes.resources.uptime,
|
|
||||||
}))
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,17 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
|
|
||||||
interface Response {
|
|
||||||
token: string;
|
|
||||||
socket: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default (server: string): Promise<Response> => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
http.get(`/api/client/servers/${server}/websocket`)
|
|
||||||
.then(({ data }) => resolve({
|
|
||||||
token: data.data.token,
|
|
||||||
socket: data.data.socket,
|
|
||||||
}))
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,5 +1,25 @@
|
||||||
import http from '@/api/http';
|
import http from '@/api/http';
|
||||||
import { Transformers, Server } from '@definitions/user';
|
import { Server, Transformers } from '@definitions/user';
|
||||||
|
import { ServerEggVariable } from '@/api/server/types';
|
||||||
|
import { rawDataToServerEggVariable } from '@/api/transformers';
|
||||||
|
|
||||||
|
interface TokenResponse {
|
||||||
|
token: string;
|
||||||
|
socket: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ServerPowerState = 'offline' | 'starting' | 'running' | 'stopping';
|
||||||
|
|
||||||
|
export interface ServerStats {
|
||||||
|
status: ServerPowerState;
|
||||||
|
isSuspended: boolean;
|
||||||
|
memoryUsageInBytes: number;
|
||||||
|
cpuUsagePercent: number;
|
||||||
|
diskUsageInBytes: number;
|
||||||
|
networkRxInBytes: number;
|
||||||
|
networkTxInBytes: number;
|
||||||
|
uptime: number;
|
||||||
|
}
|
||||||
|
|
||||||
const getServer = async (uuid: string): Promise<[ Server, string[] ]> => {
|
const getServer = async (uuid: string): Promise<[ Server, string[] ]> => {
|
||||||
const { data } = await http.get(`/api/client/servers/${uuid}`);
|
const { data } = await http.get(`/api/client/servers/${uuid}`);
|
||||||
|
@ -11,4 +31,55 @@ const getServer = async (uuid: string): Promise<[ Server, string[] ]> => {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
export { getServer };
|
const getWebsocketToken = async (server: string): Promise<TokenResponse> => {
|
||||||
|
const { data } = await http.get(`/api/client/servers/${server}/websocket`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
token: data.data.token,
|
||||||
|
socket: data.data.socket,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const renameServer = async (uuid: string, name: string): Promise<void> => {
|
||||||
|
await http.post(`/api/client/servers/${uuid}/settings/rename`, { name });
|
||||||
|
};
|
||||||
|
|
||||||
|
const reinstallServer = async (uuid: string): Promise<void> => {
|
||||||
|
await http.post(`/api/client/servers/${uuid}/settings/reinstall`);
|
||||||
|
};
|
||||||
|
|
||||||
|
const setSelectedDockerImage = async (uuid: string, image: string): Promise<void> => {
|
||||||
|
await http.put(`/api/client/servers/${uuid}/settings/docker-image`, { docker_image: image });
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateStartupVariable = async (uuid: string, key: string, value: string): Promise<[ ServerEggVariable, string ]> => {
|
||||||
|
const { data } = await http.put(`/api/client/servers/${uuid}/startup/variable`, { key, value });
|
||||||
|
|
||||||
|
return [ rawDataToServerEggVariable(data), data.meta.startup_command ];
|
||||||
|
};
|
||||||
|
|
||||||
|
const getServerResourceUsage = async (server: string): Promise<ServerStats> => {
|
||||||
|
const { data } = await http.get(`/api/client/servers/${server}/resources`);
|
||||||
|
const { attributes } = data;
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: attributes.current_state,
|
||||||
|
isSuspended: attributes.is_suspended,
|
||||||
|
memoryUsageInBytes: attributes.resources.memory_bytes,
|
||||||
|
cpuUsagePercent: attributes.resources.cpu_absolute,
|
||||||
|
diskUsageInBytes: attributes.resources.disk_bytes,
|
||||||
|
networkRxInBytes: attributes.resources.network_rx_bytes,
|
||||||
|
networkTxInBytes: attributes.resources.network_tx_bytes,
|
||||||
|
uptime: attributes.resources.uptime,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export {
|
||||||
|
getServer,
|
||||||
|
getWebsocketToken,
|
||||||
|
renameServer,
|
||||||
|
reinstallServer,
|
||||||
|
setSelectedDockerImage,
|
||||||
|
updateStartupVariable,
|
||||||
|
getServerResourceUsage,
|
||||||
|
};
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
|
|
||||||
export default (uuid: string): Promise<void> => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
http.post(`/api/client/servers/${uuid}/settings/reinstall`)
|
|
||||||
.then(() => resolve())
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,9 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
|
|
||||||
export default (uuid: string, name: string): Promise<void> => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
http.post(`/api/client/servers/${uuid}/settings/rename`, { name })
|
|
||||||
.then(() => resolve())
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,5 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
|
|
||||||
export default async (uuid: string, image: string): Promise<void> => {
|
|
||||||
await http.put(`/api/client/servers/${uuid}/settings/docker-image`, { docker_image: image });
|
|
||||||
};
|
|
|
@ -1,9 +0,0 @@
|
||||||
import http from '@/api/http';
|
|
||||||
import { ServerEggVariable } from '@/api/server/types';
|
|
||||||
import { rawDataToServerEggVariable } from '@/api/transformers';
|
|
||||||
|
|
||||||
export default async (uuid: string, key: string, value: string): Promise<[ ServerEggVariable, string ]> => {
|
|
||||||
const { data } = await http.put(`/api/client/servers/${uuid}/startup/variable`, { key, value });
|
|
||||||
|
|
||||||
return [ rawDataToServerEggVariable(data), data.meta.startup_command ];
|
|
||||||
};
|
|
|
@ -3,7 +3,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import { faEthernet, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
|
import { faEthernet, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Server } from '@definitions/user';
|
import { Server } from '@definitions/user';
|
||||||
import getServerResourceUsage, { ServerPowerState, ServerStats } from '@/api/server/getServerResourceUsage';
|
import { getServerResourceUsage, ServerPowerState, ServerStats } from '@/api/server';
|
||||||
import { bytesToHuman, megabytesToHuman, formatIp } from '@/helpers';
|
import { bytesToHuman, megabytesToHuman, formatIp } from '@/helpers';
|
||||||
import tw, { styled } from 'twin.macro';
|
import tw, { styled } from 'twin.macro';
|
||||||
import GreyRowBox from '@/components/elements/GreyRowBox';
|
import GreyRowBox from '@/components/elements/GreyRowBox';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { Websocket } from '@/plugins/Websocket';
|
import { Websocket } from '@/plugins/Websocket';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import getWebsocketToken from '@/api/server/getWebsocketToken';
|
import { getWebsocketToken } from '@/api/server';
|
||||||
import ContentContainer from '@/components/elements/ContentContainer';
|
import ContentContainer from '@/components/elements/ContentContainer';
|
||||||
import { CSSTransition } from 'react-transition-group';
|
import { CSSTransition } from 'react-transition-group';
|
||||||
import Spinner from '@/components/elements/Spinner';
|
import Spinner from '@/components/elements/Spinner';
|
||||||
|
|
|
@ -7,7 +7,7 @@ import FlashMessageRender from '@/components/FlashMessageRender';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import { SocketEvent, SocketRequest } from '@/components/server/events';
|
import { SocketEvent, SocketRequest } from '@/components/server/events';
|
||||||
import Field from '@/components/elements/Field';
|
import Field from '@/components/elements/Field';
|
||||||
import updateStartupVariable from '@/api/server/updateStartupVariable';
|
import { updateStartupVariable } from '@/api/server';
|
||||||
import { Form, Formik } from 'formik';
|
import { Form, Formik } from 'formik';
|
||||||
|
|
||||||
interface Values {
|
interface Values {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { ServerContext } from '@/state/server';
|
||||||
import Modal from '@/components/elements/Modal';
|
import Modal from '@/components/elements/Modal';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import setSelectedDockerImage from '@/api/server/setSelectedDockerImage';
|
import { setSelectedDockerImage } from '@/api/server';
|
||||||
import FlashMessageRender from '@/components/FlashMessageRender';
|
import FlashMessageRender from '@/components/FlashMessageRender';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import { SocketEvent, SocketRequest } from '@/components/server/events';
|
import { SocketEvent, SocketRequest } from '@/components/server/events';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
||||||
import ConfirmationModal from '@/components/elements/ConfirmationModal';
|
import ConfirmationModal from '@/components/elements/ConfirmationModal';
|
||||||
import reinstallServer from '@/api/server/reinstallServer';
|
import { reinstallServer } from '@/api/server';
|
||||||
import { Actions, useStoreActions } from 'easy-peasy';
|
import { Actions, useStoreActions } from 'easy-peasy';
|
||||||
import { ApplicationStore } from '@/state';
|
import { ApplicationStore } from '@/state';
|
||||||
import { httpErrorToHuman } from '@/api/http';
|
import { httpErrorToHuman } from '@/api/http';
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { ServerContext } from '@/state/server';
|
||||||
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
||||||
import { Form, Formik, FormikHelpers, useFormikContext } from 'formik';
|
import { Form, Formik, FormikHelpers, useFormikContext } from 'formik';
|
||||||
import { Actions, useStoreActions } from 'easy-peasy';
|
import { Actions, useStoreActions } from 'easy-peasy';
|
||||||
import renameServer from '@/api/server/renameServer';
|
import { renameServer } from '@/api/server';
|
||||||
import Field from '@/components/elements/Field';
|
import Field from '@/components/elements/Field';
|
||||||
import { object, string } from 'yup';
|
import { object, string } from 'yup';
|
||||||
import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
|
import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { useDeepCompareEffect } from '@/plugins/useDeepCompareEffect';
|
||||||
import Select from '@/components/elements/Select';
|
import Select from '@/components/elements/Select';
|
||||||
import isEqual from 'react-fast-compare';
|
import isEqual from 'react-fast-compare';
|
||||||
import Input from '@/components/elements/Input';
|
import Input from '@/components/elements/Input';
|
||||||
import setSelectedDockerImage from '@/api/server/setSelectedDockerImage';
|
import { setSelectedDockerImage } from '@/api/server';
|
||||||
import InputSpinner from '@/components/elements/InputSpinner';
|
import InputSpinner from '@/components/elements/InputSpinner';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import Input from '@/components/elements/Input';
|
||||||
import Switch from '@/components/elements/Switch';
|
import Switch from '@/components/elements/Switch';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import { debounce } from 'debounce';
|
import { debounce } from 'debounce';
|
||||||
import updateStartupVariable from '@/api/server/updateStartupVariable';
|
import { updateStartupVariable } from '@/api/server';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import FlashMessageRender from '@/components/FlashMessageRender';
|
import FlashMessageRender from '@/components/FlashMessageRender';
|
||||||
import getServerStartup from '@/api/swr/getServerStartup';
|
import getServerStartup from '@/api/swr/getServerStartup';
|
||||||
|
|
Loading…
Reference in a new issue