Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 87 additions & 87 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
["package"]
"name" = "webdock-postgres"
"name" = "spitzli-postgres"
"version" = "0.1.0"
"edition" = "2024"
"rust-version" = "1.94"
Expand All @@ -23,20 +23,20 @@
"version" = "1"
"features" = ["macros", "rt-multi-thread", "signal", "time"]

["dependencies"."webdock-plugin-protocol"]
["dependencies"."spitzli-plugin-protocol"]
"git" = "https://github.com/spitzli/cloud-plugin-sdk"
"rev" = "8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6"
"package" = "webdock-plugin-protocol"
"rev" = "8019f3df67dba3fed3083f22635e4725028c1b5e"
"package" = "spitzli-plugin-protocol"

["dependencies"."webdock-plugin-runtime"]
["dependencies"."spitzli-plugin-runtime"]
"git" = "https://github.com/spitzli/cloud-plugin-sdk"
"rev" = "8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6"
"package" = "webdock-plugin-runtime"
"rev" = "8019f3df67dba3fed3083f22635e4725028c1b5e"
"package" = "spitzli-plugin-runtime"

["dependencies"."webdock-plugin-kit"]
["dependencies"."spitzli-plugin-kit"]
"git" = "https://github.com/spitzli/cloud-plugin-sdk"
"rev" = "8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6"
"package" = "webdock-plugin-kit"
"rev" = "8019f3df67dba3fed3083f22635e4725028c1b5e"
"package" = "spitzli-plugin-kit"

["dependencies"."tonic"]
"version" = "0.14.6"
Expand Down
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ WORKDIR /src
COPY . .
# Shared only among reviewed Spitzli platform sources; never customer build code.
FROM source AS check
RUN --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-registry,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-git,target=/usr/local/cargo/git,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-target,target=/src/target,sharing=locked cargo check --locked --all-targets --jobs 3 && cargo test --locked --all-targets --jobs 3
RUN --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-registry,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-git,target=/usr/local/cargo/git,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-target,target=/src/target,sharing=locked cargo check --locked --all-targets --jobs 3 && cargo test --locked --all-targets --jobs 3

FROM source AS build
RUN --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-registry,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-git,target=/usr/local/cargo/git,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8ed57d89c3263b050f126e4c2ba7f6cdebb0daa6-target,target=/src/target,sharing=locked cargo build --locked --release --bins --jobs 3 && mkdir /out && install -m 0555 /src/target/release/webdock-postgres /out/webdock-postgres
RUN --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-registry,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-git,target=/usr/local/cargo/git,sharing=locked --mount=type=cache,id=spitzli-native-sdk-8019f3df67dba3fed3083f22635e4725028c1b5e-target,target=/src/target,sharing=locked cargo build --locked --release --bins --jobs 3 && mkdir /out && install -m 0555 /src/target/release/spitzli-postgres /out/spitzli-postgres

