From 4250e93b6059ce3e438dc6c125fd32df7c83c8d1 Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Wed, 16 Mar 2022 14:40:21 -0700 Subject: [PATCH] improve queries to just take server as input --- core/src/messages/deployments/clone.ts | 2 +- core/src/messages/deployments/deploy.ts | 61 +++++++++++++++++++++++++ core/src/util/periphery/container.ts | 31 ++++++------- core/src/util/periphery/deploy.ts | 11 +++-- core/src/util/periphery/git.ts | 17 +++---- 5 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 core/src/messages/deployments/deploy.ts diff --git a/core/src/messages/deployments/clone.ts b/core/src/messages/deployments/clone.ts index b02519872..84a766e68 100644 --- a/core/src/messages/deployments/clone.ts +++ b/core/src/messages/deployments/clone.ts @@ -15,7 +15,7 @@ async function cloneRepo( deployment; const server = serverID ? await app.servers.findById(serverID) : undefined; const { command, log, isError } = server - ? await clonePeriphery(server.address, server.passkey, deployment) + ? await clonePeriphery(server, deployment) : await clone( repo!, DEPLOYMENT_REPO_PATH + containerName!, diff --git a/core/src/messages/deployments/deploy.ts b/core/src/messages/deployments/deploy.ts new file mode 100644 index 000000000..6f20f18ad --- /dev/null +++ b/core/src/messages/deployments/deploy.ts @@ -0,0 +1,61 @@ +import { User } from "@monitor/types"; +import { dockerRun } from "@monitor/util"; +import { FastifyInstance } from "fastify"; +import { DEPLOY } from "."; +import { PERMISSIONS_DENY_LOG, SYSROOT } from "../../config"; +import { deletePeripheryContainer } from "../../util/periphery/container"; +import { deployPeriphery } from "../../util/periphery/deploy"; +import { addDeploymentUpdate } from "../../util/updates"; + +async function deployDeployment( + app: FastifyInstance, + user: User, + { deploymentID, note }: { deploymentID: string; note?: string }, +) { + const deployment = await app.deployments.findById(deploymentID); + if (!deployment) return; + if (user.permissions! < 2 && user.username !== deployment.owner) { + addDeploymentUpdate( + app, + deploymentID, + DEPLOY, + "Deploy (DENIED)", + PERMISSIONS_DENY_LOG, + user.username, + note, + true + ); + return; + } + const server = deployment.serverID + ? await app.servers.findById(deployment.serverID) + : undefined; + if (server) { + // delete the container on periphery + await deletePeripheryContainer(server, deployment.containerName!); + } else { + + } + const { command, log, isError } = server + ? await deployPeriphery(server, deployment) + : await dockerRun( + deployment, + SYSROOT, + deployment.repo && deployment.containerMount + ? { + repoFolder: SYSROOT + "/repos", + containerMount: deployment.containerMount, + } + : undefined + ); + addDeploymentUpdate( + app, + deploymentID, + DEPLOY, + command, + log, + user.username, + note, + isError + ) +} diff --git a/core/src/util/periphery/container.ts b/core/src/util/periphery/container.ts index fc06c404d..ba57be95e 100644 --- a/core/src/util/periphery/container.ts +++ b/core/src/util/periphery/container.ts @@ -1,8 +1,8 @@ -import { Collection, CommandLogError, ContainerStatus, Log } from "@monitor/types"; +import { Collection, CommandLogError, ContainerStatus, Log, Server } from "@monitor/types"; import axios from "axios"; -export async function getPeripheryContainers(url: string, passkey: string) { - return (await axios.get(`${url}/containers`, { +export async function getPeripheryContainers({ address, passkey }: Server) { + return (await axios.get(`http://${address}/containers`, { headers: { Authorization: passkey, }, @@ -10,11 +10,10 @@ export async function getPeripheryContainers(url: string, passkey: string) { } export async function getPeripheryContainer( - url: string, - passkey: string, + { address, passkey }: Server, name: string ) { - return (await axios.get(`${url}/container/${name}`, { + return (await axios.get(`http://${address}/container/${name}`, { headers: { Authorization: passkey, }, @@ -22,11 +21,10 @@ export async function getPeripheryContainer( } export async function getPeripheryContainerLog( - url: string, - passkey: string, + { address, passkey }: Server, name: string ) { - return (await axios.get(`${url}/container/log/${name}`, { + return (await axios.get(`http://${address}/container/log/${name}`, { headers: { Authorization: passkey, }, @@ -34,11 +32,10 @@ export async function getPeripheryContainerLog( } export async function startPeripheryContainer( - url: string, - passkey: string, + { address, passkey }: Server, name: string ) { - return (await axios.get(`${url}/container/start/${name}`, { + return (await axios.get(`http://${address}/container/start/${name}`, { headers: { Authorization: passkey, }, @@ -46,11 +43,10 @@ export async function startPeripheryContainer( } export async function stopPeripheryContainer( - url: string, - passkey: string, + { address, passkey }: Server, name: string ) { - return (await axios.get(`${url}/container/stop/${name}`, { + return (await axios.get(`http://${address}/container/stop/${name}`, { headers: { Authorization: passkey, }, @@ -58,11 +54,10 @@ export async function stopPeripheryContainer( } export async function deletePeripheryContainer( - url: string, - passkey: string, + { address, passkey }: Server, name: string ) { - return (await axios.get(`${url}/container/delete/${name}`, { + return (await axios.get(`http://${address}/container/delete/${name}`, { headers: { Authorization: passkey, }, diff --git a/core/src/util/periphery/deploy.ts b/core/src/util/periphery/deploy.ts index 5fa2e5e6a..0376cb496 100644 --- a/core/src/util/periphery/deploy.ts +++ b/core/src/util/periphery/deploy.ts @@ -1,9 +1,12 @@ -import { CommandLogError, Deployment } from "@monitor/types"; +import { CommandLogError, Deployment, Server } from "@monitor/types"; import axios from "axios"; -export async function deployPeriphery(url: string, passkey: string, deployment: Deployment) { - return (await axios.post( - `${url}/deploy`, +export async function deployPeriphery( + { address, passkey }: Server, + deployment: Deployment +) { + return (await axios.post( + `http://${address}/deploy`, { deployment }, { headers: { diff --git a/core/src/util/periphery/git.ts b/core/src/util/periphery/git.ts index 135dd88ec..cda161259 100644 --- a/core/src/util/periphery/git.ts +++ b/core/src/util/periphery/git.ts @@ -1,13 +1,12 @@ -import { CommandLogError, Deployment } from "@monitor/types"; +import { CommandLogError, Deployment, Server } from "@monitor/types"; import axios from "axios"; export async function clonePeriphery( - url: string, - passkey: string, + { address, passkey }: Server, deployment: Deployment ) { return (await axios.post( - `${url}/repo/clone`, + `http://${address}/repo/clone`, { deployment }, { headers: { @@ -18,12 +17,11 @@ export async function clonePeriphery( } export async function pullPeriphery( - url: string, - passkey: string, + { address, passkey }: Server, deployment: Deployment ) { return (await axios.post( - `${url}/repo/pull`, + `http://${address}/repo/pull`, { deployment }, { headers: { @@ -34,12 +32,11 @@ export async function pullPeriphery( } export async function deleteRepoPeriphery( - url: string, - passkey: string, + { address, passkey }: Server, deployment: Deployment ) { return (await axios.post( - `${url}/repo/delete`, + `http://${address}/repo/delete`, { deployment }, { headers: {