summaryrefslogtreecommitdiff
path: root/frontend/src/api/routes
diff options
context:
space:
mode:
authorGeorgios Andreadis <info@gandreadis.com>2020-06-29 15:47:09 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 16:08:41 +0200
commit90fae26aa4bd0e0eb3272ff6e6524060e9004fbb (patch)
treebf6943882f5fa5f3114c01fc571503c79ee1056d /frontend/src/api/routes
parent7032a007d4431f5a0c4c5e2d3f3bd20462d49950 (diff)
Prepare frontend repository for monorepo
This change prepares the frontend Git repository for the monorepo residing at https://github.com/atlarge-research.com/opendc. To accomodate for this, we move all files into a frontend subdirectory.
Diffstat (limited to 'frontend/src/api/routes')
-rw-r--r--frontend/src/api/routes/datacenters.js26
-rw-r--r--frontend/src/api/routes/experiments.js33
-rw-r--r--frontend/src/api/routes/jobs.js5
-rw-r--r--frontend/src/api/routes/paths.js30
-rw-r--r--frontend/src/api/routes/room-types.js9
-rw-r--r--frontend/src/api/routes/rooms.js46
-rw-r--r--frontend/src/api/routes/schedulers.js5
-rw-r--r--frontend/src/api/routes/sections.js5
-rw-r--r--frontend/src/api/routes/simulations.js70
-rw-r--r--frontend/src/api/routes/specifications.js57
-rw-r--r--frontend/src/api/routes/tiles.js146
-rw-r--r--frontend/src/api/routes/token-signin.js7
-rw-r--r--frontend/src/api/routes/traces.js9
-rw-r--r--frontend/src/api/routes/users.js71
-rw-r--r--frontend/src/api/routes/util.js37
15 files changed, 556 insertions, 0 deletions
diff --git a/frontend/src/api/routes/datacenters.js b/frontend/src/api/routes/datacenters.js
new file mode 100644
index 00000000..20cf4935
--- /dev/null
+++ b/frontend/src/api/routes/datacenters.js
@@ -0,0 +1,26 @@
+import { sendRequest } from "../index";
+import { getById } from "./util";
+
+export function getDatacenter(datacenterId) {
+ return getById("/datacenters/{datacenterId}", { datacenterId });
+}
+
+export function getRoomsOfDatacenter(datacenterId) {
+ return getById("/datacenters/{datacenterId}/rooms", { datacenterId });
+}
+
+export function addRoomToDatacenter(room) {
+ return sendRequest({
+ path: "/datacenters/{datacenterId}/rooms",
+ method: "POST",
+ parameters: {
+ body: {
+ room
+ },
+ path: {
+ datacenterId: room.datacenterId
+ },
+ query: {}
+ }
+ });
+}
diff --git a/frontend/src/api/routes/experiments.js b/frontend/src/api/routes/experiments.js
new file mode 100644
index 00000000..f61698c5
--- /dev/null
+++ b/frontend/src/api/routes/experiments.js
@@ -0,0 +1,33 @@
+import { deleteById, getById } from "./util";
+
+export function getExperiment(experimentId) {
+ return getById("/experiments/{experimentId}", { experimentId });
+}
+
+export function deleteExperiment(experimentId) {
+ return deleteById("/experiments/{experimentId}", { experimentId });
+}
+
+export function getLastSimulatedTick(experimentId) {
+ return getById("/experiments/{experimentId}/last-simulated-tick", {
+ experimentId
+ });
+}
+
+export function getAllMachineStates(experimentId) {
+ return getById("/experiments/{experimentId}/machine-states", {
+ experimentId
+ });
+}
+
+export function getAllRackStates(experimentId) {
+ return getById("/experiments/{experimentId}/rack-states", { experimentId });
+}
+
+export function getAllRoomStates(experimentId) {
+ return getById("/experiments/{experimentId}/room-states", { experimentId });
+}
+
+export function getAllTaskStates(experimentId) {
+ return getById("/experiments/{experimentId}/task-states", { experimentId });
+}
diff --git a/frontend/src/api/routes/jobs.js b/frontend/src/api/routes/jobs.js
new file mode 100644
index 00000000..355acc32
--- /dev/null
+++ b/frontend/src/api/routes/jobs.js
@@ -0,0 +1,5 @@
+import { getById } from "./util";
+
+export function getTasksOfJob(jobId) {
+ return getById("/jobs/{jobId}/tasks", { jobId });
+}
diff --git a/frontend/src/api/routes/paths.js b/frontend/src/api/routes/paths.js
new file mode 100644
index 00000000..78ef7d6e
--- /dev/null
+++ b/frontend/src/api/routes/paths.js
@@ -0,0 +1,30 @@
+import { sendRequest } from "../index";
+import { getById } from "./util";
+
+export function getPath(pathId) {
+ return getById("/paths/{pathId}", { pathId });
+}
+
+export function getBranchesOfPath(pathId) {
+ return getById("/paths/{pathId}/branches", { pathId });
+}
+
+export function branchFromPath(pathId, section) {
+ return sendRequest({
+ path: "/paths/{pathId}/branches",
+ method: "POST",
+ parameters: {
+ body: {
+ section
+ },
+ path: {
+ pathId
+ },
+ query: {}
+ }
+ });
+}
+
+export function getSectionsOfPath(pathId) {
+ return getById("/paths/{pathId}/sections", { pathId });
+}
diff --git a/frontend/src/api/routes/room-types.js b/frontend/src/api/routes/room-types.js
new file mode 100644
index 00000000..8a3eac58
--- /dev/null
+++ b/frontend/src/api/routes/room-types.js
@@ -0,0 +1,9 @@
+import { getAll, getById } from "./util";
+
+export function getAvailableRoomTypes() {
+ return getAll("/room-types");
+}
+
+export function getAllowedObjectsOfRoomType(name) {
+ return getById("/room-types/{name}/allowed-objects", { name });
+}
diff --git a/frontend/src/api/routes/rooms.js b/frontend/src/api/routes/rooms.js
new file mode 100644
index 00000000..56395d7f
--- /dev/null
+++ b/frontend/src/api/routes/rooms.js
@@ -0,0 +1,46 @@
+import { sendRequest } from "../index";
+import { deleteById, getById } from "./util";
+
+export function getRoom(roomId) {
+ return getById("/rooms/{roomId}", { roomId });
+}
+
+export function updateRoom(room) {
+ return sendRequest({
+ path: "/rooms/{roomId}",
+ method: "PUT",
+ parameters: {
+ body: {
+ room
+ },
+ path: {
+ roomId: room.id
+ },
+ query: {}
+ }
+ });
+}
+
+export function deleteRoom(roomId) {
+ return deleteById("/rooms/{roomId}", { roomId });
+}
+
+export function getTilesOfRoom(roomId) {
+ return getById("/rooms/{roomId}/tiles", { roomId });
+}
+
+export function addTileToRoom(tile) {
+ return sendRequest({
+ path: "/rooms/{roomId}/tiles",
+ method: "POST",
+ parameters: {
+ body: {
+ tile
+ },
+ path: {
+ roomId: tile.roomId
+ },
+ query: {}
+ }
+ });
+}
diff --git a/frontend/src/api/routes/schedulers.js b/frontend/src/api/routes/schedulers.js
new file mode 100644
index 00000000..ea360967
--- /dev/null
+++ b/frontend/src/api/routes/schedulers.js
@@ -0,0 +1,5 @@
+import { getAll } from "./util";
+
+export function getAllSchedulers() {
+ return getAll("/schedulers");
+}
diff --git a/frontend/src/api/routes/sections.js b/frontend/src/api/routes/sections.js
new file mode 100644
index 00000000..5e1a077d
--- /dev/null
+++ b/frontend/src/api/routes/sections.js
@@ -0,0 +1,5 @@
+import { getById } from "./util";
+
+export function getSection(sectionId) {
+ return getById("/sections/{sectionId}", { sectionId });
+}
diff --git a/frontend/src/api/routes/simulations.js b/frontend/src/api/routes/simulations.js
new file mode 100644
index 00000000..dcb9ac5f
--- /dev/null
+++ b/frontend/src/api/routes/simulations.js
@@ -0,0 +1,70 @@
+import { sendRequest } from "../index";
+import { deleteById, getById } from "./util";
+
+export function getSimulation(simulationId) {
+ return getById("/simulations/{simulationId}", { simulationId });
+}
+
+export function addSimulation(simulation) {
+ return sendRequest({
+ path: "/simulations",
+ method: "POST",
+ parameters: {
+ body: {
+ simulation
+ },
+ path: {},
+ query: {}
+ }
+ });
+}
+
+export function updateSimulation(simulation) {
+ return sendRequest({
+ path: "/simulations/{simulationId}",
+ method: "PUT",
+ parameters: {
+ body: {
+ simulation
+ },
+ path: {
+ simulationId: simulation.id
+ },
+ query: {}
+ }
+ });
+}
+
+export function deleteSimulation(simulationId) {
+ return deleteById("/simulations/{simulationId}", { simulationId });
+}
+
+export function getAuthorizationsBySimulation(simulationId) {
+ return getById("/simulations/{simulationId}/authorizations", {
+ simulationId
+ });
+}
+
+export function getPathsOfSimulation(simulationId) {
+ return getById("/simulations/{simulationId}/paths", { simulationId });
+}
+
+export function getExperimentsOfSimulation(simulationId) {
+ return getById("/simulations/{simulationId}/experiments", { simulationId });
+}
+
+export function addExperiment(simulationId, experiment) {
+ return sendRequest({
+ path: "/simulations/{simulationId}/experiments",
+ method: "POST",
+ parameters: {
+ body: {
+ experiment
+ },
+ path: {
+ simulationId
+ },
+ query: {}
+ }
+ });
+}
diff --git a/frontend/src/api/routes/specifications.js b/frontend/src/api/routes/specifications.js
new file mode 100644
index 00000000..0f60b571
--- /dev/null
+++ b/frontend/src/api/routes/specifications.js
@@ -0,0 +1,57 @@
+import { getAll, getById } from "./util";
+
+export function getAllCoolingItems() {
+ return getAll("/specifications/cooling-items");
+}
+
+export function getCoolingItem(id) {
+ return getById("/specifications/cooling-items/{id}", { id });
+}
+
+export function getAllCPUs() {
+ return getAll("/specifications/cpus");
+}
+
+export function getCPU(id) {
+ return getById("/specifications/cpus/{id}", { id });
+}
+
+export function getAllFailureModels() {
+ return getAll("/specifications/failure-models");
+}
+
+export function getFailureModel(id) {
+ return getById("/specifications/failure-models/{id}", { id });
+}
+
+export function getAllGPUs() {
+ return getAll("/specifications/gpus");
+}
+
+export function getGPU(id) {
+ return getById("/specifications/gpus/{id}", { id });
+}
+
+export function getAllMemories() {
+ return getAll("/specifications/memories");
+}
+
+export function getMemory(id) {
+ return getById("/specifications/memories/{id}", { id });
+}
+
+export function getAllPSUs() {
+ return getAll("/specifications/psus");
+}
+
+export function getPSU(id) {
+ return getById("/specifications/psus/{id}", { id });
+}
+
+export function getAllStorages() {
+ return getAll("/specifications/storages");
+}
+
+export function getStorage(id) {
+ return getById("/specifications/storages/{id}", { id });
+}
diff --git a/frontend/src/api/routes/tiles.js b/frontend/src/api/routes/tiles.js
new file mode 100644
index 00000000..08481ef4
--- /dev/null
+++ b/frontend/src/api/routes/tiles.js
@@ -0,0 +1,146 @@
+import { sendRequest } from "../index";
+import { deleteById, getById } from "./util";
+
+export function getTile(tileId) {
+ return getById("/tiles/{tileId}", { tileId });
+}
+
+export function deleteTile(tileId) {
+ return deleteById("/tiles/{tileId}", { tileId });
+}
+
+export function getRackByTile(tileId) {
+ return getTileObject(tileId, "/rack");
+}
+
+export function addRackToTile(tileId, rack) {
+ return addTileObject(tileId, { rack }, "/rack");
+}
+
+export function updateRackOnTile(tileId, rack) {
+ return updateTileObject(tileId, { rack }, "/rack");
+}
+
+export function deleteRackFromTile(tileId) {
+ return deleteTileObject(tileId, "/rack");
+}
+
+export function getMachinesOfRackByTile(tileId) {
+ return getById("/tiles/{tileId}/rack/machines", { tileId });
+}
+
+export function addMachineToRackOnTile(tileId, machine) {
+ return sendRequest({
+ path: "/tiles/{tileId}/rack/machines",
+ method: "POST",
+ parameters: {
+ body: {
+ machine
+ },
+ path: {
+ tileId
+ },
+ query: {}
+ }
+ });
+}
+
+export function updateMachineInRackOnTile(tileId, position, machine) {
+ return sendRequest({
+ path: "/tiles/{tileId}/rack/machines/{position}",
+ method: "PUT",
+ parameters: {
+ body: {
+ machine
+ },
+ path: {
+ tileId,
+ position
+ },
+ query: {}
+ }
+ });
+}
+
+export function deleteMachineInRackOnTile(tileId, position) {
+ return sendRequest({
+ path: "/tiles/{tileId}/rack/machines/{position}",
+ method: "DELETE",
+ parameters: {
+ body: {},
+ path: {
+ tileId,
+ position
+ },
+ query: {}
+ }
+ });
+}
+
+export function getCoolingItemByTile(tileId) {
+ return getTileObject(tileId, "/cooling-item");
+}
+
+export function addCoolingItemToTile(tileId, coolingItemId) {
+ return addTileObject(tileId, { coolingItemId }, "/cooling-item");
+}
+
+export function updateCoolingItemOnTile(tileId, coolingItemId) {
+ return updateTileObject(tileId, { coolingItemId }, "/cooling-item");
+}
+
+export function deleteCoolingItemFromTile(tileId) {
+ return deleteTileObject(tileId, "/cooling-item");
+}
+
+export function getPSUByTile(tileId) {
+ return getTileObject(tileId, "/psu");
+}
+
+export function addPSUToTile(tileId, psuId) {
+ return addTileObject(tileId, { psuId }, "/psu");
+}
+
+export function updatePSUOnTile(tileId, psuId) {
+ return updateTileObject(tileId, { psuId }, "/psu");
+}
+
+export function deletePSUFromTile(tileId) {
+ return deleteTileObject(tileId, "/psu");
+}
+
+function getTileObject(tileId, endpoint) {
+ return getById("/tiles/{tileId}" + endpoint, { tileId });
+}
+
+function addTileObject(tileId, objectBody, endpoint) {
+ return sendRequest({
+ path: "/tiles/{tileId}" + endpoint,
+ method: "POST",
+ parameters: {
+ body: objectBody,
+ path: {
+ tileId
+ },
+ query: {}
+ }
+ });
+}
+
+function updateTileObject(tileId, objectBody, endpoint) {
+ return sendRequest({
+ path: "/tiles/{tileId}" + endpoint,
+ method: "PUT",
+ parameters: {
+ body: objectBody,
+ path: {
+ tileId
+ },
+ query: {}
+ }
+ });
+}
+
+function deleteTileObject(tileId, endpoint) {
+ return deleteById("/tiles/{tileId}" + endpoint, { tileId });
+}
diff --git a/frontend/src/api/routes/token-signin.js b/frontend/src/api/routes/token-signin.js
new file mode 100644
index 00000000..26875606
--- /dev/null
+++ b/frontend/src/api/routes/token-signin.js
@@ -0,0 +1,7 @@
+export function performTokenSignIn(token) {
+ return new Promise(resolve => {
+ window["jQuery"].post("/tokensignin", { idtoken: token }, data =>
+ resolve(data)
+ );
+ });
+}
diff --git a/frontend/src/api/routes/traces.js b/frontend/src/api/routes/traces.js
new file mode 100644
index 00000000..a9ee4fae
--- /dev/null
+++ b/frontend/src/api/routes/traces.js
@@ -0,0 +1,9 @@
+import { getAll, getById } from "./util";
+
+export function getAllTraces() {
+ return getAll("/traces");
+}
+
+export function getJobsOfTrace(traceId) {
+ return getById("/traces/{traceId}/jobs", { traceId });
+}
diff --git a/frontend/src/api/routes/users.js b/frontend/src/api/routes/users.js
new file mode 100644
index 00000000..f8d8039c
--- /dev/null
+++ b/frontend/src/api/routes/users.js
@@ -0,0 +1,71 @@
+import { sendRequest } from "../index";
+import { deleteById, getById } from "./util";
+
+export function getUserByEmail(email) {
+ return sendRequest({
+ path: "/users",
+ method: "GET",
+ parameters: {
+ body: {},
+ path: {},
+ query: {
+ email
+ }
+ }
+ });
+}
+
+export function addUser(user) {
+ return sendRequest({
+ path: "/users",
+ method: "POST",
+ parameters: {
+ body: {
+ user: user
+ },
+ path: {},
+ query: {}
+ }
+ });
+}
+
+export function getUser(userId) {
+ return sendRequest({
+ path: "/users/{userId}",
+ method: "GET",
+ parameters: {
+ body: {},
+ path: {
+ userId
+ },
+ query: {}
+ }
+ });
+}
+
+export function updateUser(userId, user) {
+ return sendRequest({
+ path: "/users/{userId}",
+ method: "PUT",
+ parameters: {
+ body: {
+ user: {
+ givenName: user.givenName,
+ familyName: user.familyName
+ }
+ },
+ path: {
+ userId
+ },
+ query: {}
+ }
+ });
+}
+
+export function deleteUser(userId) {
+ return deleteById("/users/{userId}", { userId });
+}
+
+export function getAuthorizationsByUser(userId) {
+ return getById("/users/{userId}/authorizations", { userId });
+}
diff --git a/frontend/src/api/routes/util.js b/frontend/src/api/routes/util.js
new file mode 100644
index 00000000..35a40333
--- /dev/null
+++ b/frontend/src/api/routes/util.js
@@ -0,0 +1,37 @@
+import { sendRequest } from "../index";
+
+export function getAll(path) {
+ return sendRequest({
+ path,
+ method: "GET",
+ parameters: {
+ body: {},
+ path: {},
+ query: {}
+ }
+ });
+}
+
+export function getById(path, pathObject) {
+ return sendRequest({
+ path,
+ method: "GET",
+ parameters: {
+ body: {},
+ path: pathObject,
+ query: {}
+ }
+ });
+}
+
+export function deleteById(path, pathObject) {
+ return sendRequest({
+ path,
+ method: "DELETE",
+ parameters: {
+ body: {},
+ path: pathObject,
+ query: {}
+ }
+ });
+}