# Checks before and after each step

Generated by StackToIT from `execution-plan.json`. Nothing in this folder has been run: StackToIT reads and writes files and creates, changes and deletes nothing in any cloud. Every step is carried out by a person, by OpenTofu or by a script of this folder that a person runs. Paths are relative to the output folder.

## Before each step

- [ ] `TF/stackit_secretsmanager_instance.migrated_secrets` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_secretsmanager_user.migration` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` · `action-complete` `action=TF/stackit_secretsmanager_instance.migrated_secrets` — The step `TF/stackit_secretsmanager_instance.migrated_secrets` is complete.
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` · `decision-answered` `decision=DEC-GEN-CONVERT-API-OPT-IN/google_secret_manager_secret.django_admin_password` — The decision `DEC-GEN-CONVERT-API-OPT-IN/google_secret_manager_secret.django_admin_password` is answered (`executive/decisions.md`).
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` · `project-exists`  — The STACKIT project exists.
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` · `action-complete` `action=TF/stackit_secretsmanager_instance.migrated_secrets` — The step `TF/stackit_secretsmanager_instance.migrated_secrets` is complete.
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` · `decision-answered` `decision=DEC-GEN-CONVERT-API-OPT-IN/google_secret_manager_secret.django_admin_password` — The decision `DEC-GEN-CONVERT-API-OPT-IN/google_secret_manager_secret.django_admin_password` is answered (`executive/decisions.md`).
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` · `project-exists`  — The STACKIT project exists.
- [ ] `MAN/path/secrets-migration/read-back` · `action-complete` `action=API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` — The step `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` is complete.
- [ ] `MAN/path/secrets-migration/read-back` · `action-complete` `action=API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` — The step `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` is complete.
- [ ] `MAN/path/secrets-migration/retire-user` · `action-complete` `action=MAN/path/secrets-migration/read-back` — The step `MAN/path/secrets-migration/read-back` is complete.
- [ ] `TF/stackit_service_account.automation` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_service_account.client` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_service_account.init` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_service_account.server` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `MAN/estate/SOURCE_PROJECT_MAPPING` · `decision-answered` `decision=DEC-GEN-CONVERT-SOURCE-PROJECT-MAPPING` — The decision `DEC-GEN-CONVERT-SOURCE-PROJECT-MAPPING` is answered (`executive/decisions.md`).
- [ ] `MAN/estate/SOURCE_REGION_MAPPING` · `decision-answered` `decision=DEC-GEN-CONVERT-SOURCE-REGION-MAPPING` — The decision `DEC-GEN-CONVERT-SOURCE-REGION-MAPPING` is answered (`executive/decisions.md`).
- [ ] `MAN/unit/google_firebase_hosting_site.client` · `decision-answered` `decision=DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_firebase_hosting_site.client` — The decision `DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_firebase_hosting_site.client` is answered (`executive/decisions.md`).
- [ ] `TF/stackit_objectstorage_bucket.media` · `variable-supplied` `variable=media_bucket_name` — The variable `media_bucket_name` has a value.
- [ ] `TF/stackit_objectstorage_bucket.media` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `MAN/data/google_storage_bucket.media/preflight` · `action-complete` `action=TF/stackit_objectstorage_bucket.media` — The step `TF/stackit_objectstorage_bucket.media` is complete.
- [ ] `MAN/data/google_storage_bucket.media/rehearsal` · `action-complete` `action=MAN/data/google_storage_bucket.media/preflight` — The step `MAN/data/google_storage_bucket.media/preflight` is complete.
- [ ] `MAN/data/google_storage_bucket.media/initial-copy/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/rehearsal` — The step `MAN/data/google_storage_bucket.media/rehearsal` is complete.
- [ ] `MAN/data/google_storage_bucket.media/delta-sync/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/initial-copy/rclone-copy` — The step `MAN/data/google_storage_bucket.media/initial-copy/rclone-copy` is complete.
- [ ] `TF/stackit_postgresflex_instance.postgres` · `variable-supplied` `variable=postgres_allowed_cidrs` — The variable `postgres_allowed_cidrs` has a value.
- [ ] `TF/stackit_postgresflex_instance.postgres` · `variable-supplied` `variable=postgres_storage_size` — The variable `postgres_storage_size` has a value.
- [ ] `TF/stackit_postgresflex_instance.postgres` · `variable-supplied` `variable=postgresflex_storage_class` — The variable `postgresflex_storage_class` has a value.
- [ ] `TF/stackit_postgresflex_instance.postgres` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `MAN/data/google_sql_database_instance.postgres/preflight` · `action-complete` `action=TF/stackit_postgresflex_instance.postgres` — The step `TF/stackit_postgresflex_instance.postgres` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/rehearsal` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/preflight` — The step `MAN/data/google_sql_database_instance.postgres/preflight` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/initial-copy/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/rehearsal` — The step `MAN/data/google_sql_database_instance.postgres/rehearsal` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/initial-copy/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/delta-sync/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/initial-copy/logical-replication` — The step `MAN/data/google_sql_database_instance.postgres/initial-copy/logical-replication` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/delta-sync/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/pubsub.topic/name/google_pubsub_topic.faux` · `decision-answered` `decision=DEC-GEN-CONVERT-API-OPT-IN/google_pubsub_topic.faux` — The decision `DEC-GEN-CONVERT-API-OPT-IN/google_pubsub_topic.faux` is answered (`executive/decisions.md`).
- [ ] `TF/stackit_rabbitmq_instance.messaging` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_rabbitmq_instance.messaging` · `variable-supplied` `variable=rabbitmq_allowed_cidrs` — The variable `rabbitmq_allowed_cidrs` has a value.
- [ ] `TF/stackit_rabbitmq_instance.messaging` · `variable-supplied` `variable=rabbitmq_plan_name` — The variable `rabbitmq_plan_name` has a value.
- [ ] `TF/stackit_rabbitmq_instance.messaging` · `variable-supplied` `variable=rabbitmq_version` — The variable `rabbitmq_version` has a value.
- [ ] `TF/stackit_ske_cluster.containers` · `variable-supplied` `variable=containers_machine_type` — The variable `containers_machine_type` has a value.
- [ ] `TF/stackit_ske_cluster.containers` · `variable-supplied` `variable=containers_nodes_max` — The variable `containers_nodes_max` has a value.
- [ ] `TF/stackit_ske_cluster.containers` · `variable-supplied` `variable=containers_nodes_min` — The variable `containers_nodes_min` has a value.
- [ ] `TF/stackit_ske_cluster.containers` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `MAN/unit/google_cloudbuild_trigger.activategcb` · `decision-answered` `decision=DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.activategcb` — The decision `DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.activategcb` is answered (`executive/decisions.md`).
- [ ] `MAN/unit/google_cloudbuild_trigger.init` · `decision-answered` `decision=DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.init` — The decision `DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.init` is answered (`executive/decisions.md`).
- [ ] `MAN/unit/google_cloudbuild_trigger.placeholder` · `decision-answered` `decision=DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.placeholder` — The decision `DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.placeholder` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/dump-restore` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/rehearsal` — The step `MAN/data/google_sql_database_instance.postgres/rehearsal` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/dump-restore` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/dump-restore` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/write-freeze/dump-restore` — The step `MAN/data/google_sql_database_instance.postgres/write-freeze/dump-restore` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/dump-restore` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/dump-restore` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/final-sync/dump-restore` — The step `MAN/data/google_sql_database_instance.postgres/final-sync/dump-restore` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/dump-restore` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/delta-sync/logical-replication` — The step `MAN/data/google_sql_database_instance.postgres/delta-sync/logical-replication` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/write-freeze/logical-replication` — The step `MAN/data/google_sql_database_instance.postgres/write-freeze/logical-replication` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/final-sync/logical-replication` — The step `MAN/data/google_sql_database_instance.postgres/final-sync/logical-replication` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/own-tool` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/rehearsal` — The step `MAN/data/google_sql_database_instance.postgres/rehearsal` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/write-freeze/own-tool` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/own-tool` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/write-freeze/own-tool` — The step `MAN/data/google_sql_database_instance.postgres/write-freeze/own-tool` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/final-sync/own-tool` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/own-tool` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/final-sync/own-tool` — The step `MAN/data/google_sql_database_instance.postgres/final-sync/own-tool` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/reconcile/own-tool` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_storage_bucket.media/write-freeze/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/delta-sync/rclone-copy` — The step `MAN/data/google_storage_bucket.media/delta-sync/rclone-copy` is complete.
- [ ] `MAN/data/google_storage_bucket.media/final-sync/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/write-freeze/rclone-copy` — The step `MAN/data/google_storage_bucket.media/write-freeze/rclone-copy` is complete.
- [ ] `MAN/data/google_storage_bucket.media/reconcile/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/final-sync/rclone-copy` — The step `MAN/data/google_storage_bucket.media/final-sync/rclone-copy` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/cleanup/dump-restore` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/reconcile/dump-restore` — The step `MAN/data/google_sql_database_instance.postgres/reconcile/dump-restore` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/cleanup/dump-restore` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_sql_database_instance.postgres/cleanup/logical-replication` · `action-complete` `action=MAN/data/google_sql_database_instance.postgres/reconcile/logical-replication` — The step `MAN/data/google_sql_database_instance.postgres/reconcile/logical-replication` is complete.
- [ ] `MAN/data/google_sql_database_instance.postgres/cleanup/logical-replication` · `decision-answered` `decision=DEC-GEN-CONVERT-DATA-MOVEMENT` — The decision `DEC-GEN-CONVERT-DATA-MOVEMENT` is answered (`executive/decisions.md`).
- [ ] `MAN/data/google_storage_bucket.media/cleanup/rclone-copy` · `action-complete` `action=MAN/data/google_storage_bucket.media/reconcile/rclone-copy` — The step `MAN/data/google_storage_bucket.media/reconcile/rclone-copy` is complete.

