Feature/sdk improvements (#2879)

* sdk improvements

* subcontainer fixes, disable wifi on migration if not in use, filterable interfaces
This commit is contained in:
Aiden McClelland
2025-04-18 14:11:13 -06:00
committed by GitHub
parent dcfbaa9243
commit 2c65033c0a
19 changed files with 426 additions and 136 deletions

View File

@@ -9,6 +9,9 @@ import {
ExecOptions,
ExecSpawnable,
} from "@start9labs/start-sdk/package/lib/util/SubContainer"
import { Mounts } from "@start9labs/start-sdk/package/lib/mainFn/Mounts"
import { Manifest } from "@start9labs/start-sdk/base/lib/osBindings"
import { BackupEffects } from "@start9labs/start-sdk/package/lib/backup/Backups"
export const exec = promisify(cp.exec)
export const execFile = promisify(cp.execFile)
@@ -42,8 +45,9 @@ export class DockerProcedureContainer {
name: string,
) {
const subcontainer = await SubContainer.of(
effects,
effects as BackupEffects,
{ imageId: data.image },
null,
name,
)
@@ -57,14 +61,10 @@ export class DockerProcedureContainer {
const volumeMount = volumes[mount]
if (volumeMount.type === "data") {
await subcontainer.mount(
{ type: "volume", id: mount, subpath: null, readonly: false },
mounts[mount],
Mounts.of().addVolume(mount, null, mounts[mount], false),
)
} else if (volumeMount.type === "assets") {
await subcontainer.mount(
{ type: "assets", subpath: mount },
mounts[mount],
)
await subcontainer.mount(Mounts.of().addAssets(mount, mounts[mount]))
} else if (volumeMount.type === "certificate") {
const hostnames = [
`${packageId}.embassy`,
@@ -107,10 +107,7 @@ export class DockerProcedureContainer {
})
.catch(console.warn)
} else if (volumeMount.type === "backup") {
await subcontainer.mount(
{ type: "backup", subpath: null },
mounts[mount],
)
await subcontainer.mount(Mounts.of().addBackups(null, mounts[mount]))
}
}
}

View File

@@ -6,6 +6,7 @@ import { Daemon } from "@start9labs/start-sdk/package/lib/mainFn/Daemon"
import { Effects } from "../../../Models/Effects"
import { off } from "node:process"
import { CommandController } from "@start9labs/start-sdk/package/lib/mainFn/CommandController"
import { SDKManifest } from "@start9labs/start-sdk/base/lib/types"
const EMBASSY_HEALTH_INTERVAL = 15 * 1000
const EMBASSY_PROPERTIES_LOOP = 30 * 1000
@@ -24,7 +25,7 @@ export class MainLoop {
}[]
private mainEvent?: {
daemon: Daemon
daemon: Daemon<SDKManifest>
}
private constructor(
@@ -72,6 +73,7 @@ export class MainLoop {
env: {
TINI_SUBREAPER: "true",
},
mounts: null,
sigtermTimeout: utils.inMs(
this.system.manifest.main["sigterm-timeout"],
),

View File

@@ -139,7 +139,7 @@ export const polyfillEffects = (
effects,
subcontainer,
[input.command, ...(input.args || [])],
{},
{ mounts: null },
),
)
return {