Skip to content

feat: enforce version-aware tag format for custom images#431

Merged
tsivaprasad merged 4 commits into
mainfrom
PLAT-641-enforce-version-aware-tag-format-for-custom-image-overrides
Jul 15, 2026
Merged

feat: enforce version-aware tag format for custom images#431
tsivaprasad merged 4 commits into
mainfrom
PLAT-641-enforce-version-aware-tag-format-for-custom-image-overrides

Conversation

@tsivaprasad

@tsivaprasad tsivaprasad commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR refines the custom image validation logic. Unrecognizable image tags (for example, development builds) are now accepted without version checks, while recognizable pgEdge-formatted image tags continue to be validated against the versions declared in the specification.

Changes

  • Allow unrecognized image tags (for example, my-dev-build or latest) without version validation. These tags are accepted as long as the image exists in the registry.
  • Continue validating recognizable pgEdge image tags ({pgver}-spock{spockver}-{variant}-{build}) against the versions declared in the cluster specification.
  • Return a clear validation error when the PostgreSQL or Spock version in a recognized pgEdge image tag does not match the declared specification.
  • Support patch-level upgrades through prefix matching. For example, a cluster with spock_version: "5" accepts image tags such as spock5.0.9 and spock5.0.10 without requiring a spec update.

Testing

