ecs logic
This commit is contained in:
parent
7981af1451
commit
14ea89d690
@ -10,10 +10,9 @@ import {
|
||||
} from "./types";
|
||||
|
||||
import {
|
||||
DeleteServiceCommand,
|
||||
DescribeServicesCommand,
|
||||
ECSClient,
|
||||
StartTaskCommand,
|
||||
StopTaskCommand,
|
||||
} from "@aws-sdk/client-ecs";
|
||||
|
||||
dotenv.config();
|
||||
@ -178,10 +177,11 @@ export const getProjectSize = async (id: string) => {
|
||||
return (await res.json()).size;
|
||||
};
|
||||
|
||||
export const stopServer = async (task: string) => {
|
||||
const command = new StopTaskCommand({
|
||||
cluster: "arn:aws:ecs:us-east-1:767398085538:service/Sandbox/Sandbox",
|
||||
task,
|
||||
export const stopServer = async (service: string) => {
|
||||
const command = new DeleteServiceCommand({
|
||||
cluster: "Sandbox",
|
||||
service,
|
||||
force: true,
|
||||
});
|
||||
|
||||
try {
|
||||
|
@ -1,12 +1,14 @@
|
||||
"use server"
|
||||
"use server";
|
||||
|
||||
import { revalidatePath } from "next/cache"
|
||||
import { revalidatePath } from "next/cache";
|
||||
import ecsClient from "./ecs";
|
||||
import { CreateServiceCommand, StartTaskCommand } from "@aws-sdk/client-ecs";
|
||||
|
||||
export async function createSandbox(body: {
|
||||
type: string
|
||||
name: string
|
||||
userId: string
|
||||
visibility: string
|
||||
type: string;
|
||||
name: string;
|
||||
userId: string;
|
||||
visibility: string;
|
||||
}) {
|
||||
const res = await fetch(
|
||||
"https://database.ishaan1013.workers.dev/api/sandbox",
|
||||
@ -17,15 +19,15 @@ export async function createSandbox(body: {
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
return await res.text()
|
||||
return await res.text();
|
||||
}
|
||||
|
||||
export async function updateSandbox(body: {
|
||||
id: string
|
||||
name?: string
|
||||
visibility?: "public" | "private"
|
||||
id: string;
|
||||
name?: string;
|
||||
visibility?: "public" | "private";
|
||||
}) {
|
||||
await fetch("https://database.ishaan1013.workers.dev/api/sandbox", {
|
||||
method: "POST",
|
||||
@ -33,17 +35,17 @@ export async function updateSandbox(body: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
})
|
||||
});
|
||||
|
||||
revalidatePath("/dashboard")
|
||||
revalidatePath("/dashboard");
|
||||
}
|
||||
|
||||
export async function deleteSandbox(id: string) {
|
||||
await fetch(`https://database.ishaan1013.workers.dev/api/sandbox?id=${id}`, {
|
||||
method: "DELETE",
|
||||
})
|
||||
});
|
||||
|
||||
revalidatePath("/dashboard")
|
||||
revalidatePath("/dashboard");
|
||||
}
|
||||
|
||||
export async function shareSandbox(sandboxId: string, email: string) {
|
||||
@ -56,15 +58,15 @@ export async function shareSandbox(sandboxId: string, email: string) {
|
||||
},
|
||||
body: JSON.stringify({ sandboxId, email }),
|
||||
}
|
||||
)
|
||||
const text = await res.text()
|
||||
);
|
||||
const text = await res.text();
|
||||
|
||||
if (res.status !== 200) {
|
||||
return { success: false, message: text }
|
||||
return { success: false, message: text };
|
||||
}
|
||||
|
||||
revalidatePath(`/code/${sandboxId}`)
|
||||
return { success: true, message: "Shared successfully." }
|
||||
revalidatePath(`/code/${sandboxId}`);
|
||||
return { success: true, message: "Shared successfully." };
|
||||
}
|
||||
|
||||
export async function unshareSandbox(sandboxId: string, userId: string) {
|
||||
@ -74,7 +76,37 @@ export async function unshareSandbox(sandboxId: string, userId: string) {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({ sandboxId, userId }),
|
||||
})
|
||||
});
|
||||
|
||||
revalidatePath(`/code/${sandboxId}`)
|
||||
revalidatePath(`/code/${sandboxId}`);
|
||||
}
|
||||
|
||||
export async function startServer(serviceName: string) {
|
||||
const command = new CreateServiceCommand({
|
||||
cluster: "arn:aws:ecs:us-east-1:767398085538:service/Sandbox/Sandbox",
|
||||
serviceName,
|
||||
taskDefinition: "Sandbox1",
|
||||
desiredCount: 1,
|
||||
networkConfiguration: {
|
||||
awsvpcConfiguration: {
|
||||
securityGroups: ["sg-07e489fcf3299af52"],
|
||||
subnets: [
|
||||
"subnet-06d04f2a6ebb1710c",
|
||||
"subnet-097c000f157c26a78",
|
||||
"subnet-00f931ecbabaf87dd",
|
||||
"subnet-0adcb82d77db9f263",
|
||||
"subnet-0c6874150d8e63a7c",
|
||||
"subnet-0b76f9ee3fe20660d",
|
||||
],
|
||||
assignPublicIp: "ENABLED",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await ecsClient.send(command);
|
||||
console.log("started server:", response);
|
||||
} catch (error) {
|
||||
console.error("Error starting server:", error);
|
||||
}
|
||||
}
|
||||
|
11
frontend/lib/ecs.ts
Normal file
11
frontend/lib/ecs.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { ECSClient } from "@aws-sdk/client-ecs";
|
||||
|
||||
const ecsClient = new ECSClient({
|
||||
region: "us-east-1",
|
||||
credentials: {
|
||||
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
|
||||
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
|
||||
},
|
||||
});
|
||||
|
||||
export default ecsClient;
|
1157
frontend/package-lock.json
generated
1157
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@atlaskit/pragmatic-drag-and-drop": "^1.1.7",
|
||||
"@aws-sdk/client-ecs": "^3.577.0",
|
||||
"@clerk/nextjs": "^4.29.12",
|
||||
"@clerk/themes": "^1.7.12",
|
||||
"@hookform/resolvers": "^3.3.4",
|
||||
|
Loading…
x
Reference in New Issue
Block a user