FROM docker.io/library/debian:trixie-slim@sha256:f6b08b09a05725f9431502d3b5714f5c4576e82c1a84fa1debe0c24a7e0c3ec4
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY LICENSE COMMERCIAL-LICENSING.md NOTICE /usr/share/licenses/spitzli-cloud/
COPY --from=build --chown=65532:65532 --chmod=0555 /out/webdock-postgres /usr/local/bin/webdock-postgres
COPY --from=build --chown=65532:65532 --chmod=0555 /out/spitzli-postgres /usr/local/bin/spitzli-postgres
ENV HOME=/tmp
USER 65532:65532
ENTRYPOINT ["/usr/local/bin/webdock-postgres"]
ENTRYPOINT ["/usr/local/bin/spitzli-postgres"]
57 changes: 57 additions & 0 deletions NAMESPACE-MIGRATION.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"baseSource": "a0f2ea6ef495d4877d145198a6effe86d650aaa8",
"date": "2026-11-12",
"formatVersion": 1,
"licenseUnchanged": true,
"originalSourceSnapshotRetained": true,
"package": "spitzli-postgres",
"preservedBindingFilesSHA256": {
"COMMERCIAL-LICENSING.md": "5b8832f5014f16e2cf4f7ee295de32760eed20981495d184bd9f1517be256a09",
"EXPORT-PROVENANCE.json": "9b373ffd2b19732779b05b4f2c8668a0d977c5bae10aff968a59aaf2932d629c",
"LICENSE": "0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0",
"manifest.json": "7a553f50e0d6a9d39c036772442dfd1af30a1eada8b3914c80651d48c61b3958"
},
"qualifiedChangedSourceSHA256": {
"Cargo.lock": "12a418cf413fefe5988f3b6e31b13943b77ef783341649287c62841ac012d13e",
"Cargo.toml": "98993bed440c5af8b807280671acb0230625aea9f81f5cee98c1e60a741cb578",
"Dockerfile": "3f94537e9af06abc14a03ecdb77a7883c14bedb503eaf037c8cbb9eaf550e1db",
"NOTICE": "4949ccd63735c148d2fd1f1423772d11938087ba0bdbcf4aad81c576bcfa09b8",
"README.md": "e81fdfb09d8a7d3e15bc1247c55075247af67864075798e68e5e4e590afc7b8b",
"scripts/plugin-release/release.mjs": "30462a348f238bc78dab840688199574ad4fc5e9b039310306d6210f4c433890",
"src/dedicated.rs": "426684c6e402923eb4329fedcf5b35b955a94537a3e1f1107b4addd2578bec6a",
"src/lib.rs": "1925f41a32c4a9f4f71739189e371782c99343d65721ae5f8caabe49d3663444",
"src/main.rs": "cfc8c963dacf5b188b4805862d943540f34d83723caae3e8d9dbb68fc68d2e34",
"src/store.rs": "530619bdb7731a0561f04e1911d8f141d6381732fd8a78ead38450395cf11d53",
"standalone.json": "f9726058c8238050da39c93af6a7d4e902ca3b654f1485cfb215c9227931dd6b",
"tests/lifecycle.rs": "3f39a9bfed162dad254e8470edb822413a20c42b653859f3882c935592f80216",
"tests/storage_retention.rs": "7bebb3e8652164bf2ee7b539f06bb1c5387166f814ba4e60b48d914c0502d445",
"tests/storage_transport.rs": "561e16916f430dcf8afaee5918d99faf3974969c9f9de8d34f59dae2e4165408",
"tools/manifest-validator/Cargo.lock": "ae2cb28761abf9ce99c9f5c4df246d47d61955a9919907fd222f511d13d84ba6",
"tools/manifest-validator/Cargo.toml": "81aa8724804a7f701f7b312c8851937369409d029071d2034dbd6f535b86df6a",
"tools/manifest-validator/src/main.rs": "bb5f5ab38c63e2c28aa64a329696e923aa747e62de2d058e2de734ada06e72b4",
"ui/index.tsx": "d01001df0a91778fb33b0d837f39fb461b38d5b2fce25fa58431d2798a616838"
},
"runtimeArtifactsReplaced": false,
"scope": "Rust package/import and binary namespace, host UI import namespace, paired test environment variables and exact SDK pin",
"sdkGit": "https://github.com/spitzli/cloud-plugin-sdk",
"sdkRevision": "8019f3df67dba3fed3083f22635e4725028c1b5e",
"sourceChecks": {
"allRegistryLockfilesPreserved": [
"Cargo.lock",
"tools/manifest-validator/Cargo.lock"
],
"format": true,
"releaseContract": true,
"rustLiteralFilesChecked": 9,
"strictClippy": true,
"testsIgnored": 5,
"testsPassed": 4,
"ui": {
"component": "postgres",
"hostConsoleSource": "a9fa78a6264a64a5e3e9405a49d94da189f7638b",
"typecheckPassed": true
}
},
"version": "0.1.0",
"wireStoredCryptographicAndExternalResourceBindings": "retained for coordinated migration"
}
4 changes: 2 additions & 2 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Webdock
Spitzli Cloud
Copyright (c) 2026 Spitzli Development and contributors.