## After each step

- [ ] `TF/stackit_secretsmanager_instance.migrated_secrets` · `resource-exists` `address=stackit_secretsmanager_instance.migrated_secrets` — `stackit_secretsmanager_instance.migrated_secrets` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_secretsmanager_user.migration` · `resource-exists` `address=stackit_secretsmanager_user.migration` — `stackit_secretsmanager_user.migration` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password` · `property-matches` `instance=stackit_secretsmanager_instance.migrated_secrets` `property=a current version of the secret at the path STACKIT_INPUT_SECRET_NAME_DJANGO_ADMIN_PASSWORD names (ReadSecret, GET /v1/{instanceId}/data/{path})` `value=exists` — A property of the object has the value the plan states.
- [ ] `API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings` · `property-matches` `instance=stackit_secretsmanager_instance.migrated_secrets` `property=a current version of the secret at the path STACKIT_INPUT_SECRET_NAME_DJANGO_SETTINGS names (ReadSecret, GET /v1/{instanceId}/data/{path})` `value=exists` — A property of the object has the value the plan states.
- [ ] `TF/stackit_service_account.automation` · `resource-exists` `address=stackit_service_account.automation` — `stackit_service_account.automation` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_service_account.client` · `resource-exists` `address=stackit_service_account.client` — `stackit_service_account.client` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_service_account.init` · `resource-exists` `address=stackit_service_account.init` — `stackit_service_account.init` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_service_account.server` · `resource-exists` `address=stackit_service_account.server` — `stackit_service_account.server` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_objectstorage_bucket.media` · `resource-exists` `address=stackit_objectstorage_bucket.media` — `stackit_objectstorage_bucket.media` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_postgresflex_instance.postgres` · `resource-exists` `address=stackit_postgresflex_instance.postgres` — `stackit_postgresflex_instance.postgres` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_rabbitmq_instance.messaging` · `resource-exists` `address=stackit_rabbitmq_instance.messaging` — `stackit_rabbitmq_instance.messaging` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_ske_cluster.containers` · `resource-exists` `address=stackit_ske_cluster.containers` — `stackit_ske_cluster.containers` exists in the STACKIT project (OpenTofu's state lists it).

## Commands to check the result

Read-only commands, from the output folder, for what the draft wrote: a workload is rolled out and has pods. They need the kubeconfig of the cluster (`terraform/handover/cluster-access/kubeconfig.md`) in `KUBECONFIG` and the namespace the manifests were applied into in `NAMESPACE`; `sh execution/verify/verify.sh` runs them all and exits non-zero when one fails. StackToIT has not run any of them.

### Workloads

A manifest the draft holds back (`replicas: 0`) shows no pod until the start step of its service scales it: run these after that step.

- `terraform/kubernetes/server/manifests.yaml`, Deployment `server`:

```sh
kubectl -n "$NAMESPACE" rollout status deployment/server --timeout=300s
kubectl -n "$NAMESPACE" get pods -l app.kubernetes.io/name=server
```
