feat: experimental s3 support
This commit is contained in:
+29
-3
@@ -15,6 +15,7 @@ import {
|
||||
getComposePostgresClaims,
|
||||
reconcilePostgresClaims,
|
||||
} from "../lib/database";
|
||||
import { getComposeS3Claims, reconcileS3Claims } from "../lib/storage";
|
||||
import { restartDeployment, waitForDeploymentRollout } from "../lib/shared";
|
||||
|
||||
type UpContext = {
|
||||
@@ -24,6 +25,17 @@ type UpContext = {
|
||||
staleResources?: KubernetesResource[];
|
||||
};
|
||||
|
||||
function mergeServiceEnv(
|
||||
current: Record<string, Record<string, string>> | undefined,
|
||||
next: Record<string, Record<string, string>>,
|
||||
): Record<string, Record<string, string>> {
|
||||
const merged = { ...current };
|
||||
for (const [service, environment] of Object.entries(next)) {
|
||||
merged[service] = { ...merged[service], ...environment };
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
|
||||
function getDeploymentNames(resources: KubernetesResource[]): string[] {
|
||||
return resources
|
||||
.filter((resource) => resource.kind === "Deployment")
|
||||
@@ -74,9 +86,23 @@ export async function runUp(build: boolean) {
|
||||
? false
|
||||
: "No managed postgres volumes",
|
||||
task: async (taskCtx, task) => {
|
||||
taskCtx.serviceEnv = await reconcilePostgresClaims(
|
||||
project,
|
||||
taskCtx.compose!,
|
||||
taskCtx.serviceEnv = mergeServiceEnv(
|
||||
taskCtx.serviceEnv,
|
||||
await reconcilePostgresClaims(project, taskCtx.compose!),
|
||||
);
|
||||
task.output = `${Object.keys(taskCtx.serviceEnv).length} service${Object.keys(taskCtx.serviceEnv).length === 1 ? "" : "s"}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Reconcile S3 storage",
|
||||
skip: (taskCtx) =>
|
||||
getComposeS3Claims(taskCtx.compose!).length > 0
|
||||
? false
|
||||
: "No managed S3 volumes",
|
||||
task: async (taskCtx, task) => {
|
||||
taskCtx.serviceEnv = mergeServiceEnv(
|
||||
taskCtx.serviceEnv,
|
||||
await reconcileS3Claims(project, taskCtx.compose!),
|
||||
);
|
||||
task.output = `${Object.keys(taskCtx.serviceEnv).length} service${Object.keys(taskCtx.serviceEnv).length === 1 ? "" : "s"}`;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user