Original Webdock code is licensed under AGPL-3.0-only unless separately noted.
Original Spitzli Cloud code is licensed under AGPL-3.0-only unless separately noted.
Alternative written licenses may be available from the relevant rights holder.
See LICENSE and COMMERCIAL-LICENSING.md.

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The retained implementation notes below include platform integration procedures.
Commands referring to Core, `tools/` or `apps/console` require the [platform source
checkout](https://github.com/spitzli/webdock); they are not standalone setup steps.

This release maintains existing retained PostgreSQL resources only. New shared and self-hosted database orders are disabled; Neon BYOK is the default for new database connections. Publishing this artifact does not install it, create customers or databases, enable orders, or delete existing data. Core keeps `WEBDOCK_DATABASE_NEW_ORDERS_ENABLED=false`.
This release maintains existing retained PostgreSQL resources only. New shared and self-hosted database orders are disabled; Neon BYOK is the default for new database connections. Publishing this artifact does not install it, create customers or databases, enable orders, or delete existing data. Core keeps `SPITZLI_DATABASE_NEW_ORDERS_ENABLED=false`.

The retained maintenance protocol supports the existing resource types:

Expand All @@ -58,6 +58,6 @@ The React UI in `ui/` is bundled by the Console and shown on the resource page.
```sh
cargo test --locked # manifest contract
# Real PostgreSQL (disposable, loopback); Core and the cluster are stood in for:
WEBDOCK_POSTGRES_PLUGIN_TEST_ADMIN_URL=postgres://… \
SPITZLI_POSTGRES_PLUGIN_TEST_ADMIN_URL=postgres://… \
cargo test --locked -- --include-ignored
```
2 changes: 1 addition & 1 deletion scripts/plugin-release/release.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function validateDockerfile(raw) {

export function validateSDKDependencies(dependencies) {
const sources = new Set();
for (const dependency of dependencies.filter(dep => dep.name.startsWith('webdock-'))) {
for (const dependency of dependencies.filter(dep => dep.name.startsWith('spitzli-') || dep.name.startsWith('webdock-'))) {
requireValue(typeof dependency.source === 'string' && /\?rev=[a-f0-9]{40}(?:#|$)/.test(dependency.source), 'Every SDK crate must use a reviewed Git revision');
sources.add(dependency.source.split('#')[0]);
}
Expand Down
4 changes: 2 additions & 2 deletions src/dedicated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
//! is just a new apply. Customers connect through Traefik, routed by TLS server name.
use serde::Deserialize;
use serde_json::{Value, json};
pub use spitzli_plugin_kit::workloads::{HostWorkloads, Workloads};
use spitzli_plugin_protocol::PluginError;
use uuid::Uuid;
pub use webdock_plugin_kit::workloads::{HostWorkloads, Workloads};
use webdock_plugin_protocol::PluginError;

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
Expand Down
6 changes: 3 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
//! The Core admits every call (audience, access mode, resource ownership); this plugin checks
//! again that a resource belongs to the invoking project before touching it.
pub mod dedicated;
pub use webdock_plugin_kit::seal;
pub use spitzli_plugin_kit::seal;
pub mod shared;
pub mod store;

use serde::Deserialize;
use serde_json::{Value, json};
use spitzli_plugin_protocol::{ErrorCode, InvocationClaims, Manifest, PluginError};
use spitzli_plugin_runtime::ActionHandler;
use std::sync::Arc;
use uuid::Uuid;
use webdock_plugin_protocol::{ErrorCode, InvocationClaims, Manifest, PluginError};
use webdock_plugin_runtime::ActionHandler;

type Result<T> = std::result::Result<T, PluginError>;
pub const PLUGIN_ID: &str = "postgres";
Expand Down
Loading
Loading