Verification:

  1. Create cluster
  2. Created Database
 cp1-req create-database < ../demo/Images/create_db_with_no_image.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-10T15:56:26Z",
    "id": "storefront-no-image",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "postgres_version": "18.4",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-10T15:56:26Z"
  },
  "task": {
    "created_at": "2026-07-10T15:56:26Z",
    "database_id": "storefront-no-image",
    "entity_id": "storefront-no-image",
    "scope": "database",
    "status": "pending",
    "task_id": "019f4cbe-96fc-7555-bb6f-095b7b86054c",
    "type": "create"
  }
}
[2026-07-10T15:56:28Z] refreshing current state
[2026-07-10T15:56:28Z] finished refreshing current state (took 198.975708ms)
[2026-07-10T15:56:30Z] creating resource common.patroni_cluster::n1
[2026-07-10T15:56:30Z] finished creating resource common.patroni_cluster::n1 (took 22.75µs)
[2026-07-10T15:56:30Z] creating resource swarm.network::storefront-no-image-database
[2026-07-10T15:56:30Z] finished creating resource swarm.network::storefront-no-image-database (took 6.078792ms)
[2026-07-10T15:56:30Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-instance
[2026-07-10T15:56:30Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-instance (took 1.204791ms)
[2026-07-10T15:56:30Z] creating resource common.patroni_member::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:30Z] finished creating resource common.patroni_member::storefront-no-image-n1-689qacsi (took 35.917µs)
[2026-07-10T15:56:31Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-data
[2026-07-10T15:56:31Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-data (took 916.333µs)
[2026-07-10T15:56:31Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-configs
[2026-07-10T15:56:31Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-configs (took 916.125µs)
[2026-07-10T15:56:31Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-certificates
[2026-07-10T15:56:31Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-certificates (took 447.333µs)
[2026-07-10T15:56:31Z] creating resource common.etcd_creds::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:31Z] finished creating resource common.etcd_creds::storefront-no-image-n1-689qacsi (took 79.95725ms)
[2026-07-10T15:56:31Z] creating resource common.postgres_certs::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:31Z] finished creating resource common.postgres_certs::storefront-no-image-n1-689qacsi (took 8.007791ms)
[2026-07-10T15:56:32Z] creating resource swarm.patroni_config::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:32Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-689qacsi (took 2.552416ms)
[2026-07-10T15:56:32Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:32Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-689qacsi (took 241.25µs)
[2026-07-10T15:56:32Z] creating resource swarm.check_will_restart::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:32Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-689qacsi (took 4.643167ms)
[2026-07-10T15:56:33Z] creating resource swarm.switchover::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:33Z] finished creating resource swarm.switchover::storefront-no-image-n1-689qacsi (took 25.375µs)
[2026-07-10T15:56:33Z] creating resource swarm.postgres_service::storefront-no-image-n1-689qacsi
[2026-07-10T15:56:53Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-689qacsi (took 20.019009342s)
[2026-07-10T15:56:53Z] creating resource database.instance::storefront-no-image-n1-689qacsi
[2026-07-10T15:57:03Z] finished creating resource database.instance::storefront-no-image-n1-689qacsi (took 10.056880921s)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-instance
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-instance (took 800.125µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-instance
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-instance (took 873.916µs)
[2026-07-10T15:57:04Z] creating resource common.patroni_member::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:04Z] finished creating resource common.patroni_member::storefront-no-image-n1-9ptayhma (took 26.625µs)
[2026-07-10T15:57:04Z] creating resource common.patroni_member::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:04Z] finished creating resource common.patroni_member::storefront-no-image-n1-ant97dj4 (took 7.541µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-data
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-data (took 603.958µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-certificates
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-certificates (took 446.041µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-configs
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-configs (took 493.125µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-certificates
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-certificates (took 762.583µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-configs
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-configs (took 347.625µs)
[2026-07-10T15:57:04Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-data
[2026-07-10T15:57:04Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-data (took 503.333µs)
[2026-07-10T15:57:05Z] creating resource common.postgres_certs::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:05Z] creating resource common.etcd_creds::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:05Z] finished creating resource common.postgres_certs::storefront-no-image-n1-ant97dj4 (took 24.313625ms)
[2026-07-10T15:57:05Z] creating resource common.postgres_certs::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:05Z] creating resource common.etcd_creds::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:05Z] finished creating resource common.postgres_certs::storefront-no-image-n1-9ptayhma (took 14.30425ms)
[2026-07-10T15:57:05Z] finished creating resource common.etcd_creds::storefront-no-image-n1-ant97dj4 (took 70.603708ms)
[2026-07-10T15:57:05Z] finished creating resource common.etcd_creds::storefront-no-image-n1-9ptayhma (took 70.762792ms)
[2026-07-10T15:57:05Z] creating resource swarm.patroni_config::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:05Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-ant97dj4 (took 2.172375ms)
[2026-07-10T15:57:05Z] creating resource swarm.patroni_config::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:05Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-9ptayhma (took 2.276042ms)
[2026-07-10T15:57:05Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:05Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-ant97dj4 (took 117.375µs)
[2026-07-10T15:57:05Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:05Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-9ptayhma (took 109.541µs)
[2026-07-10T15:57:06Z] creating resource swarm.check_will_restart::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:06Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-ant97dj4 (took 1.830208ms)
[2026-07-10T15:57:06Z] creating resource swarm.check_will_restart::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:06Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-9ptayhma (took 1.789083ms)
[2026-07-10T15:57:06Z] creating resource swarm.switchover::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:06Z] finished creating resource swarm.switchover::storefront-no-image-n1-ant97dj4 (took 12.417µs)
[2026-07-10T15:57:06Z] creating resource swarm.switchover::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:06Z] finished creating resource swarm.switchover::storefront-no-image-n1-9ptayhma (took 12.125µs)
[2026-07-10T15:57:06Z] creating resource swarm.postgres_service::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:06Z] creating resource swarm.postgres_service::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:26Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-ant97dj4 (took 20.015112675s)
[2026-07-10T15:57:26Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-9ptayhma (took 20.0090998s)
[2026-07-10T15:57:27Z] creating resource database.instance::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:27Z] creating resource database.instance::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:37Z] finished creating resource database.instance::storefront-no-image-n1-ant97dj4 (took 10.034570046s)
[2026-07-10T15:57:37Z] finished creating resource database.instance::storefront-no-image-n1-9ptayhma (took 10.018996088s)
[2026-07-10T15:57:37Z] creating resource database.node::n1
[2026-07-10T15:57:37Z] finished creating resource database.node::n1 (took 161.958µs)
[2026-07-10T15:57:37Z] creating resource monitor.instance::storefront-no-image-n1-ant97dj4
[2026-07-10T15:57:37Z] finished creating resource monitor.instance::storefront-no-image-n1-ant97dj4 (took 15.64025ms)
[2026-07-10T15:57:37Z] creating resource monitor.instance::storefront-no-image-n1-9ptayhma
[2026-07-10T15:57:37Z] creating resource monitor.instance::storefront-no-image-n1-689qacsi
[2026-07-10T15:57:37Z] finished creating resource monitor.instance::storefront-no-image-n1-689qacsi (took 11.953958ms)
[2026-07-10T15:57:37Z] finished creating resource monitor.instance::storefront-no-image-n1-9ptayhma (took 18.93625ms)
[2026-07-10T15:57:38Z] creating resource database.postgres_database::n1:storefront
[2026-07-10T15:57:38Z] finished creating resource database.postgres_database::n1:storefront (took 367.068667ms)

database entity storefront-no-image task 019f4cbe-96fc-7555-bb6f-095b7b86054c completed
  1. Create DB with manifest image
cp1-req create-database < ../demo/Images/create_db_manifest_image.json | cp-follow-task
{
  "database": {
    "created_at": "2026-07-10T16:09:43Z",
    "id": "storefront-manifest-image",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.9-spock5.0.6-standard-2"
        }
      },
      "postgres_version": "17.9",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-10T16:09:43Z"
  },
  "task": {
    "created_at": "2026-07-10T16:09:43Z",
    "database_id": "storefront-manifest-image",
    "entity_id": "storefront-manifest-image",
    "scope": "database",
    "status": "pending",
    "task_id": "019f4cca-bf40-72de-b7dd-0a185f9cce86",
    "type": "create"
  }
}
[2026-07-10T16:09:44Z] refreshing current state
[2026-07-10T16:09:44Z] finished refreshing current state (took 211.905708ms)
[2026-07-10T16:09:47Z] creating resource common.patroni_cluster::n1
[2026-07-10T16:09:47Z] finished creating resource common.patroni_cluster::n1 (took 32.166µs)
[2026-07-10T16:09:47Z] creating resource swarm.network::storefront-manifest-image-database
[2026-07-10T16:09:47Z] finished creating resource swarm.network::storefront-manifest-image-database (took 8.11925ms)
[2026-07-10T16:09:47Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-instance
[2026-07-10T16:09:47Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-instance (took 714.125µs)
[2026-07-10T16:09:47Z] creating resource common.patroni_member::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:47Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-689qacsi (took 18.208µs)
[2026-07-10T16:09:47Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-data
[2026-07-10T16:09:47Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-data (took 1.363625ms)
[2026-07-10T16:09:47Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-certificates
[2026-07-10T16:09:47Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-certificates (took 590µs)
[2026-07-10T16:09:47Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-configs
[2026-07-10T16:09:47Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-configs (took 581.584µs)
[2026-07-10T16:09:47Z] creating resource common.postgres_certs::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:47Z] creating resource common.etcd_creds::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:47Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-689qacsi (took 14.818167ms)
[2026-07-10T16:09:47Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-689qacsi (took 77.156209ms)
[2026-07-10T16:09:48Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:48Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-689qacsi (took 2.778375ms)
[2026-07-10T16:09:48Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:48Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-689qacsi (took 246.459µs)
[2026-07-10T16:09:49Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:49Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-689qacsi (took 2.525417ms)
[2026-07-10T16:09:49Z] creating resource swarm.switchover::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:09:49Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-689qacsi (took 12.125µs)
[2026-07-10T16:09:49Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:10:09Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-689qacsi (took 20.014297176s)
[2026-07-10T16:10:09Z] creating resource database.instance::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:10:19Z] finished creating resource database.instance::storefront-manifest-image-n1-689qacsi (took 10.057459879s)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-instance
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-instance (took 690.542µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-instance
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-instance (took 866.375µs)
[2026-07-10T16:10:20Z] creating resource common.patroni_member::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:20Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-ant97dj4 (took 14.166µs)
[2026-07-10T16:10:20Z] creating resource common.patroni_member::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:20Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-9ptayhma (took 7.458µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-data
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-data (took 886.792µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-certificates
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-certificates (took 616.125µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-configs
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-configs (took 422.75µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-data
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-data (took 672µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-configs
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-configs (took 556.5µs)
[2026-07-10T16:10:20Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-certificates
[2026-07-10T16:10:20Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-certificates (took 547.458µs)
[2026-07-10T16:10:21Z] creating resource common.etcd_creds::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:21Z] creating resource common.postgres_certs::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:21Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-ant97dj4 (took 9.075667ms)
[2026-07-10T16:10:21Z] creating resource common.postgres_certs::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:21Z] creating resource common.etcd_creds::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:21Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-ant97dj4 (took 73.997041ms)
[2026-07-10T16:10:21Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-9ptayhma (took 64.066459ms)
[2026-07-10T16:10:21Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-9ptayhma (took 194.316042ms)
[2026-07-10T16:10:21Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:21Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-ant97dj4 (took 2.412792ms)
[2026-07-10T16:10:21Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:21Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-9ptayhma (took 2.35875ms)
[2026-07-10T16:10:22Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:22Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-ant97dj4 (took 161.416µs)
[2026-07-10T16:10:22Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:22Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-9ptayhma (took 129.75µs)
[2026-07-10T16:10:22Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:22Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-ant97dj4 (took 1.937334ms)
[2026-07-10T16:10:22Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:22Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-9ptayhma (took 1.949875ms)
[2026-07-10T16:10:22Z] creating resource swarm.switchover::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:22Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-ant97dj4 (took 14.292µs)
[2026-07-10T16:10:22Z] creating resource swarm.switchover::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:22Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-9ptayhma (took 14.333µs)
[2026-07-10T16:10:23Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:23Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:43Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-ant97dj4 (took 20.013457717s)
[2026-07-10T16:10:43Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-9ptayhma (took 20.011691759s)
[2026-07-10T16:10:43Z] creating resource database.instance::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:43Z] creating resource database.instance::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:53Z] finished creating resource database.instance::storefront-manifest-image-n1-ant97dj4 (took 10.024973505s)
[2026-07-10T16:10:53Z] finished creating resource database.instance::storefront-manifest-image-n1-9ptayhma (took 10.021085422s)
[2026-07-10T16:10:53Z] creating resource database.node::n1
[2026-07-10T16:10:53Z] finished creating resource database.node::n1 (took 191.833µs)
[2026-07-10T16:10:53Z] creating resource monitor.instance::storefront-manifest-image-n1-ant97dj4
[2026-07-10T16:10:53Z] finished creating resource monitor.instance::storefront-manifest-image-n1-ant97dj4 (took 12.593041ms)
[2026-07-10T16:10:53Z] creating resource monitor.instance::storefront-manifest-image-n1-9ptayhma
[2026-07-10T16:10:53Z] creating resource monitor.instance::storefront-manifest-image-n1-689qacsi
[2026-07-10T16:10:53Z] finished creating resource monitor.instance::storefront-manifest-image-n1-689qacsi (took 11.698583ms)
[2026-07-10T16:10:53Z] finished creating resource monitor.instance::storefront-manifest-image-n1-9ptayhma (took 14.723583ms)
[2026-07-10T16:10:54Z] creating resource database.postgres_database::n1:storefront
[2026-07-10T16:10:54Z] finished creating resource database.postgres_database::n1:storefront (took 324.564541ms)

database entity storefront-manifest-image task 019f4cca-bf40-72de-b7dd-0a185f9cce86 completed
  1. Create DB with wrong pg versions
cp1-req create-database < ../demo/Images/create_db_wrong_pg_version.json
HTTP/1.1 400 Bad Request
Content-Length: 363
Content-Type: application/json
Date: Fri, 10 Jul 2026 16:21:17 GMT
Goa-Error: invalid_input

{
  message: "validation error for node n1, host host-1: image tag postgres version 18.3 does not match spec version 17.9
    validation error for node n1, host host-2: image tag postgres version 18.3 does not match spec version 17.9
    validation error for node n1, host host-3: image tag postgres version 18.3 does not match spec version 17.9"
  name: "invalid_input"
}
  1. Create DB with not available images
cp1-req create-database < ../demo/Images/create_db_lower_image.json

HTTP/1.1 400 Bad Request
Content-Length: 1136
Content-Type: application/json
Date: Fri, 10 Jul 2026 16:22:45 GMT
Goa-Error: invalid_input

{
  message: "validation error for node n1, host host-2: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n2, host host-3: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n2, host host-4: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n1, host host-1: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown"
  name: "invalid_input"
}
  1. Create DB with custom image
cp1-req create-database < ../demo/Images/create_db_custom_image_success.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-10T16:29:58Z",
    "id": "storefront-custom-img",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.9-spock5.0.6-standard-2"
        }
      },
      "postgres_version": "17.9",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-10T16:29:58Z"
  },
  "task": {
    "created_at": "2026-07-10T16:29:58Z",
    "database_id": "storefront-custom-img",
    "entity_id": "storefront-custom-img",
    "scope": "database",
    "status": "pending",
    "task_id": "019f4cdd-4939-7d10-8acd-2fe735613612",
    "type": "create"
  }
}
[2026-07-10T16:29:59Z] refreshing current state
[2026-07-10T16:29:59Z] finished refreshing current state (took 207.813708ms)
[2026-07-10T16:30:01Z] creating resource common.patroni_cluster::n1
[2026-07-10T16:30:01Z] finished creating resource common.patroni_cluster::n1 (took 19.792µs)
[2026-07-10T16:30:01Z] creating resource swarm.network::storefront-custom-img-database
[2026-07-10T16:30:01Z] finished creating resource swarm.network::storefront-custom-img-database (took 6.199417ms)
[2026-07-10T16:30:01Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-instance
[2026-07-10T16:30:01Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-instance (took 756.917µs)
[2026-07-10T16:30:02Z] creating resource common.patroni_member::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:02Z] finished creating resource common.patroni_member::storefront-custom-img-n1-689qacsi (took 19.584µs)
[2026-07-10T16:30:02Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-certificates
[2026-07-10T16:30:02Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-certificates (took 1.049292ms)
[2026-07-10T16:30:02Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-data
[2026-07-10T16:30:02Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-data (took 858.375µs)
[2026-07-10T16:30:02Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-configs
[2026-07-10T16:30:02Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-configs (took 734.584µs)
[2026-07-10T16:30:02Z] creating resource common.postgres_certs::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:02Z] creating resource common.etcd_creds::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:02Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-689qacsi (took 69.00175ms)
[2026-07-10T16:30:02Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-689qacsi (took 95.252ms)
[2026-07-10T16:30:03Z] creating resource swarm.patroni_config::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:03Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-689qacsi (took 2.266875ms)
[2026-07-10T16:30:03Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:03Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi (took 230.417µs)
[2026-07-10T16:30:03Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:03Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi (took 2.402625ms)
[2026-07-10T16:30:04Z] creating resource swarm.switchover::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:04Z] finished creating resource swarm.switchover::storefront-custom-img-n1-689qacsi (took 15.209µs)
[2026-07-10T16:30:04Z] creating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:24Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi (took 20.018430092s)
[2026-07-10T16:30:24Z] creating resource database.instance::storefront-custom-img-n1-689qacsi
[2026-07-10T16:30:34Z] finished creating resource database.instance::storefront-custom-img-n1-689qacsi (took 10.043639004s)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-instance
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-instance (took 587.042µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-instance
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-instance (took 753.875µs)
[2026-07-10T16:30:35Z] creating resource common.patroni_member::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:35Z] finished creating resource common.patroni_member::storefront-custom-img-n1-9ptayhma (took 11.75µs)
[2026-07-10T16:30:35Z] creating resource common.patroni_member::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:35Z] finished creating resource common.patroni_member::storefront-custom-img-n1-ant97dj4 (took 7.542µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-data
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-data (took 475.167µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-configs
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-configs (took 567.917µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-certificates
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-certificates (took 464.417µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-configs
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-configs (took 652.167µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-data
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-data (took 695.792µs)
[2026-07-10T16:30:35Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-certificates
[2026-07-10T16:30:35Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-certificates (took 487.125µs)
[2026-07-10T16:30:36Z] creating resource common.etcd_creds::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:36Z] creating resource common.postgres_certs::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:36Z] creating resource common.etcd_creds::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:36Z] creating resource common.postgres_certs::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:36Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-ant97dj4 (took 75.753125ms)
[2026-07-10T16:30:36Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-9ptayhma (took 69.389083ms)
[2026-07-10T16:30:36Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-ant97dj4 (took 9.386083ms)
[2026-07-10T16:30:36Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-9ptayhma (took 13.571125ms)
[2026-07-10T16:30:36Z] creating resource swarm.patroni_config::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:36Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-ant97dj4 (took 2.630083ms)
[2026-07-10T16:30:36Z] creating resource swarm.patroni_config::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:36Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-9ptayhma (took 2.1965ms)
[2026-07-10T16:30:37Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:37Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4 (took 136.792µs)
[2026-07-10T16:30:37Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:37Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma (took 123.625µs)
[2026-07-10T16:30:37Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:37Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4 (took 2.287209ms)
[2026-07-10T16:30:37Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:37Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma (took 1.485834ms)
[2026-07-10T16:30:37Z] creating resource swarm.switchover::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:37Z] finished creating resource swarm.switchover::storefront-custom-img-n1-ant97dj4 (took 12.875µs)
[2026-07-10T16:30:37Z] creating resource swarm.switchover::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:37Z] finished creating resource swarm.switchover::storefront-custom-img-n1-9ptayhma (took 14.167µs)
[2026-07-10T16:30:37Z] creating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:38Z] creating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:30:58Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4 (took 20.011605676s)
[2026-07-10T16:30:58Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma (took 20.010301801s)
[2026-07-10T16:30:58Z] creating resource database.instance::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:30:58Z] creating resource database.instance::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:31:08Z] finished creating resource database.instance::storefront-custom-img-n1-ant97dj4 (took 10.027166004s)
[2026-07-10T16:31:08Z] finished creating resource database.instance::storefront-custom-img-n1-9ptayhma (took 10.020927005s)
[2026-07-10T16:31:08Z] creating resource database.node::n1
[2026-07-10T16:31:08Z] finished creating resource database.node::n1 (took 142.958µs)
[2026-07-10T16:31:08Z] creating resource monitor.instance::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:31:08Z] finished creating resource monitor.instance::storefront-custom-img-n1-ant97dj4 (took 21.35825ms)
[2026-07-10T16:31:08Z] creating resource monitor.instance::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:31:08Z] creating resource monitor.instance::storefront-custom-img-n1-689qacsi
[2026-07-10T16:31:08Z] finished creating resource monitor.instance::storefront-custom-img-n1-9ptayhma (took 18.935833ms)
[2026-07-10T16:31:08Z] finished creating resource monitor.instance::storefront-custom-img-n1-689qacsi (took 14.15725ms)
[2026-07-10T16:31:09Z] creating resource database.postgres_database::n1:storefront
[2026-07-10T16:31:09Z] finished creating resource database.postgres_database::n1:storefront (took 395.819708ms)

database entity storefront-custom-img task 019f4cdd-4939-7d10-8acd-2fe735613612 completed
  1. Update the databse created using custom image
cp1-req update-database storefront-custom-img < ../demo/Images/update_db_spock_patch_upgrade.json | cp-follow-task
{
  "database": {
    "created_at": "2026-07-10T16:29:58Z",
    "id": "storefront-custom-img",
    "instances": [
      {
        "created_at": "2026-07-10T16:30:01Z",
        "host_id": "host-1",
        "id": "storefront-custom-img-n1-689qacsi",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "primary",
          "version": "17.9"
        },
        "spock": {
          "read_only": "off",
          "version": "5.0.6"
        },
        "state": "available",
        "status_updated_at": "2026-07-10T16:40:53Z",
        "updated_at": "2026-07-10T16:30:34Z"
      },
      {
        "created_at": "2026-07-10T16:30:34Z",
        "host_id": "host-2",
        "id": "storefront-custom-img-n1-9ptayhma",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "replica",
          "version": "17.9"
        },
        "state": "available",
        "status_updated_at": "2026-07-10T16:40:53Z",
        "updated_at": "2026-07-10T16:31:08Z"
      },
      {
        "created_at": "2026-07-10T16:30:34Z",
        "host_id": "host-3",
        "id": "storefront-custom-img-n1-ant97dj4",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "replica",
          "version": "17.9"
        },
        "state": "available",
        "status_updated_at": "2026-07-10T16:40:53Z",
        "updated_at": "2026-07-10T16:31:08Z"
      }
    ],
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.9-standard-1"
        }
      },
      "postgres_version": "17.10",
      "spock_version": "5"
    },
    "state": "modifying",
    "updated_at": "2026-07-10T16:40:54Z"
  },
  "task": {
    "created_at": "2026-07-10T16:40:54Z",
    "database_id": "storefront-custom-img",
    "entity_id": "storefront-custom-img",
    "scope": "database",
    "status": "pending",
    "task_id": "019f4ce7-4bfe-7d26-a53a-c80752eb1185",
    "type": "update"
  }
}
[2026-07-10T16:40:56Z] refreshing current state
[2026-07-10T16:41:04Z] finished refreshing current state (took 8.197391463s)
[2026-07-10T16:41:06Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:06Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma (took 152.75µs)
[2026-07-10T16:41:07Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:07Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma (took 5.825458ms)
[2026-07-10T16:41:07Z] updating resource swarm.switchover::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:07Z] finished updating resource swarm.switchover::storefront-custom-img-n1-9ptayhma (took 1.690209ms)
[2026-07-10T16:41:07Z] updating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:32Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma (took 25.012387136s)
[2026-07-10T16:41:33Z] updating resource database.instance::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:43Z] finished updating resource database.instance::storefront-custom-img-n1-9ptayhma (took 10.013509796s)
[2026-07-10T16:41:43Z] updating resource database.node::n1
[2026-07-10T16:41:43Z] finished updating resource database.node::n1 (took 116.917µs)
[2026-07-10T16:41:43Z] updating resource monitor.instance::storefront-custom-img-n1-9ptayhma
[2026-07-10T16:41:43Z] finished updating resource monitor.instance::storefront-custom-img-n1-9ptayhma (took 15.783417ms)
[2026-07-10T16:41:43Z] updating resource database.postgres_database::n1:storefront
[2026-07-10T16:41:43Z] finished updating resource database.postgres_database::n1:storefront (took 26.409625ms)
[2026-07-10T16:41:44Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:41:44Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4 (took 145µs)
[2026-07-10T16:41:44Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:41:44Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4 (took 4.806541ms)
[2026-07-10T16:41:44Z] updating resource swarm.switchover::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:41:44Z] finished updating resource swarm.switchover::storefront-custom-img-n1-ant97dj4 (took 2.97575ms)
[2026-07-10T16:41:44Z] updating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:42:09Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4 (took 25.013117803s)
[2026-07-10T16:42:10Z] updating resource database.instance::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:42:20Z] finished updating resource database.instance::storefront-custom-img-n1-ant97dj4 (took 10.01397638s)
[2026-07-10T16:42:20Z] updating resource database.node::n1
[2026-07-10T16:42:20Z] finished updating resource database.node::n1 (took 104.292µs)
[2026-07-10T16:42:20Z] updating resource monitor.instance::storefront-custom-img-n1-ant97dj4
[2026-07-10T16:42:20Z] finished updating resource monitor.instance::storefront-custom-img-n1-ant97dj4 (took 13.288584ms)
[2026-07-10T16:42:20Z] updating resource database.postgres_database::n1:storefront
[2026-07-10T16:42:20Z] finished updating resource database.postgres_database::n1:storefront (took 25.866084ms)
[2026-07-10T16:42:21Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi
[2026-07-10T16:42:21Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi (took 155.125µs)
[2026-07-10T16:42:21Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi
[2026-07-10T16:42:21Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi (took 4.758208ms)
[2026-07-10T16:42:21Z] updating resource swarm.switchover::storefront-custom-img-n1-689qacsi
[2026-07-10T16:42:33Z] finished updating resource swarm.switchover::storefront-custom-img-n1-689qacsi (took 12.061781922s)
[2026-07-10T16:42:34Z] updating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi
[2026-07-10T16:42:59Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi (took 25.016098219s)
[2026-07-10T16:42:59Z] updating resource database.instance::storefront-custom-img-n1-689qacsi
[2026-07-10T16:43:09Z] finished updating resource database.instance::storefront-custom-img-n1-689qacsi (took 10.013919379s)
[2026-07-10T16:43:09Z] updating resource database.node::n1
[2026-07-10T16:43:09Z] finished updating resource database.node::n1 (took 120.875µs)
[2026-07-10T16:43:09Z] updating resource monitor.instance::storefront-custom-img-n1-689qacsi
[2026-07-10T16:43:09Z] finished updating resource monitor.instance::storefront-custom-img-n1-689qacsi (took 13.666208ms)
[2026-07-10T16:43:10Z] updating resource database.postgres_database::n1:storefront
[2026-07-10T16:43:10Z] finished updating resource database.postgres_database::n1:storefront (took 58.575875ms)
[2026-07-10T16:43:10Z] creating resource database.switchover::storefront-custom-img-n1-689qacsi
[2026-07-10T16:43:26Z] finished creating resource database.switchover::storefront-custom-img-n1-689qacsi (took 16.065814132s)

database entity storefront-custom-img task 019f4ce7-4bfe-7d26-a53a-c80752eb1185 completed

Checklist

  • Tests added or updated

PLAT-641

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 34cff77f-5197-4399-ab6c-947215f96cce

📥 Commits

Reviewing files that changed from the base of the PR and between e56ece7 and 32146e2.

📒 Files selected for processing (3)
  • server/internal/orchestrator/swarm/image_tag.go
  • server/internal/orchestrator/swarm/image_tag_test.go
  • server/internal/orchestrator/swarm/validate_instance_specs_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • server/internal/orchestrator/swarm/image_tag_test.go
  • server/internal/orchestrator/swarm/image_tag.go
  • server/internal/orchestrator/swarm/validate_instance_specs_test.go

📝 Walkthrough

Walkthrough

Changes

Swarm image validation

Layer / File(s) Summary
Pinned service versions
server/internal/orchestrator/swarm/version-manifest.json, server/internal/orchestrator/swarm/*_test.go
PostgREST, MCP, and RAG manifest entries and related tests now use pinned versions instead of latest.
Image tag parsing
server/internal/orchestrator/swarm/image_tag.go, server/internal/orchestrator/swarm/image_tag_test.go
Adds pgEdge image-tag parsing and version-prefix comparison with table-driven tests.
Instance image validation
server/internal/orchestrator/swarm/orchestrator.go, server/internal/orchestrator/swarm/validate_instance_specs_test.go, server/internal/database/orchestrator.go
Validates recognized override tags against PostgreSQL and Spock versions and covers matching, mismatching, digest, and unrecognized tags.

Poem

A rabbit checks each image tag,
With carrots packed in a tiny bag.
“Pinned versions hop just right!”
Spock and Postgres shine bright.
Tests thump softly: all is snug.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: version-aware validation for custom image tags.
Description check ✅ Passed The PR description includes the required sections and provides concrete summary, changes, testing, and checklist details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch PLAT-641-enforce-version-aware-tag-format-for-custom-image-overrides

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codacy-production

codacy-production Bot commented Jul 10, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 10 complexity · 0 duplication

Metric Results
Complexity 10
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
server/internal/orchestrator/swarm/rag_instance_resources_test.go (1)

206-222: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update stale comment referencing "rag/latest".

Line 208 comment says // Override the "rag/latest" image but the code now overrides "rag/1.0.0". Update the comment to match.

📝 Proposed fix for stale comment
-	// Override the "rag/latest" image with a constraint requiring PG >= 18.
+	// Override the "rag/1.0.0" image with a constraint requiring PG >= 18.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@server/internal/orchestrator/swarm/rag_instance_resources_test.go` around
lines 206 - 222, Update the stale comment in
TestGenerateRAGInstanceResources_IncompatibleVersion to reference the
"rag/1.0.0" image instead of "rag/latest", matching the service image being
overridden by addServiceImage.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@server/internal/orchestrator/swarm/orchestrator.go`:
- Around line 1134-1153: Guard both version pointers before calling
versionHasPrefix in the validation block around parseImageTag: when
cur.PgEdgeVersion is present but PostgresVersion or SpockVersion is nil, append
an appropriate validation error to errs and avoid dereferencing or validating
the missing value. Preserve the existing mismatch checks for non-nil versions
and return the invalid ValidationResult consistently.

---

Outside diff comments:
In `@server/internal/orchestrator/swarm/rag_instance_resources_test.go`:
- Around line 206-222: Update the stale comment in
TestGenerateRAGInstanceResources_IncompatibleVersion to reference the
"rag/1.0.0" image instead of "rag/latest", matching the service image being
overridden by addServiceImage.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 961a90f4-c8bb-4446-97ae-d2db1083502e

📥 Commits

Reviewing files that changed from the base of the PR and between 38d4056 and f9073e8.

📒 Files selected for processing (10)
  • server/internal/database/orchestrator.go
  • server/internal/orchestrator/swarm/image_tag.go
  • server/internal/orchestrator/swarm/image_tag_test.go
  • server/internal/orchestrator/swarm/orchestrator.go
  • server/internal/orchestrator/swarm/rag_instance_resources_test.go
  • server/internal/orchestrator/swarm/rag_service_keys_resource_test.go
  • server/internal/orchestrator/swarm/resolve_service_image_test.go
  • server/internal/orchestrator/swarm/service_images_test.go
  • server/internal/orchestrator/swarm/validate_instance_specs_test.go
  • server/internal/orchestrator/swarm/version-manifest.json

Comment thread server/internal/orchestrator/swarm/orchestrator.go Outdated
@tsivaprasad
tsivaprasad requested a review from jason-lynch July 10, 2026 19:17

@mmols mmols left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few questions on this one before we merge

Comment thread server/internal/orchestrator/swarm/orchestrator.go Outdated
Comment thread server/internal/orchestrator/swarm/image_tag_test.go
Comment thread server/internal/orchestrator/swarm/orchestrator.go Outdated
@tsivaprasad

tsivaprasad commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

1. No image override — uses manifest default

create_db_with_no_image.json

cp1-req create-database < ../demo/Images/create_db_with_no_image.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_with_no_image.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T14:21:21Z",
    "id": "storefront-no-image",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "postgres_version": "18.4",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T14:21:21Z"
  },
  "task": {
    "created_at": "2026-07-14T14:21:21Z",
    "database_id": "storefront-no-image",
    "entity_id": "storefront-no-image",
    "scope": "database",
    "status": "pending",
    "task_id": "019f6100-fa92-75d7-b7df-0f90851b90bc",
    "type": "create"
  }
}
[2026-07-14T14:21:23Z] refreshing current state
[2026-07-14T14:21:23Z] finished refreshing current state (took 193.889291ms)
[2026-07-14T14:21:25Z] creating resource common.patroni_cluster::n1
[2026-07-14T14:21:25Z] finished creating resource common.patroni_cluster::n1 (took 13.917µs)
[2026-07-14T14:21:25Z] creating resource swarm.network::storefront-no-image-database
[2026-07-14T14:21:25Z] finished creating resource swarm.network::storefront-no-image-database (took 5.750084ms)
[2026-07-14T14:21:25Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-instance
[2026-07-14T14:21:25Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-instance (took 1.092667ms)
[2026-07-14T14:21:25Z] creating resource common.patroni_member::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:25Z] finished creating resource common.patroni_member::storefront-no-image-n1-689qacsi (took 14.25µs)
[2026-07-14T14:21:26Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-configs
[2026-07-14T14:21:26Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-configs (took 1.099792ms)
[2026-07-14T14:21:26Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-certificates
[2026-07-14T14:21:26Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-certificates (took 802.125µs)
[2026-07-14T14:21:26Z] creating resource filesystem.dir::storefront-no-image-n1-689qacsi-data
[2026-07-14T14:21:26Z] finished creating resource filesystem.dir::storefront-no-image-n1-689qacsi-data (took 751.709µs)
[2026-07-14T14:21:26Z] creating resource common.etcd_creds::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:26Z] creating resource common.postgres_certs::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:26Z] finished creating resource common.postgres_certs::storefront-no-image-n1-689qacsi (took 10.021041ms)
[2026-07-14T14:21:26Z] finished creating resource common.etcd_creds::storefront-no-image-n1-689qacsi (took 73.23525ms)
[2026-07-14T14:21:26Z] creating resource swarm.patroni_config::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:26Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-689qacsi (took 3.341041ms)
[2026-07-14T14:21:27Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:27Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-689qacsi (took 188.75µs)
[2026-07-14T14:21:27Z] creating resource swarm.check_will_restart::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:27Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-689qacsi (took 2.622875ms)
[2026-07-14T14:21:27Z] creating resource swarm.switchover::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:27Z] finished creating resource swarm.switchover::storefront-no-image-n1-689qacsi (took 15µs)
[2026-07-14T14:21:28Z] creating resource swarm.postgres_service::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:48Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-689qacsi (took 20.017308385s)
[2026-07-14T14:21:48Z] creating resource database.instance::storefront-no-image-n1-689qacsi
[2026-07-14T14:21:58Z] finished creating resource database.instance::storefront-no-image-n1-689qacsi (took 10.058353337s)
[2026-07-14T14:21:58Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-instance
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-instance (took 777.791µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-instance
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-instance (took 798.709µs)
[2026-07-14T14:21:59Z] creating resource common.patroni_member::storefront-no-image-n1-9ptayhma
[2026-07-14T14:21:59Z] finished creating resource common.patroni_member::storefront-no-image-n1-9ptayhma (took 26.541µs)
[2026-07-14T14:21:59Z] creating resource common.patroni_member::storefront-no-image-n1-ant97dj4
[2026-07-14T14:21:59Z] finished creating resource common.patroni_member::storefront-no-image-n1-ant97dj4 (took 8.958µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-configs
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-configs (took 1.402709ms)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-data
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-data (took 459.375µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-certificates
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-ant97dj4-certificates (took 552.333µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-configs
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-configs (took 464.542µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-certificates
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-certificates (took 418.958µs)
[2026-07-14T14:21:59Z] creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-data
[2026-07-14T14:21:59Z] finished creating resource filesystem.dir::storefront-no-image-n1-9ptayhma-data (took 600.541µs)
[2026-07-14T14:21:59Z] creating resource common.postgres_certs::storefront-no-image-n1-ant97dj4
[2026-07-14T14:21:59Z] creating resource common.etcd_creds::storefront-no-image-n1-ant97dj4
[2026-07-14T14:21:59Z] finished creating resource common.postgres_certs::storefront-no-image-n1-ant97dj4 (took 15.623042ms)
[2026-07-14T14:21:59Z] creating resource common.postgres_certs::storefront-no-image-n1-9ptayhma
[2026-07-14T14:21:59Z] creating resource common.etcd_creds::storefront-no-image-n1-9ptayhma
[2026-07-14T14:21:59Z] finished creating resource common.etcd_creds::storefront-no-image-n1-ant97dj4 (took 75.175042ms)
[2026-07-14T14:21:59Z] finished creating resource common.etcd_creds::storefront-no-image-n1-9ptayhma (took 67.125ms)
[2026-07-14T14:22:00Z] finished creating resource common.postgres_certs::storefront-no-image-n1-9ptayhma (took 204.036ms)
[2026-07-14T14:22:00Z] creating resource swarm.patroni_config::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:00Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-ant97dj4 (took 2.281625ms)
[2026-07-14T14:22:00Z] creating resource swarm.patroni_config::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:00Z] finished creating resource swarm.patroni_config::storefront-no-image-n1-9ptayhma (took 3.289541ms)
[2026-07-14T14:22:00Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:00Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-ant97dj4 (took 159.625µs)
[2026-07-14T14:22:00Z] creating resource swarm.postgres_service_spec::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:00Z] finished creating resource swarm.postgres_service_spec::storefront-no-image-n1-9ptayhma (took 135.459µs)
[2026-07-14T14:22:01Z] creating resource swarm.check_will_restart::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:01Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-ant97dj4 (took 1.80525ms)
[2026-07-14T14:22:01Z] creating resource swarm.check_will_restart::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:01Z] finished creating resource swarm.check_will_restart::storefront-no-image-n1-9ptayhma (took 1.698208ms)
[2026-07-14T14:22:01Z] creating resource swarm.switchover::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:01Z] finished creating resource swarm.switchover::storefront-no-image-n1-ant97dj4 (took 18.541µs)
[2026-07-14T14:22:01Z] creating resource swarm.switchover::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:01Z] finished creating resource swarm.switchover::storefront-no-image-n1-9ptayhma (took 15µs)
[2026-07-14T14:22:01Z] creating resource swarm.postgres_service::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:01Z] creating resource swarm.postgres_service::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:21Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-9ptayhma (took 20.011516509s)
[2026-07-14T14:22:21Z] finished creating resource swarm.postgres_service::storefront-no-image-n1-ant97dj4 (took 20.165204342s)
[2026-07-14T14:22:22Z] creating resource database.instance::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:22Z] creating resource database.instance::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:32Z] finished creating resource database.instance::storefront-no-image-n1-ant97dj4 (took 10.029325088s)
[2026-07-14T14:22:32Z] finished creating resource database.instance::storefront-no-image-n1-9ptayhma (took 10.022160922s)
[2026-07-14T14:22:32Z] creating resource database.node::n1
[2026-07-14T14:22:32Z] finished creating resource database.node::n1 (took 308.5µs)
[2026-07-14T14:22:32Z] creating resource monitor.instance::storefront-no-image-n1-ant97dj4
[2026-07-14T14:22:32Z] finished creating resource monitor.instance::storefront-no-image-n1-ant97dj4 (took 15.605709ms)
[2026-07-14T14:22:32Z] creating resource monitor.instance::storefront-no-image-n1-689qacsi
[2026-07-14T14:22:32Z] finished creating resource monitor.instance::storefront-no-image-n1-689qacsi (took 12.974375ms)
[2026-07-14T14:22:32Z] creating resource monitor.instance::storefront-no-image-n1-9ptayhma
[2026-07-14T14:22:32Z] finished creating resource monitor.instance::storefront-no-image-n1-9ptayhma (took 11.0185ms)
[2026-07-14T14:22:33Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T14:22:33Z] finished creating resource database.postgres_database::n1:storefront (took 347.458459ms)

database entity storefront-no-image task 019f6100-fa92-75d7-b7df-0f90851b90bc completed

2. Exact manifest image — recognized tag, versions match

create_db_manifest_image.json

cp1-req create-database < ../demo/Images/create_db_manifest_image.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_manifest_image.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T14:23:48Z",
    "id": "storefront-manifest-image",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.9-spock5.0.6-standard-2"
        }
      },
      "postgres_version": "17.9",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T14:23:48Z"
  },
  "task": {
    "created_at": "2026-07-14T14:23:48Z",
    "database_id": "storefront-manifest-image",
    "entity_id": "storefront-manifest-image",
    "scope": "database",
    "status": "pending",
    "task_id": "019f6103-38eb-73f8-a36a-718dec3a3190",
    "type": "create"
  }
}
[2026-07-14T14:23:50Z] refreshing current state
[2026-07-14T14:23:50Z] finished refreshing current state (took 196.704667ms)
[2026-07-14T14:23:52Z] creating resource common.patroni_cluster::n1
[2026-07-14T14:23:52Z] finished creating resource common.patroni_cluster::n1 (took 42.875µs)
[2026-07-14T14:23:52Z] creating resource swarm.network::storefront-manifest-image-database
[2026-07-14T14:23:52Z] finished creating resource swarm.network::storefront-manifest-image-database (took 7.278375ms)
[2026-07-14T14:23:52Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-instance
[2026-07-14T14:23:52Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-instance (took 2.15075ms)
[2026-07-14T14:23:52Z] creating resource common.patroni_member::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:52Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-689qacsi (took 11.042µs)
[2026-07-14T14:23:53Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-data
[2026-07-14T14:23:53Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-data (took 1.37725ms)
[2026-07-14T14:23:53Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-configs
[2026-07-14T14:23:53Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-configs (took 738.125µs)
[2026-07-14T14:23:53Z] creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-certificates
[2026-07-14T14:23:53Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-689qacsi-certificates (took 680.334µs)
[2026-07-14T14:23:53Z] creating resource common.etcd_creds::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:53Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-689qacsi (took 75.661958ms)
[2026-07-14T14:23:53Z] creating resource common.postgres_certs::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:53Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-689qacsi (took 5.959959ms)
[2026-07-14T14:23:54Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:54Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-689qacsi (took 3.210792ms)
[2026-07-14T14:23:54Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:54Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-689qacsi (took 197.792µs)
[2026-07-14T14:23:54Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:54Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-689qacsi (took 2.128666ms)
[2026-07-14T14:23:55Z] creating resource swarm.switchover::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:23:55Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-689qacsi (took 21.25µs)
[2026-07-14T14:23:55Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:24:15Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-689qacsi (took 20.014380051s)
[2026-07-14T14:24:15Z] creating resource database.instance::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:24:25Z] finished creating resource database.instance::storefront-manifest-image-n1-689qacsi (took 10.053053671s)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-instance
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-instance (took 453.375µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-instance
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-instance (took 510.25µs)
[2026-07-14T14:24:26Z] creating resource common.patroni_member::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:26Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-9ptayhma (took 8.333µs)
[2026-07-14T14:24:26Z] creating resource common.patroni_member::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:26Z] finished creating resource common.patroni_member::storefront-manifest-image-n1-ant97dj4 (took 7.833µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-data
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-data (took 755.625µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-certificates
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-certificates (took 507.25µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-configs
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-ant97dj4-configs (took 547.166µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-certificates
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-certificates (took 423.5µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-data
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-data (took 406.5µs)
[2026-07-14T14:24:26Z] creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-configs
[2026-07-14T14:24:26Z] finished creating resource filesystem.dir::storefront-manifest-image-n1-9ptayhma-configs (took 538.5µs)
[2026-07-14T14:24:26Z] creating resource common.etcd_creds::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:26Z] creating resource common.postgres_certs::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:26Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-ant97dj4 (took 8.917417ms)
[2026-07-14T14:24:26Z] creating resource common.etcd_creds::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:27Z] creating resource common.postgres_certs::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:27Z] finished creating resource common.postgres_certs::storefront-manifest-image-n1-9ptayhma (took 7.765ms)
[2026-07-14T14:24:27Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-ant97dj4 (took 73.237917ms)
[2026-07-14T14:24:27Z] finished creating resource common.etcd_creds::storefront-manifest-image-n1-9ptayhma (took 64.358459ms)
[2026-07-14T14:24:27Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:27Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-ant97dj4 (took 2.250083ms)
[2026-07-14T14:24:27Z] creating resource swarm.patroni_config::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:27Z] finished creating resource swarm.patroni_config::storefront-manifest-image-n1-9ptayhma (took 1.944208ms)
[2026-07-14T14:24:27Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:27Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-ant97dj4 (took 116.542µs)
[2026-07-14T14:24:27Z] creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:27Z] finished creating resource swarm.postgres_service_spec::storefront-manifest-image-n1-9ptayhma (took 94.459µs)
[2026-07-14T14:24:28Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:28Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-9ptayhma (took 1.626375ms)
[2026-07-14T14:24:28Z] creating resource swarm.check_will_restart::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:28Z] finished creating resource swarm.check_will_restart::storefront-manifest-image-n1-ant97dj4 (took 1.386209ms)
[2026-07-14T14:24:28Z] creating resource swarm.switchover::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:28Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-ant97dj4 (took 13.667µs)
[2026-07-14T14:24:28Z] creating resource swarm.switchover::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:28Z] finished creating resource swarm.switchover::storefront-manifest-image-n1-9ptayhma (took 12.5µs)
[2026-07-14T14:24:28Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:28Z] creating resource swarm.postgres_service::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:48Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-9ptayhma (took 20.013465468s)
[2026-07-14T14:24:48Z] finished creating resource swarm.postgres_service::storefront-manifest-image-n1-ant97dj4 (took 20.010248218s)
[2026-07-14T14:24:48Z] creating resource database.instance::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:48Z] creating resource database.instance::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:58Z] finished creating resource database.instance::storefront-manifest-image-n1-ant97dj4 (took 10.021881338s)
[2026-07-14T14:24:59Z] finished creating resource database.instance::storefront-manifest-image-n1-9ptayhma (took 10.019867505s)
[2026-07-14T14:24:59Z] creating resource database.node::n1
[2026-07-14T14:24:59Z] finished creating resource database.node::n1 (took 104.583µs)
[2026-07-14T14:24:59Z] creating resource monitor.instance::storefront-manifest-image-n1-ant97dj4
[2026-07-14T14:24:59Z] finished creating resource monitor.instance::storefront-manifest-image-n1-ant97dj4 (took 13.236834ms)
[2026-07-14T14:24:59Z] creating resource monitor.instance::storefront-manifest-image-n1-689qacsi
[2026-07-14T14:24:59Z] finished creating resource monitor.instance::storefront-manifest-image-n1-689qacsi (took 11.537875ms)
[2026-07-14T14:24:59Z] creating resource monitor.instance::storefront-manifest-image-n1-9ptayhma
[2026-07-14T14:24:59Z] finished creating resource monitor.instance::storefront-manifest-image-n1-9ptayhma (took 11.409458ms)
[2026-07-14T14:24:59Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T14:25:00Z] finished creating resource database.postgres_database::n1:storefront (took 358.55ms)

database entity storefront-manifest-image task 019f6103-38eb-73f8-a36a-718dec3a3190 completed

3. Wrong pg version — REJECTED (400)

create_db_wrong_pg_version.json

expect: "image tag postgres version 18.3 does not match spec version 17.9"

cp1-req create-database < ../demo/Images/create_db_wrong_pg_version.json

cp1-req create-database < ../demo/Images/create_db_wrong_pg_version.json

HTTP/1.1 400 Bad Request
Content-Length: 363
Content-Type: application/json
Date: Tue, 14 Jul 2026 14:26:27 GMT
Goa-Error: invalid_input

{
  message: "validation error for node n1, host host-2: image tag postgres version 18.3 does not match spec version 17.9
    validation error for node n1, host host-3: image tag postgres version 18.3 does not match spec version 17.9
    validation error for node n1, host host-1: image tag postgres version 18.3 does not match spec version 17.9"
  name: "invalid_input"
}

4. Image not in registry — REJECTED (400)

create_db_lower_image.json

expect: "manifest unknown"

cp1-req create-database < ../demo/Images/create_db_lower_image.json

cp1-req create-database < ../demo/Images/create_db_lower_image.json

HTTP/1.1 400 Bad Request
Content-Length: 1136
Content-Type: application/json
Date: Tue, 14 Jul 2026 14:28:15 GMT
Goa-Error: invalid_input

{
  message: "validation error for node n1, host host-1: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n1, host host-2: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n2, host host-3: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown
    validation error for node n2, host host-4: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.9-spock4.0.0-standard-1\" not found or inaccessible: Error response from daemon: manifest unknown"
  name: "invalid_input"
}

5. Custom image, versions match — accepted, creates cluster

create_db_custom_image_success.json

cp1-req create-database < ../demo/Images/create_db_custom_image_success.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_custom_image_success.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T14:28:48Z",
    "id": "storefront-custom-img",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.9-spock5.0.6-standard-2"
        }
      },
      "postgres_version": "17.9",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T14:28:48Z"
  },
  "task": {
    "created_at": "2026-07-14T14:28:48Z",
    "database_id": "storefront-custom-img",
    "entity_id": "storefront-custom-img",
    "scope": "database",
    "status": "pending",
    "task_id": "019f6107-c956-7612-a051-eb5877cfdf69",
    "type": "create"
  }
}
[2026-07-14T14:28:49Z] refreshing current state
[2026-07-14T14:28:49Z] finished refreshing current state (took 211.406667ms)
[2026-07-14T14:28:51Z] creating resource common.patroni_cluster::n1
[2026-07-14T14:28:51Z] finished creating resource common.patroni_cluster::n1 (took 8.083µs)
[2026-07-14T14:28:51Z] creating resource swarm.network::storefront-custom-img-database
[2026-07-14T14:28:51Z] finished creating resource swarm.network::storefront-custom-img-database (took 5.7175ms)
[2026-07-14T14:28:51Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-instance
[2026-07-14T14:28:51Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-instance (took 1.11025ms)
[2026-07-14T14:28:51Z] creating resource common.patroni_member::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:51Z] finished creating resource common.patroni_member::storefront-custom-img-n1-689qacsi (took 11.958µs)
[2026-07-14T14:28:52Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-certificates
[2026-07-14T14:28:52Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-certificates (took 732.25µs)
[2026-07-14T14:28:52Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-data
[2026-07-14T14:28:52Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-data (took 1.049625ms)
[2026-07-14T14:28:52Z] creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-configs
[2026-07-14T14:28:52Z] finished creating resource filesystem.dir::storefront-custom-img-n1-689qacsi-configs (took 810.625µs)
[2026-07-14T14:28:52Z] creating resource common.postgres_certs::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:52Z] creating resource common.etcd_creds::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:52Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-689qacsi (took 76.406667ms)
[2026-07-14T14:28:52Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-689qacsi (took 215.903126ms)
[2026-07-14T14:28:53Z] creating resource swarm.patroni_config::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:53Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-689qacsi (took 2.4005ms)
[2026-07-14T14:28:53Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:53Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi (took 398.25µs)
[2026-07-14T14:28:53Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:53Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi (took 2.077458ms)
[2026-07-14T14:28:54Z] creating resource swarm.switchover::storefront-custom-img-n1-689qacsi
[2026-07-14T14:28:54Z] finished creating resource swarm.switchover::storefront-custom-img-n1-689qacsi (took 17.333µs)
[2026-07-14T14:28:54Z] creating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi
[2026-07-14T14:29:14Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi (took 20.013555801s)
[2026-07-14T14:29:14Z] creating resource database.instance::storefront-custom-img-n1-689qacsi
[2026-07-14T14:29:24Z] finished creating resource database.instance::storefront-custom-img-n1-689qacsi (took 10.042717171s)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-instance
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-instance (took 743.583µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-instance
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-instance (took 450.375µs)
[2026-07-14T14:29:25Z] creating resource common.patroni_member::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:25Z] finished creating resource common.patroni_member::storefront-custom-img-n1-9ptayhma (took 8.208µs)
[2026-07-14T14:29:25Z] creating resource common.patroni_member::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:25Z] finished creating resource common.patroni_member::storefront-custom-img-n1-ant97dj4 (took 7.959µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-data
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-data (took 705.208µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-certificates
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-certificates (took 703.625µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-configs
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-ant97dj4-configs (took 532.917µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-configs
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-configs (took 515.042µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-data
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-data (took 540.334µs)
[2026-07-14T14:29:25Z] creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-certificates
[2026-07-14T14:29:25Z] finished creating resource filesystem.dir::storefront-custom-img-n1-9ptayhma-certificates (took 644.208µs)
[2026-07-14T14:29:26Z] creating resource common.etcd_creds::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:26Z] creating resource common.postgres_certs::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:26Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-ant97dj4 (took 12.621959ms)
[2026-07-14T14:29:26Z] creating resource common.etcd_creds::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:26Z] creating resource common.postgres_certs::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:26Z] finished creating resource common.postgres_certs::storefront-custom-img-n1-9ptayhma (took 7.703625ms)
[2026-07-14T14:29:26Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-ant97dj4 (took 77.337333ms)
[2026-07-14T14:29:26Z] finished creating resource common.etcd_creds::storefront-custom-img-n1-9ptayhma (took 66.302417ms)
[2026-07-14T14:29:26Z] creating resource swarm.patroni_config::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:26Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-ant97dj4 (took 2.547041ms)
[2026-07-14T14:29:26Z] creating resource swarm.patroni_config::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:26Z] finished creating resource swarm.patroni_config::storefront-custom-img-n1-9ptayhma (took 2.531667ms)
[2026-07-14T14:29:26Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:26Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4 (took 148.125µs)
[2026-07-14T14:29:26Z] creating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:26Z] finished creating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma (took 116.458µs)
[2026-07-14T14:29:27Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:27Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4 (took 2.024208ms)
[2026-07-14T14:29:27Z] creating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:27Z] finished creating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma (took 1.967208ms)
[2026-07-14T14:29:27Z] creating resource swarm.switchover::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:27Z] finished creating resource swarm.switchover::storefront-custom-img-n1-ant97dj4 (took 21.042µs)
[2026-07-14T14:29:27Z] creating resource swarm.switchover::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:27Z] finished creating resource swarm.switchover::storefront-custom-img-n1-9ptayhma (took 13.917µs)
[2026-07-14T14:29:27Z] creating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:27Z] creating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:47Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma (took 20.013221717s)
[2026-07-14T14:29:47Z] finished creating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4 (took 20.008411676s)
[2026-07-14T14:29:48Z] creating resource database.instance::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:48Z] creating resource database.instance::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:58Z] finished creating resource database.instance::storefront-custom-img-n1-ant97dj4 (took 10.01934217s)
[2026-07-14T14:29:58Z] finished creating resource database.instance::storefront-custom-img-n1-9ptayhma (took 10.017097046s)
[2026-07-14T14:29:58Z] creating resource database.node::n1
[2026-07-14T14:29:58Z] finished creating resource database.node::n1 (took 139.792µs)
[2026-07-14T14:29:58Z] creating resource monitor.instance::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:29:58Z] finished creating resource monitor.instance::storefront-custom-img-n1-ant97dj4 (took 15.238208ms)
[2026-07-14T14:29:58Z] creating resource monitor.instance::storefront-custom-img-n1-689qacsi
[2026-07-14T14:29:58Z] finished creating resource monitor.instance::storefront-custom-img-n1-689qacsi (took 10.476208ms)
[2026-07-14T14:29:58Z] creating resource monitor.instance::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:29:58Z] finished creating resource monitor.instance::storefront-custom-img-n1-9ptayhma (took 10.226333ms)
[2026-07-14T14:29:59Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T14:29:59Z] finished creating resource database.postgres_database::n1:storefront (took 348.619708ms)

database entity storefront-custom-img task 019f6107-c956-7612-a051-eb5877cfdf69 completed

6. Spock patch upgrade on the cluster from step 5

update_db_spock_patch_upgrade.json

spec: 17.10 / spock "5", image: 17.10-spock5.0.9-standard-1

prefix match accepts 5.0.9 against spec "5"

cp1-req update-database storefront-custom-img < ../demo/Images/update_db_spock_patch_upgrade.json | cp-follow-task

cp1-req update-database storefront-custom-img < ../demo/Images/update_db_spock_patch_upgrade.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T14:28:48Z",
    "id": "storefront-custom-img",
    "instances": [
      {
        "created_at": "2026-07-14T14:28:51Z",
        "host_id": "host-1",
        "id": "storefront-custom-img-n1-689qacsi",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "primary",
          "version": "17.9"
        },
        "spock": {
          "read_only": "off",
          "version": "5.0.6"
        },
        "state": "available",
        "status_updated_at": "2026-07-14T14:31:38Z",
        "updated_at": "2026-07-14T14:29:24Z"
      },
      {
        "created_at": "2026-07-14T14:29:25Z",
        "host_id": "host-2",
        "id": "storefront-custom-img-n1-9ptayhma",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "replica",
          "version": "17.9"
        },
        "state": "available",
        "status_updated_at": "2026-07-14T14:31:38Z",
        "updated_at": "2026-07-14T14:29:58Z"
      },
      {
        "created_at": "2026-07-14T14:29:25Z",
        "host_id": "host-3",
        "id": "storefront-custom-img-n1-ant97dj4",
        "node_name": "n1",
        "postgres": {
          "patroni_state": "running",
          "role": "replica",
          "version": "17.9"
        },
        "state": "available",
        "status_updated_at": "2026-07-14T14:31:38Z",
        "updated_at": "2026-07-14T14:29:58Z"
      }
    ],
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.9-standard-1"
        }
      },
      "postgres_version": "17.10",
      "spock_version": "5"
    },
    "state": "modifying",
    "updated_at": "2026-07-14T14:31:42Z"
  },
  "task": {
    "created_at": "2026-07-14T14:31:42Z",
    "database_id": "storefront-custom-img",
    "entity_id": "storefront-custom-img",
    "scope": "database",
    "status": "pending",
    "task_id": "019f610a-7462-79a9-a1c4-6c052175e6fe",
    "type": "update"
  }
}
[2026-07-14T14:31:44Z] refreshing current state
[2026-07-14T14:31:53Z] finished refreshing current state (took 9.196324212s)
[2026-07-14T14:31:55Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:31:55Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-9ptayhma (took 123.708µs)
[2026-07-14T14:31:55Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:31:55Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-9ptayhma (took 5.2385ms)
[2026-07-14T14:31:56Z] updating resource swarm.switchover::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:31:56Z] finished updating resource swarm.switchover::storefront-custom-img-n1-9ptayhma (took 1.067917ms)
[2026-07-14T14:31:56Z] updating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:32:21Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-9ptayhma (took 25.013266969s)
[2026-07-14T14:32:21Z] updating resource database.instance::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:32:31Z] finished updating resource database.instance::storefront-custom-img-n1-9ptayhma (took 10.015434755s)
[2026-07-14T14:32:32Z] updating resource database.node::n1
[2026-07-14T14:32:32Z] finished updating resource database.node::n1 (took 110.791µs)
[2026-07-14T14:32:32Z] updating resource monitor.instance::storefront-custom-img-n1-9ptayhma
[2026-07-14T14:32:32Z] finished updating resource monitor.instance::storefront-custom-img-n1-9ptayhma (took 12.783917ms)
[2026-07-14T14:32:32Z] updating resource database.postgres_database::n1:storefront
[2026-07-14T14:32:32Z] finished updating resource database.postgres_database::n1:storefront (took 27.081916ms)
[2026-07-14T14:32:33Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:32:33Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-ant97dj4 (took 128.583µs)
[2026-07-14T14:32:33Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:32:33Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-ant97dj4 (took 4.092792ms)
[2026-07-14T14:32:33Z] updating resource swarm.switchover::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:32:33Z] finished updating resource swarm.switchover::storefront-custom-img-n1-ant97dj4 (took 1.71775ms)
[2026-07-14T14:32:33Z] updating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:32:58Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-ant97dj4 (took 25.012565886s)
[2026-07-14T14:32:59Z] updating resource database.instance::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:33:09Z] finished updating resource database.instance::storefront-custom-img-n1-ant97dj4 (took 10.011491297s)
[2026-07-14T14:33:09Z] updating resource database.node::n1
[2026-07-14T14:33:09Z] finished updating resource database.node::n1 (took 99.583µs)
[2026-07-14T14:33:09Z] updating resource monitor.instance::storefront-custom-img-n1-ant97dj4
[2026-07-14T14:33:09Z] finished updating resource monitor.instance::storefront-custom-img-n1-ant97dj4 (took 13.425875ms)
[2026-07-14T14:33:09Z] updating resource database.postgres_database::n1:storefront
[2026-07-14T14:33:09Z] finished updating resource database.postgres_database::n1:storefront (took 27.158208ms)
[2026-07-14T14:33:10Z] updating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:10Z] finished updating resource swarm.postgres_service_spec::storefront-custom-img-n1-689qacsi (took 101µs)
[2026-07-14T14:33:10Z] updating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:10Z] finished updating resource swarm.check_will_restart::storefront-custom-img-n1-689qacsi (took 4.144791ms)
[2026-07-14T14:33:11Z] updating resource swarm.switchover::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:23Z] finished updating resource swarm.switchover::storefront-custom-img-n1-689qacsi (took 12.063683088s)
[2026-07-14T14:33:23Z] updating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:48Z] finished updating resource swarm.postgres_service::storefront-custom-img-n1-689qacsi (took 25.017104512s)
[2026-07-14T14:33:48Z] updating resource database.instance::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:58Z] finished updating resource database.instance::storefront-custom-img-n1-689qacsi (took 10.011784004s)
[2026-07-14T14:33:58Z] updating resource database.node::n1
[2026-07-14T14:33:58Z] finished updating resource database.node::n1 (took 92.084µs)
[2026-07-14T14:33:59Z] updating resource monitor.instance::storefront-custom-img-n1-689qacsi
[2026-07-14T14:33:59Z] finished updating resource monitor.instance::storefront-custom-img-n1-689qacsi (took 13.019709ms)
[2026-07-14T14:33:59Z] updating resource database.postgres_database::n1:storefront
[2026-07-14T14:33:59Z] finished updating resource database.postgres_database::n1:storefront (took 30.453041ms)
[2026-07-14T14:33:59Z] creating resource database.switchover::storefront-custom-img-n1-689qacsi
[2026-07-14T14:34:15Z] finished creating resource database.switchover::storefront-custom-img-n1-689qacsi (took 16.072252716s)

database entity storefront-custom-img task 019f610a-7462-79a9-a1c4-6c052175e6fe completed

7. No build suffix (17.10-spock5.0.10-standard)

create_db_no_build_suffix.json

cp1-req create-database < ../demo/Images/create_db_no_build_suffix.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_no_build_suffix.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T14:37:10Z",
    "id": "storefront-no-build-suffix",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard"
        }
      },
      "postgres_version": "17.10",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T14:37:10Z"
  },
  "task": {
    "created_at": "2026-07-14T14:37:10Z",
    "database_id": "storefront-no-build-suffix",
    "entity_id": "storefront-no-build-suffix",
    "scope": "database",
    "status": "pending",
    "task_id": "019f610f-7343-7cd6-a138-b31feb51b452",
    "type": "create"
  }
}
[2026-07-14T14:37:11Z] refreshing current state
[2026-07-14T14:37:11Z] finished refreshing current state (took 204.938209ms)
[2026-07-14T14:37:13Z] creating resource common.patroni_cluster::n1
[2026-07-14T14:37:13Z] finished creating resource common.patroni_cluster::n1 (took 9.083µs)
[2026-07-14T14:37:13Z] creating resource swarm.network::storefront-no-build-suffix-database
[2026-07-14T14:37:13Z] finished creating resource swarm.network::storefront-no-build-suffix-database (took 6.132583ms)
[2026-07-14T14:37:14Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-instance
[2026-07-14T14:37:14Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-instance (took 3.545583ms)
[2026-07-14T14:37:14Z] creating resource common.patroni_member::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:14Z] finished creating resource common.patroni_member::storefront-no-build-suffix-n1-689qacsi (took 15.334µs)
[2026-07-14T14:37:14Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-configs
[2026-07-14T14:37:14Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-configs (took 1.026791ms)
[2026-07-14T14:37:14Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-data
[2026-07-14T14:37:14Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-data (took 1.129042ms)
[2026-07-14T14:37:14Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-certificates
[2026-07-14T14:37:14Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-689qacsi-certificates (took 511.083µs)
[2026-07-14T14:37:14Z] creating resource common.postgres_certs::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:14Z] creating resource common.etcd_creds::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:14Z] finished creating resource common.etcd_creds::storefront-no-build-suffix-n1-689qacsi (took 67.687583ms)
[2026-07-14T14:37:15Z] finished creating resource common.postgres_certs::storefront-no-build-suffix-n1-689qacsi (took 198.467209ms)
[2026-07-14T14:37:15Z] creating resource swarm.patroni_config::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:15Z] finished creating resource swarm.patroni_config::storefront-no-build-suffix-n1-689qacsi (took 2.224084ms)
[2026-07-14T14:37:15Z] creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:15Z] finished creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-689qacsi (took 187.541µs)
[2026-07-14T14:37:16Z] creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:16Z] finished creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-689qacsi (took 2.948375ms)
[2026-07-14T14:37:16Z] creating resource swarm.switchover::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:16Z] finished creating resource swarm.switchover::storefront-no-build-suffix-n1-689qacsi (took 21.666µs)
[2026-07-14T14:37:16Z] creating resource swarm.postgres_service::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:36Z] finished creating resource swarm.postgres_service::storefront-no-build-suffix-n1-689qacsi (took 20.0124003s)
[2026-07-14T14:37:37Z] creating resource database.instance::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:37:47Z] finished creating resource database.instance::storefront-no-build-suffix-n1-689qacsi (took 10.053577172s)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-instance
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-instance (took 513.75µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-instance
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-instance (took 687.167µs)
[2026-07-14T14:37:47Z] creating resource common.patroni_member::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:47Z] finished creating resource common.patroni_member::storefront-no-build-suffix-n1-9ptayhma (took 9.042µs)
[2026-07-14T14:37:47Z] creating resource common.patroni_member::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:47Z] finished creating resource common.patroni_member::storefront-no-build-suffix-n1-ant97dj4 (took 9.208µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-data
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-data (took 664.416µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-certificates
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-certificates (took 768.416µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-configs
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-ant97dj4-configs (took 839.709µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-data
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-data (took 338.834µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-certificates
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-certificates (took 618.958µs)
[2026-07-14T14:37:47Z] creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-configs
[2026-07-14T14:37:47Z] finished creating resource filesystem.dir::storefront-no-build-suffix-n1-9ptayhma-configs (took 1.15325ms)
[2026-07-14T14:37:48Z] creating resource common.postgres_certs::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:48Z] creating resource common.etcd_creds::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:48Z] finished creating resource common.postgres_certs::storefront-no-build-suffix-n1-ant97dj4 (took 16.192709ms)
[2026-07-14T14:37:48Z] creating resource common.etcd_creds::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:48Z] creating resource common.postgres_certs::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:48Z] finished creating resource common.postgres_certs::storefront-no-build-suffix-n1-9ptayhma (took 8.991541ms)
[2026-07-14T14:37:48Z] finished creating resource common.etcd_creds::storefront-no-build-suffix-n1-ant97dj4 (took 67.875125ms)
[2026-07-14T14:37:48Z] finished creating resource common.etcd_creds::storefront-no-build-suffix-n1-9ptayhma (took 65.720042ms)
[2026-07-14T14:37:48Z] creating resource swarm.patroni_config::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:48Z] finished creating resource swarm.patroni_config::storefront-no-build-suffix-n1-ant97dj4 (took 2.237458ms)
[2026-07-14T14:37:48Z] creating resource swarm.patroni_config::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:48Z] finished creating resource swarm.patroni_config::storefront-no-build-suffix-n1-9ptayhma (took 1.990833ms)
[2026-07-14T14:37:49Z] creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:49Z] finished creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-ant97dj4 (took 153.542µs)
[2026-07-14T14:37:49Z] creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:49Z] finished creating resource swarm.postgres_service_spec::storefront-no-build-suffix-n1-9ptayhma (took 117.917µs)
[2026-07-14T14:37:49Z] creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:49Z] finished creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-ant97dj4 (took 1.718458ms)
[2026-07-14T14:37:49Z] creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:49Z] finished creating resource swarm.check_will_restart::storefront-no-build-suffix-n1-9ptayhma (took 1.520083ms)
[2026-07-14T14:37:49Z] creating resource swarm.switchover::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:49Z] finished creating resource swarm.switchover::storefront-no-build-suffix-n1-ant97dj4 (took 17.959µs)
[2026-07-14T14:37:49Z] creating resource swarm.switchover::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:37:49Z] finished creating resource swarm.switchover::storefront-no-build-suffix-n1-9ptayhma (took 10.917µs)
[2026-07-14T14:37:49Z] creating resource swarm.postgres_service::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:37:49Z] creating resource swarm.postgres_service::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:38:09Z] finished creating resource swarm.postgres_service::storefront-no-build-suffix-n1-ant97dj4 (took 20.012438176s)
[2026-07-14T14:38:09Z] finished creating resource swarm.postgres_service::storefront-no-build-suffix-n1-9ptayhma (took 20.011280385s)
[2026-07-14T14:38:10Z] creating resource database.instance::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:38:10Z] creating resource database.instance::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:38:20Z] finished creating resource database.instance::storefront-no-build-suffix-n1-ant97dj4 (took 10.020456255s)
[2026-07-14T14:38:20Z] finished creating resource database.instance::storefront-no-build-suffix-n1-9ptayhma (took 10.024222755s)
[2026-07-14T14:38:20Z] creating resource database.node::n1
[2026-07-14T14:38:20Z] finished creating resource database.node::n1 (took 166.792µs)
[2026-07-14T14:38:20Z] creating resource monitor.instance::storefront-no-build-suffix-n1-ant97dj4
[2026-07-14T14:38:20Z] finished creating resource monitor.instance::storefront-no-build-suffix-n1-ant97dj4 (took 11.869458ms)
[2026-07-14T14:38:20Z] creating resource monitor.instance::storefront-no-build-suffix-n1-689qacsi
[2026-07-14T14:38:20Z] finished creating resource monitor.instance::storefront-no-build-suffix-n1-689qacsi (took 13.5795ms)
[2026-07-14T14:38:20Z] creating resource monitor.instance::storefront-no-build-suffix-n1-9ptayhma
[2026-07-14T14:38:20Z] finished creating resource monitor.instance::storefront-no-build-suffix-n1-9ptayhma (took 11.331792ms)
[2026-07-14T14:38:21Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T14:38:21Z] finished creating resource database.postgres_database::n1:storefront (took 352.000458ms)

database entity storefront-no-build-suffix task 019f610f-7343-7cd6-a138-b31feb51b452 completed

8. Major-only spock (17.10-spock5-standard) — recognized, accepted

create_db_mutable_spock.json

cp1-req create-database < ../demo/Images/create_db_mutable_spock.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_mutable_spock.json | cp-follow-task
{
  "database": {
    "created_at": "2026-07-14T15:34:21Z",
    "id": "storefront-mutable-spock-test",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.10-spock5-standard"
        }
      },
      "postgres_version": "17.10",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T15:34:21Z"
  },
  "task": {
    "created_at": "2026-07-14T15:34:21Z",
    "database_id": "storefront-mutable-spock-test",
    "entity_id": "storefront-mutable-spock-test",
    "scope": "database",
    "status": "pending",
    "task_id": "019f6143-cdd5-7731-93d6-69f450aa8281",
    "type": "create"
  }
}
[2026-07-14T15:34:22Z] refreshing current state
[2026-07-14T15:34:22Z] finished refreshing current state (took 208.162417ms)
[2026-07-14T15:34:24Z] creating resource common.patroni_cluster::n1
[2026-07-14T15:34:24Z] finished creating resource common.patroni_cluster::n1 (took 30.375µs)
[2026-07-14T15:34:24Z] creating resource swarm.network::storefront-mutable-spock-test-database
[2026-07-14T15:34:24Z] finished creating resource swarm.network::storefront-mutable-spock-test-database (took 7.404916ms)
[2026-07-14T15:34:25Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-instance
[2026-07-14T15:34:25Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-instance (took 722.584µs)
[2026-07-14T15:34:25Z] creating resource common.patroni_member::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:25Z] finished creating resource common.patroni_member::storefront-mutable-spock-test-n1-689qacsi (took 38.417µs)
[2026-07-14T15:34:25Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-certificates
[2026-07-14T15:34:25Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-certificates (took 847.084µs)
[2026-07-14T15:34:25Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-data
[2026-07-14T15:34:25Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-data (took 892.875µs)
[2026-07-14T15:34:25Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-configs
[2026-07-14T15:34:25Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-689qacsi-configs (took 679.792µs)
[2026-07-14T15:34:25Z] creating resource common.postgres_certs::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:25Z] creating resource common.etcd_creds::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:25Z] finished creating resource common.etcd_creds::storefront-mutable-spock-test-n1-689qacsi (took 78.820166ms)
[2026-07-14T15:34:25Z] finished creating resource common.postgres_certs::storefront-mutable-spock-test-n1-689qacsi (took 109.219334ms)
[2026-07-14T15:34:26Z] creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:26Z] finished creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-689qacsi (took 3.27225ms)
[2026-07-14T15:34:26Z] creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:26Z] finished creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-689qacsi (took 170µs)
[2026-07-14T15:34:26Z] creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:26Z] finished creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-689qacsi (took 2.207958ms)
[2026-07-14T15:34:27Z] creating resource swarm.switchover::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:27Z] finished creating resource swarm.switchover::storefront-mutable-spock-test-n1-689qacsi (took 41.541µs)
[2026-07-14T15:34:27Z] creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:47Z] finished creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-689qacsi (took 20.016669009s)
[2026-07-14T15:34:47Z] creating resource database.instance::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:34:58Z] finished creating resource database.instance::storefront-mutable-spock-test-n1-689qacsi (took 10.049496878s)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-instance
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-instance (took 838.583µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-instance
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-instance (took 966.958µs)
[2026-07-14T15:34:58Z] creating resource common.patroni_member::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:34:58Z] finished creating resource common.patroni_member::storefront-mutable-spock-test-n1-9ptayhma (took 39.792µs)
[2026-07-14T15:34:58Z] creating resource common.patroni_member::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:34:58Z] finished creating resource common.patroni_member::storefront-mutable-spock-test-n1-ant97dj4 (took 10.458µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-data
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-data (took 752.458µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-configs
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-configs (took 433.584µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-certificates
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-ant97dj4-certificates (took 396.125µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-configs
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-configs (took 585.875µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-data
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-data (took 392.542µs)
[2026-07-14T15:34:58Z] creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-certificates
[2026-07-14T15:34:58Z] finished creating resource filesystem.dir::storefront-mutable-spock-test-n1-9ptayhma-certificates (took 492.833µs)
[2026-07-14T15:34:59Z] creating resource common.etcd_creds::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:34:59Z] creating resource common.postgres_certs::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:34:59Z] creating resource common.etcd_creds::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:34:59Z] finished creating resource common.postgres_certs::storefront-mutable-spock-test-n1-ant97dj4 (took 20.114375ms)
[2026-07-14T15:34:59Z] creating resource common.postgres_certs::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:34:59Z] finished creating resource common.etcd_creds::storefront-mutable-spock-test-n1-ant97dj4 (took 75.663375ms)
[2026-07-14T15:34:59Z] finished creating resource common.etcd_creds::storefront-mutable-spock-test-n1-9ptayhma (took 69.748875ms)
[2026-07-14T15:34:59Z] finished creating resource common.postgres_certs::storefront-mutable-spock-test-n1-9ptayhma (took 7.484333ms)
[2026-07-14T15:34:59Z] creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:34:59Z] finished creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-ant97dj4 (took 2.7565ms)
[2026-07-14T15:34:59Z] creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:34:59Z] finished creating resource swarm.patroni_config::storefront-mutable-spock-test-n1-9ptayhma (took 2.708791ms)
[2026-07-14T15:35:00Z] creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:00Z] finished creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-ant97dj4 (took 156.25µs)
[2026-07-14T15:35:00Z] creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:00Z] finished creating resource swarm.postgres_service_spec::storefront-mutable-spock-test-n1-9ptayhma (took 151.625µs)
[2026-07-14T15:35:00Z] creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:00Z] finished creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-9ptayhma (took 2.022458ms)
[2026-07-14T15:35:00Z] creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:00Z] finished creating resource swarm.check_will_restart::storefront-mutable-spock-test-n1-ant97dj4 (took 1.832042ms)
[2026-07-14T15:35:00Z] creating resource swarm.switchover::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:00Z] finished creating resource swarm.switchover::storefront-mutable-spock-test-n1-ant97dj4 (took 19.084µs)
[2026-07-14T15:35:00Z] creating resource swarm.switchover::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:00Z] finished creating resource swarm.switchover::storefront-mutable-spock-test-n1-9ptayhma (took 12.25µs)
[2026-07-14T15:35:01Z] creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:01Z] creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:21Z] finished creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-ant97dj4 (took 20.011890384s)
[2026-07-14T15:35:21Z] finished creating resource swarm.postgres_service::storefront-mutable-spock-test-n1-9ptayhma (took 20.010368801s)
[2026-07-14T15:35:21Z] creating resource database.instance::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:21Z] creating resource database.instance::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:31Z] finished creating resource database.instance::storefront-mutable-spock-test-n1-ant97dj4 (took 10.02630967s)
[2026-07-14T15:35:31Z] finished creating resource database.instance::storefront-mutable-spock-test-n1-9ptayhma (took 10.019876046s)
[2026-07-14T15:35:31Z] creating resource database.node::n1
[2026-07-14T15:35:31Z] finished creating resource database.node::n1 (took 296.583µs)
[2026-07-14T15:35:32Z] creating resource monitor.instance::storefront-mutable-spock-test-n1-ant97dj4
[2026-07-14T15:35:32Z] finished creating resource monitor.instance::storefront-mutable-spock-test-n1-ant97dj4 (took 14.692208ms)
[2026-07-14T15:35:32Z] creating resource monitor.instance::storefront-mutable-spock-test-n1-9ptayhma
[2026-07-14T15:35:32Z] creating resource monitor.instance::storefront-mutable-spock-test-n1-689qacsi
[2026-07-14T15:35:32Z] finished creating resource monitor.instance::storefront-mutable-spock-test-n1-689qacsi (took 11.407042ms)
[2026-07-14T15:35:32Z] finished creating resource monitor.instance::storefront-mutable-spock-test-n1-9ptayhma (took 12.425167ms)
[2026-07-14T15:35:32Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T15:35:32Z] finished creating resource database.postgres_database::n1:storefront (took 323.512458ms)

database entity storefront-mutable-spock-test task 019f6143-cdd5-7731-93d6-69f450aa8281 completed

9. Digest-pinned, versions match — accepted

create_db_digest_pinned.json

cp1-req create-database < ../demo/Images/create_db_digest_pinned.json | cp-follow-task

cp1-req create-database < ../demo/Images/create_db_digest_pinned.json | cp-follow-task

{
  "database": {
    "created_at": "2026-07-14T15:15:53Z",
    "id": "storefront-digest-pinned",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1",
            "host-2",
            "host-3"
          ],
          "name": "n1"
        }
      ],
      "orchestrator_opts": {
        "swarm": {
          "image": "ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard-1@sha256:0bbc985f280a538bed20d1b73459668d2730c3c6913a2c6cacd2043678bce64e"
        }
      },
      "postgres_version": "17.10",
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T15:15:53Z"
  },
  "task": {
    "created_at": "2026-07-14T15:15:53Z",
    "database_id": "storefront-digest-pinned",
    "entity_id": "storefront-digest-pinned",
    "scope": "database",
    "status": "pending",
    "task_id": "019f6132-e4f5-7f27-bcc3-17ea7f8f1e83",
    "type": "create"
  }
}
[2026-07-14T15:15:54Z] refreshing current state
[2026-07-14T15:15:54Z] finished refreshing current state (took 189.262458ms)
[2026-07-14T15:15:56Z] creating resource common.patroni_cluster::n1
[2026-07-14T15:15:56Z] finished creating resource common.patroni_cluster::n1 (took 8.458µs)
[2026-07-14T15:15:56Z] creating resource swarm.network::storefront-digest-pinned-database
[2026-07-14T15:15:56Z] finished creating resource swarm.network::storefront-digest-pinned-database (took 6.29625ms)
[2026-07-14T15:15:56Z] creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-instance
[2026-07-14T15:15:56Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-instance (took 582.917µs)
[2026-07-14T15:15:56Z] creating resource common.patroni_member::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:56Z] finished creating resource common.patroni_member::storefront-digest-pinned-n1-689qacsi (took 143.25µs)
[2026-07-14T15:15:56Z] creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-data
[2026-07-14T15:15:56Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-data (took 950.334µs)
[2026-07-14T15:15:56Z] creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-configs
[2026-07-14T15:15:56Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-configs (took 711µs)
[2026-07-14T15:15:56Z] creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-certificates
[2026-07-14T15:15:56Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-689qacsi-certificates (took 871µs)
[2026-07-14T15:15:57Z] creating resource common.etcd_creds::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:57Z] creating resource common.postgres_certs::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:57Z] finished creating resource common.etcd_creds::storefront-digest-pinned-n1-689qacsi (took 80.998958ms)
[2026-07-14T15:15:57Z] finished creating resource common.postgres_certs::storefront-digest-pinned-n1-689qacsi (took 6.282667ms)
[2026-07-14T15:15:57Z] creating resource swarm.patroni_config::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:57Z] finished creating resource swarm.patroni_config::storefront-digest-pinned-n1-689qacsi (took 2.85525ms)
[2026-07-14T15:15:57Z] creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:57Z] finished creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-689qacsi (took 172.959µs)
[2026-07-14T15:15:58Z] creating resource swarm.check_will_restart::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:58Z] finished creating resource swarm.check_will_restart::storefront-digest-pinned-n1-689qacsi (took 1.965416ms)
[2026-07-14T15:15:58Z] creating resource swarm.switchover::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:15:58Z] finished creating resource swarm.switchover::storefront-digest-pinned-n1-689qacsi (took 16µs)
[2026-07-14T15:15:58Z] creating resource swarm.postgres_service::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:16:08Z] finished creating resource swarm.postgres_service::storefront-digest-pinned-n1-689qacsi (took 10.012146505s)
[2026-07-14T15:16:09Z] creating resource database.instance::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:16:19Z] finished creating resource database.instance::storefront-digest-pinned-n1-689qacsi (took 10.048096713s)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-instance
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-instance (took 557.459µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-instance
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-instance (took 452µs)
[2026-07-14T15:16:19Z] creating resource common.patroni_member::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:19Z] finished creating resource common.patroni_member::storefront-digest-pinned-n1-9ptayhma (took 10.875µs)
[2026-07-14T15:16:19Z] creating resource common.patroni_member::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:19Z] finished creating resource common.patroni_member::storefront-digest-pinned-n1-ant97dj4 (took 8.209µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-certificates
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-certificates (took 595.334µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-configs
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-configs (took 530.916µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-data
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-ant97dj4-data (took 626.292µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-configs
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-configs (took 481.75µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-certificates
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-certificates (took 875.708µs)
[2026-07-14T15:16:19Z] creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-data
[2026-07-14T15:16:19Z] finished creating resource filesystem.dir::storefront-digest-pinned-n1-9ptayhma-data (took 427.833µs)
[2026-07-14T15:16:20Z] creating resource common.etcd_creds::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:20Z] creating resource common.postgres_certs::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:20Z] finished creating resource common.postgres_certs::storefront-digest-pinned-n1-ant97dj4 (took 15.13175ms)
[2026-07-14T15:16:20Z] creating resource common.etcd_creds::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:20Z] creating resource common.postgres_certs::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:20Z] finished creating resource common.postgres_certs::storefront-digest-pinned-n1-9ptayhma (took 7.181375ms)
[2026-07-14T15:16:20Z] finished creating resource common.etcd_creds::storefront-digest-pinned-n1-ant97dj4 (took 72.985625ms)
[2026-07-14T15:16:20Z] finished creating resource common.etcd_creds::storefront-digest-pinned-n1-9ptayhma (took 70.190666ms)
[2026-07-14T15:16:20Z] creating resource swarm.patroni_config::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:20Z] finished creating resource swarm.patroni_config::storefront-digest-pinned-n1-9ptayhma (took 1.728666ms)
[2026-07-14T15:16:20Z] creating resource swarm.patroni_config::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:20Z] finished creating resource swarm.patroni_config::storefront-digest-pinned-n1-ant97dj4 (took 2.21975ms)
[2026-07-14T15:16:20Z] creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:20Z] finished creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-ant97dj4 (took 124.792µs)
[2026-07-14T15:16:20Z] creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:20Z] finished creating resource swarm.postgres_service_spec::storefront-digest-pinned-n1-9ptayhma (took 105.959µs)
[2026-07-14T15:16:21Z] creating resource swarm.check_will_restart::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:21Z] finished creating resource swarm.check_will_restart::storefront-digest-pinned-n1-ant97dj4 (took 1.710167ms)
[2026-07-14T15:16:21Z] creating resource swarm.check_will_restart::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:21Z] finished creating resource swarm.check_will_restart::storefront-digest-pinned-n1-9ptayhma (took 1.592708ms)
[2026-07-14T15:16:21Z] creating resource swarm.switchover::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:21Z] finished creating resource swarm.switchover::storefront-digest-pinned-n1-ant97dj4 (took 16.042µs)
[2026-07-14T15:16:21Z] creating resource swarm.switchover::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:21Z] finished creating resource swarm.switchover::storefront-digest-pinned-n1-9ptayhma (took 12µs)
[2026-07-14T15:16:21Z] creating resource swarm.postgres_service::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:21Z] creating resource swarm.postgres_service::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:31Z] finished creating resource swarm.postgres_service::storefront-digest-pinned-n1-9ptayhma (took 10.011067671s)
[2026-07-14T15:16:31Z] finished creating resource swarm.postgres_service::storefront-digest-pinned-n1-ant97dj4 (took 10.010192713s)
[2026-07-14T15:16:32Z] creating resource database.instance::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:32Z] creating resource database.instance::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:42Z] finished creating resource database.instance::storefront-digest-pinned-n1-ant97dj4 (took 10.026094172s)
[2026-07-14T15:16:42Z] finished creating resource database.instance::storefront-digest-pinned-n1-9ptayhma (took 10.017935296s)
[2026-07-14T15:16:42Z] creating resource database.node::n1
[2026-07-14T15:16:42Z] finished creating resource database.node::n1 (took 111.458µs)
[2026-07-14T15:16:42Z] creating resource monitor.instance::storefront-digest-pinned-n1-ant97dj4
[2026-07-14T15:16:42Z] finished creating resource monitor.instance::storefront-digest-pinned-n1-ant97dj4 (took 14.9495ms)
[2026-07-14T15:16:42Z] creating resource monitor.instance::storefront-digest-pinned-n1-689qacsi
[2026-07-14T15:16:42Z] finished creating resource monitor.instance::storefront-digest-pinned-n1-689qacsi (took 12.071375ms)
[2026-07-14T15:16:42Z] creating resource monitor.instance::storefront-digest-pinned-n1-9ptayhma
[2026-07-14T15:16:42Z] finished creating resource monitor.instance::storefront-digest-pinned-n1-9ptayhma (took 12.38325ms)
[2026-07-14T15:16:43Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T15:16:43Z] finished creating resource database.postgres_database::n1:storefront (took 354.282292ms)

database entity storefront-digest-pinned task 019f6132-e4f5-7f27-bcc3-17ea7f8f1e83 completed

10. Digest-pinned, wrong pg version — REJECTED (400)

create_db_digest_wrong_pg.json

cp1-req create-database < ../demo/Images/create_db_digest_wrong_pg.json

cp1-req create-database < ../demo/Images/create_db_digest_wrong_pg.json               
HTTP/1.1 400 Bad Request
Content-Length: 1147
Content-Type: application/json
Date: Tue, 14 Jul 2026 15:20:17 GMT
Goa-Error: invalid_input

{
  message: "validation error for node n1, host host-3: image \"ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard-1@sha256:0bbc985f280a538bed20d1b73459668d2730c3c6913a2c6cacd2043678bce64e\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard-1@sha256:0bbc985f280a538bed20d1b73459668d2730c3c6913a2c6cacd2043678bce64e\" not found or inaccessible: Error response from daemon: Get \"https://ghcr.io/v2/\": context deadline exceeded
    validation error for node n1, host host-1: image tag postgres version 17.10 does not match spec version 17.9
    validation error for node n1, host host-2: image \"ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard-1@sha256:0bbc985f280a538bed20d1b73459668d2730c3c6913a2c6cacd2043678bce64e\" could not be verified: image \"ghcr.io/pgedge/pgedge-postgres:17.10-spock5.0.10-standard-1@sha256:0bbc985f280a538bed20d1b73459668d2730c3c6913a2c6cacd2043678bce64e\" not found or inaccessible: Error response from daemon: Get \"https://ghcr.io/v2/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
  name: "invalid_input"
}

11. RAG, MCP & PostgREST Services

create_db_with_rag_mcp_postgrest.json

  • Updated the local configuration.
  • Verified that the RAG, MCP, and PostgREST services are working as expected.
cp1-req create-database < ../demo/Images/create_db_with_rag.json | cp-follow-task
{
  "database": {
    "created_at": "2026-07-14T18:50:39Z",
    "id": "storefront-with-services",
    "spec": {
      "database_name": "storefront",
      "database_users": [
        {
          "attributes": [
            "SUPERUSER",
            "LOGIN"
          ],
          "db_owner": true,
          "username": "admin"
        },
        {
          "attributes": [
            "LOGIN"
          ],
          "db_owner": false,
          "username": "web_anon"
        }
      ],
      "nodes": [
        {
          "host_ids": [
            "host-1"
          ],
          "name": "n1"
        }
      ],
      "postgres_version": "17.9",
      "services": [
        {
          "config": {
            "defaults": {
              "token_budget": 2000,
              "top_n": 10
            },
            "pipelines": [
              {
                "description": "Main RAG pipeline",
                "embedding_llm": {
                  "model": "text-embedding-3-small",
                  "provider": "openai"
                },
                "name": "default",
                "rag_llm": {
                  "model": "claude-sonnet-4-5",
                  "provider": "anthropic"
                },
                "search": {
                  "hybrid_enabled": true,
                  "vector_weight": 0.7
                },
                "tables": [
                  {
                    "table": "documents_content_chunks",
                    "text_column": "content",
                    "vector_column": "embedding"
                  }
                ],
                "token_budget": 4000,
                "top_n": 15
              }
            ]
          },
          "connect_as": "admin",
          "host_ids": [
            "host-1"
          ],
          "port": 0,
          "service_id": "rag",
          "service_type": "rag",
          "version": "1.0.0"
        },
        {
          "config": {
            "allow_writes": false,
            "embedding_model": "text-embedding-3-small",
            "embedding_provider": "openai"
          },
          "connect_as": "admin",
          "host_ids": [
            "host-1"
          ],
          "port": 0,
          "service_id": "mcp",
          "service_type": "mcp",
          "version": "1.0.0"
        },
        {
          "config": {
            "db_anon_role": "web_anon",
            "db_schemas": "public"
          },
          "connect_as": "admin",
          "host_ids": [
            "host-1"
          ],
          "port": 0,
          "service_id": "postgrest",
          "service_type": "postgrest",
          "version": "14.5"
        }
      ],
      "spock_version": "5"
    },
    "state": "creating",
    "updated_at": "2026-07-14T18:50:39Z"
  },
  "task": {
    "created_at": "2026-07-14T18:50:39Z",
    "database_id": "storefront-with-services",
    "entity_id": "storefront-with-services",
    "scope": "database",
    "status": "pending",
    "task_id": "019f61f7-870a-71bf-957b-f94acb4129fe",
    "type": "create"
  }
}
[2026-07-14T18:50:40Z] refreshing current state
[2026-07-14T18:50:41Z] finished refreshing current state (took 208.444625ms)
[2026-07-14T18:50:43Z] creating resource common.patroni_cluster::n1
[2026-07-14T18:50:43Z] finished creating resource common.patroni_cluster::n1 (took 25µs)
[2026-07-14T18:50:43Z] creating resource swarm.network::storefront-with-services-database
[2026-07-14T18:50:43Z] finished creating resource swarm.network::storefront-with-services-database (took 7.79675ms)
[2026-07-14T18:50:43Z] creating resource filesystem.dir::storefront-with-services-n1-689qacsi-instance
[2026-07-14T18:50:43Z] finished creating resource filesystem.dir::storefront-with-services-n1-689qacsi-instance (took 1.092208ms)
[2026-07-14T18:50:44Z] creating resource common.patroni_member::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:44Z] finished creating resource common.patroni_member::storefront-with-services-n1-689qacsi (took 32.75µs)
[2026-07-14T18:50:44Z] creating resource filesystem.dir::storefront-with-services-n1-689qacsi-configs
[2026-07-14T18:50:44Z] finished creating resource filesystem.dir::storefront-with-services-n1-689qacsi-configs (took 1.472791ms)
[2026-07-14T18:50:44Z] creating resource filesystem.dir::storefront-with-services-n1-689qacsi-certificates
[2026-07-14T18:50:44Z] finished creating resource filesystem.dir::storefront-with-services-n1-689qacsi-certificates (took 1.20475ms)
[2026-07-14T18:50:44Z] creating resource filesystem.dir::storefront-with-services-n1-689qacsi-data
[2026-07-14T18:50:44Z] finished creating resource filesystem.dir::storefront-with-services-n1-689qacsi-data (took 664.875µs)
[2026-07-14T18:50:44Z] creating resource common.etcd_creds::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:44Z] creating resource common.postgres_certs::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:44Z] finished creating resource common.etcd_creds::storefront-with-services-n1-689qacsi (took 75.360708ms)
[2026-07-14T18:50:44Z] finished creating resource common.postgres_certs::storefront-with-services-n1-689qacsi (took 6.462042ms)
[2026-07-14T18:50:45Z] creating resource swarm.patroni_config::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:45Z] finished creating resource swarm.patroni_config::storefront-with-services-n1-689qacsi (took 2.606917ms)
[2026-07-14T18:50:45Z] creating resource swarm.postgres_service_spec::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:45Z] finished creating resource swarm.postgres_service_spec::storefront-with-services-n1-689qacsi (took 270µs)
[2026-07-14T18:50:45Z] creating resource swarm.check_will_restart::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:45Z] finished creating resource swarm.check_will_restart::storefront-with-services-n1-689qacsi (took 2.565708ms)
[2026-07-14T18:50:46Z] creating resource swarm.switchover::storefront-with-services-n1-689qacsi
[2026-07-14T18:50:46Z] finished creating resource swarm.switchover::storefront-with-services-n1-689qacsi (took 38.792µs)
[2026-07-14T18:50:46Z] creating resource swarm.postgres_service::storefront-with-services-n1-689qacsi
[2026-07-14T18:51:06Z] finished creating resource swarm.postgres_service::storefront-with-services-n1-689qacsi (took 20.016593426s)
[2026-07-14T18:51:06Z] creating resource database.instance::storefront-with-services-n1-689qacsi
[2026-07-14T18:51:16Z] finished creating resource database.instance::storefront-with-services-n1-689qacsi (took 10.055425546s)
[2026-07-14T18:51:17Z] creating resource database.node::n1
[2026-07-14T18:51:17Z] finished creating resource database.node::n1 (took 305.792µs)
[2026-07-14T18:51:17Z] creating resource filesystem.dir::storefront-with-services-mcp-host-1-data
[2026-07-14T18:51:17Z] finished creating resource filesystem.dir::storefront-with-services-mcp-host-1-data (took 1.367333ms)
[2026-07-14T18:51:17Z] creating resource filesystem.dir::storefront-with-services-rag-host-1-data
[2026-07-14T18:51:17Z] finished creating resource filesystem.dir::storefront-with-services-rag-host-1-data (took 492.5µs)
[2026-07-14T18:51:17Z] creating resource filesystem.dir::storefront-with-services-postgrest-host-1-data
[2026-07-14T18:51:17Z] finished creating resource filesystem.dir::storefront-with-services-postgrest-host-1-data (took 477.167µs)
[2026-07-14T18:51:17Z] creating resource swarm.mcp_config::storefront-with-services-mcp-host-1
[2026-07-14T18:51:17Z] finished creating resource swarm.mcp_config::storefront-with-services-mcp-host-1 (took 3.178167ms)
[2026-07-14T18:51:17Z] creating resource swarm.rag_service_keys::storefront-with-services-rag-host-1
[2026-07-14T18:51:17Z] finished creating resource swarm.rag_service_keys::storefront-with-services-rag-host-1 (took 2.094625ms)
[2026-07-14T18:51:17Z] creating resource swarm.postgrest_config::storefront-with-services-postgrest-host-1
[2026-07-14T18:51:17Z] finished creating resource swarm.postgrest_config::storefront-with-services-postgrest-host-1 (took 824.292µs)
[2026-07-14T18:51:18Z] creating resource swarm.service_instance_spec::storefront-with-services-mcp-host-1
[2026-07-14T18:51:18Z] finished creating resource swarm.service_instance_spec::storefront-with-services-mcp-host-1 (took 131.583µs)
[2026-07-14T18:51:18Z] creating resource swarm.service_instance::storefront-with-services-mcp-host-1
[2026-07-14T18:51:38Z] finished creating resource swarm.service_instance::storefront-with-services-mcp-host-1 (took 20.030244509s)
[2026-07-14T18:51:38Z] creating resource monitor.service_instance::storefront-with-services-mcp-host-1
[2026-07-14T18:51:38Z] finished creating resource monitor.service_instance::storefront-with-services-mcp-host-1 (took 7.069875ms)
[2026-07-14T18:51:39Z] creating resource monitor.instance::storefront-with-services-n1-689qacsi
[2026-07-14T18:51:39Z] finished creating resource monitor.instance::storefront-with-services-n1-689qacsi (took 16.567958ms)
[2026-07-14T18:51:39Z] creating resource database.postgres_database::n1:storefront
[2026-07-14T18:51:39Z] finished creating resource database.postgres_database::n1:storefront (took 244.461041ms)
[2026-07-14T18:51:40Z] creating resource swarm.postgrest_preflight::postgrest
[2026-07-14T18:51:40Z] creating resource swarm.rag_preflight::storefront-with-services-rag-host-1
[2026-07-14T18:51:40Z] finished creating resource swarm.postgrest_preflight::postgrest (took 19.525208ms)
[2026-07-14T18:51:40Z] creating resource swarm.postgrest_authenticator::postgrest-auth-n1
[2026-07-14T18:51:40Z] finished creating resource swarm.rag_preflight::storefront-with-services-rag-host-1 (took 9.740875ms)
[2026-07-14T18:51:40Z] finished creating resource swarm.postgrest_authenticator::postgrest-auth-n1 (took 8.803417ms)
[2026-07-14T18:51:40Z] creating resource swarm.service_instance_spec::storefront-with-services-postgrest-host-1
[2026-07-14T18:51:40Z] finished creating resource swarm.service_instance_spec::storefront-with-services-postgrest-host-1 (took 178.583µs)
[2026-07-14T18:51:40Z] creating resource swarm.rag_config::storefront-with-services-rag-host-1
[2026-07-14T18:51:40Z] finished creating resource swarm.rag_config::storefront-with-services-rag-host-1 (took 1.581917ms)
[2026-07-14T18:51:40Z] creating resource swarm.service_instance::storefront-with-services-postgrest-host-1
[2026-07-14T18:51:40Z] creating resource swarm.service_instance_spec::storefront-with-services-rag-host-1
[2026-07-14T18:51:40Z] finished creating resource swarm.service_instance_spec::storefront-with-services-rag-host-1 (took 172.75µs)
[2026-07-14T18:52:00Z] finished creating resource swarm.service_instance::storefront-with-services-postgrest-host-1 (took 20.020009551s)
[2026-07-14T18:52:01Z] creating resource swarm.service_instance::storefront-with-services-rag-host-1
[2026-07-14T18:52:01Z] creating resource monitor.service_instance::storefront-with-services-postgrest-host-1
[2026-07-14T18:52:01Z] finished creating resource monitor.service_instance::storefront-with-services-postgrest-host-1 (took 6.291292ms)
[2026-07-14T18:52:21Z] finished creating resource swarm.service_instance::storefront-with-services-rag-host-1 (took 20.016003342s)
[2026-07-14T18:52:21Z] creating resource monitor.service_instance::storefront-with-services-rag-host-1
[2026-07-14T18:52:21Z] finished creating resource monitor.service_instance::storefront-with-services-rag-host-1 (took 7.484291ms)

database entity storefront-with-services task 019f61f7-870a-71bf-957b-f94acb4129fe completed

@tsivaprasad
tsivaprasad requested a review from mmols July 14, 2026 19:25
@tsivaprasad
tsivaprasad merged commit 030abd9 into main Jul 15, 2026
5 checks passed
@tsivaprasad
tsivaprasad deleted the PLAT-641-enforce-version-aware-tag-format-for-custom-image-overrides branch July 15, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants