Skip to content

feat(patientResources): SAV-1092: QR code ID#9490

Open
NavarroEmilioLuis wants to merge 6 commits intomainfrom
feature/sav-1092-generate-qr-code
Open

feat(patientResources): SAV-1092: QR code ID#9490
NavarroEmilioLuis wants to merge 6 commits intomainfrom
feature/sav-1092-generate-qr-code

Conversation

@NavarroEmilioLuis
Copy link
Copy Markdown
Contributor

@NavarroEmilioLuis NavarroEmilioLuis commented Apr 1, 2026

Changes

This is adding a new patient resource: a QR code ID card. It also contains icon changes to the resource section and copy changes.

Auto-Deploy

  • Deploy
Options
  • Synthetic test

Tests

  • Run E2E Tests

Review Hero

  • Run Review Hero
  • Auto-fix review suggestions Wait for Review Hero to finish, resolve any comments you disagree with or want to fix manually, then check this to auto-fix the rest.
  • Auto-fix CI failures Check this to auto-fix lint errors, test failures, and other CI issues.
  • Auto-merge upstream Check this to merge the base branch into this PR, with AI conflict resolution if needed.

Remember to...

  • ...write or update tests
  • ...add UI screenshots and testing notes to the Linear issue
  • ...add any manual upgrade steps to the Linear issue
  • ...update the config reference, settings reference, or any relevant runbook(s)
  • ...call out additions or changes to config files for the deployment team to take note of

@review-hero
Copy link
Copy Markdown

review-hero bot commented Apr 1, 2026

🦸 Review Hero Summary
9 agents reviewed this PR | 1 critical | 4 suggestions | 1 nitpick | Filtering: consensus 3 voters, 2 below threshold

Below consensus threshold (2 unique issues not confirmed by majority)
Location Agent Severity Comment
packages/shared/src/utils/patientCertificates/QRCodeIDCardPrintout.jsx:71 Design & Architecture suggestion StyleSheet.create is called inside the component body, so it runs on every render. The pageStyles object depends on cardDimensions and measures props, but the same could be achieved by comp...
packages/web/app/components/PatientPrinting/modals/PatientQRCodeIDCardPage.jsx:11 Design & Architecture nitpick cardDimensions is defined identically in both PatientQRCodeIDCardPage.jsx and PatientIDCardPage.jsx ('85.6mm' × '53.92mm'). These represent a standard ID-1 card size and should be a share...

Nitpicks

File Line Agent Comment
packages/shared/src/utils/patientCertificates/QRCodeIDCardPrintout.jsx 77 Design & Architecture const Card = props => <View style={pageStyles.card} {...props} />; is defined inside the component render function body. This creates a new component reference on every render, which can cause React-PDF to remount the element unnecessarily. The dynamic styles driving this (cardDimensions, `me...
Local fix prompt (copy to your coding agent)

Fix these issues identified on the pull request. One commit per issue fixed.


packages/web/app/components/PatientPrinting/modals/PatientQRCodeIDCardPage.jsx:24: patient.displayId is passed directly to QRCode.toDataURL without any guard. If it is null, undefined, or an empty string, the QR code will encode a meaningless or empty value and the user gets no warning. Since this is a system boundary (patient data from the server), a guard like if (!patient.displayId) return; before calling toDataURL would surface configuration problems early.


packages/web/app/components/PatientPrinting/modals/PatientQRCodeIDCardPage.jsx:32: The async generateQR call has no error handling. If QRCode.toDataURL throws (e.g. network issue, invalid input), the error is silently swallowed and qrCodeDataUrl stays null forever — the PDFLoader spinner never resolves and the user gets no feedback. Add a try/catch in generateQR to handle the error state.


packages/shared/src/utils/patientCertificates/QRCodeIDCardPrintout.jsx:78: measures.cardMarginTop and measures.cardMarginLeft are accessed unconditionally inside StyleSheet.create, but measures comes from getSetting('printMeasures.idCardPage') which returns undefined when the setting is not configured. This crashes with TypeError: Cannot read properties of undefined. The existing IDCardPrintout has the same pattern, so this is an existing risk that is being replicated here — but qrCodeDataUrl must be truthy before the printout renders (it's gated by PDFLoader isLoading), which means this component always renders with measures possibly undefined. Destructure with defaults or guard against null measures before computing the style.


packages/web/app/components/PatientPrinting/modals/PatientQRCodeIDCardPage.jsx:54: getSetting is passed as a prop to QRCodeIDCardPrintout but QRCodeIDCardPrintoutComponent only destructures { patient, qrCodeDataUrl, cardDimensions, measures, getTranslation }getSetting is never used. The measures value is already computed from getSetting in this parent and passed down directly, so getSetting is redundant. Remove it to keep the interface minimal and avoid confusion about what the printout component requires.


packages/shared/src/utils/patientCertificates/QRCodeIDCardPrintout.jsx:77: const Card = props => &lt;View style={pageStyles.card} {...props} />; is defined inside the component render function body. This creates a new component reference on every render, which can cause React-PDF to remount the element unnecessarily. The dynamic styles driving this (cardDimensions, measures) could instead be passed directly as a style prop: &lt;View style={pageStyles.card}>. This pattern is copied from IDCardPrintout but is worth fixing here too.


packages/web/app/components/PatientPrinting/modals/PrintPatientDetailsModal.jsx:208: The qrCodeId option is placed in its own dedicated StyledPrintOptionsRow, while the existing identification options (idcard, barcode) are grouped together in the row above it. Since QR code ID is also an identification card, it belongs in that same row alongside the other two. The isolated row creates an inconsistent visual hierarchy and wastes vertical space for a single item.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

Android builds 📱

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

🍹 up on tamanu-on-k8s/bes/tamanu-on-k8s/feature-sav-1092-generate-qr-code

Pulumi report
   Updating (feature-sav-1092-generate-qr-code)

View Live: https://app.pulumi.com/bes/tamanu-on-k8s/feature-sav-1092-generate-qr-code/updates/1


+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (0s) 
@ Updating.....
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (2s) read kubernetes:core/v1:Namespace tamanu-feature-sav-1092-generate-qr-code
@ Updating....
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (2s) read pulumi:pulumi:StackReference bes/k8s-core/tamanu-internal-main
+  bes:tamanu:FacilityServer 1 creating (0s) 
+  bes:tamanu:WebFrontend patient-portal creating (0s) 
+  bes:tamanu:CentralServer central creating (0s) 
+  bes:tamanu:FacilityServer 2 creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (3s) read pulumi:pulumi:StackReference bes/k8s-core/tamanu-internal-main
+  bes:tamanu:WebFrontend facility-2 creating (0s) 
+  bes:tamanu:WebFrontend facility-1 creating (0s) 
@ Updating....
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (3s) Downloading provider: random
+  bes:tamanu:WebFrontend central creating (0s) 
@ Updating....
+  random:index:RandomPassword central-raw-db creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) read kubernetes:core/v1:Namespace tamanu-feature-sav-1092-generate-qr-code
+  random:index:RandomPassword central-reporting-db creating (0s) 
+  random:index:RandomPassword facility-1-reporting-db creating (0s) 
+  random:index:RandomPassword facility-1-raw-db creating (0s) 
@ Updating....
+  random:index:RandomPassword facility-2-raw-db creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) read pulumi:pulumi:StackReference bes/core/tamanu-internal
+  random:index:RandomPassword facility-2-reporting-db creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-web creating (0s) 
+  kubernetes:core/v1:Service facility-2-sync creating (0s) 
+  kubernetes:core/v1:ServiceAccount app-sa creating (0s) 
+  kubernetes:core/v1:Secret bugsnag creating (0s) 
+  kubernetes:core/v1:Secret pullsecret-github creating (0s) 
+  kubernetes:core/v1:Secret tupaia creating (0s) 
+  kubernetes:core/v1:Secret mailgun creating (0s) 
+  kubernetes:core/v1:Service central-api creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) Waiting for central-db...
+  kubernetes:core/v1:Service central-web creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) Waiting for facility-1-db...
+  random:index:RandomPassword central-raw-db created (0.36s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) Waiting for facility-2-db...
+  random:index:RandomPassword facility-2-raw-db created (0.31s) 
+  random:index:RandomPassword facility-1-raw-db created (0.32s) 
+  random:index:RandomPassword central-reporting-db created (0.32s) 
+  random:index:RandomPassword facility-2-reporting-db created (0.32s) 
+  random:index:RandomPassword facility-1-reporting-db created (0.34s) 
+  kubernetes:core/v1:Service facility-1-sync creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (5s) read pulumi:pulumi:StackReference bes/core/tamanu-internal
+  kubernetes:core/v1:Secret tupaia creating (0s) 
+  kubernetes:core/v1:Secret tupaia creating (0s) 
+  kubernetes:core/v1:Secret tupaia created (0.70s) 
+  kubernetes:core/v1:Service facility-1-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-1 creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-2 creating (0s) 
+  kubernetes:core/v1:Service facility-2-api creating (0s) 
+  kubernetes:apps/v1:Deployment patient-portal-web creating (0s) 
+  kubernetes:core/v1:Service facility-2-web creating (0s) 
+  kubernetes:core/v1:Service central-api creating (0s) 
@ Updating....
+  kubernetes:core/v1:Secret mailgun creating (1s) 
+  kubernetes:core/v1:Secret mailgun creating (1s) 
+  kubernetes:core/v1:Secret mailgun created (1s) 
+  kubernetes:core/v1:Secret pullsecret-github creating (1s) 
+  kubernetes:core/v1:Secret pullsecret-github creating (1s) 
+  kubernetes:core/v1:Secret pullsecret-github created (1s) 
+  kubernetes:core/v1:Secret bugsnag creating (1s) 
+  kubernetes:core/v1:Secret bugsnag creating (1s) 
+  kubernetes:core/v1:Secret bugsnag created (1s) 
+  kubernetes:core/v1:Service facility-2-sync creating (1s) 
+  kubernetes:apps/v1:Deployment facility-2-web creating (1s) 
+  kubernetes:core/v1:ServiceAccount app-sa creating (1s) 
+  kubernetes:core/v1:ServiceAccount app-sa creating (1s) 
+  kubernetes:core/v1:ServiceAccount app-sa created (1s) 
+  kubernetes:core/v1:Service patient-portal-web creating (0s) 
+  kubernetes:core/v1:Service central-web creating (1s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway patient-portal creating (0s) 
+  kubernetes:core/v1:Service facility-1-sync creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-2 creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-2 creating (0s) 
+  kubernetes:core/v1:Service facility-2-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-2 created (0.75s) 
+  kubernetes:core/v1:Service facility-1-web creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway central creating (0s) 
+  kubernetes:apps/v1:Deployment central-web creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-1 creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-1 creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway facility-1 created (0.81s) 
+  kubernetes:apps/v1:Deployment facility-1-web creating (0s) 
+  kubernetes:core/v1:Secret central-raw-db creating (0s) 
+  kubernetes:core/v1:Service facility-1-api creating (0s) 
+  kubernetes:apps/v1:Deployment patient-portal-web creating (0s) 
+  kubernetes:core/v1:Service facility-2-web creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway patient-portal creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway patient-portal creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway patient-portal created (0.38s) 
+  kubernetes:core/v1:Service patient-portal-web creating (0s) 
@ Updating....
+  kubernetes:core/v1:Secret facility-1-reporting-db creating (0s) 
+  kubernetes:core/v1:Service facility-1-web creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-web creating (0s) 
+  kubernetes:apps/v1:Deployment central-web creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway central creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway central creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:Gateway central created (0.61s) 
+  kubernetes:core/v1:Secret central-raw-db creating (0s) 
+  kubernetes:core/v1:Secret central-raw-db creating (0s) 
+  kubernetes:core/v1:Secret central-raw-db created (0.57s) 
+  kubernetes:core/v1:Secret facility-1-raw-db creating (0s) 
+  kubernetes:core/v1:Secret facility-1-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret facility-1-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret facility-1-reporting-db created (0.55s) 
+  kubernetes:core/v1:Service central-api creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service central-web creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service central-web creating (2s) 
+  kubernetes:core/v1:Service central-web created (2s) 
+  kubernetes:core/v1:Service patient-portal-web creating (1s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service patient-portal-web creating (1s) 
+  kubernetes:core/v1:Service patient-portal-web created (1s) 
+  kubernetes:core/v1:Secret facility-2-raw-db creating (0s) 
+  kubernetes:core/v1:Service facility-2-sync creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service facility-2-api creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service facility-1-api creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service facility-2-web creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Secret facility-2-reporting-db creating (0s) 
+  kubernetes:core/v1:Service facility-2-web creating (2s) 
+  kubernetes:core/v1:Service facility-2-web created (2s) 
+  kubernetes:core/v1:Secret central-reporting-db creating (0s) 
+  kubernetes:core/v1:ConfigMap central creating (0s) 
@ Updating....
+  kubernetes:core/v1:Service facility-1-web creating (1s) [1/3] Finding Pods to direct traffic to
+  kubernetes:core/v1:Service facility-1-web creating (1s) 
+  kubernetes:core/v1:Service facility-1-web created (1s) 
+  kubernetes:core/v1:Service facility-1-sync creating (2s) [1/3] Finding Pods to direct traffic to
+  kubernetes:apps/v1:Deployment patient-portal-web creating (2s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment patient-portal-web creating (2s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:core/v1:Secret facility-1-raw-db creating (0s) 
+  kubernetes:core/v1:Secret facility-1-raw-db creating (0s) 
+  kubernetes:core/v1:Secret facility-1-raw-db created (0.70s) 
+  kubernetes:apps/v1:Deployment facility-1-web creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment central-web creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-2-web creating (3s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-2-web creating (3s) Waiting for app ReplicaSet to be available (0/2 Pods available)
+  kubernetes:core/v1:ConfigMap provisioning creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-1-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-2-traffic-policy creating (0s) 
+  kubernetes:apps/v1:Deployment central-web creating (1s) Waiting for app ReplicaSet to be available (0/2 Pods available)
+  kubernetes:apps/v1:Deployment facility-1-web creating (1s) Waiting for app ReplicaSet to be available (0/2 Pods available)
+  kubernetes:core/v1:ConfigMap central creating (0s) 
+  kubernetes:core/v1:ConfigMap central creating (0s) 
+  kubernetes:core/v1:ConfigMap central created (0.48s) 
+  kubernetes:core/v1:Secret facility-2-raw-db creating (0s) 
+  kubernetes:core/v1:Secret facility-2-raw-db creating (0s) 
+  kubernetes:core/v1:Secret facility-2-raw-db created (0.68s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy patient-portal-traffic-policy creating (0s) 
+  kubernetes:core/v1:Secret central-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret central-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret central-reporting-db created (0.65s) 
+  kubernetes:core/v1:Secret facility-2-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret facility-2-reporting-db creating (0s) 
+  kubernetes:core/v1:Secret facility-2-reporting-db created (0.74s) 
+  kubernetes:core/v1:ConfigMap provisioning creating (0s) 
+  kubernetes:core/v1:ConfigMap provisioning creating (0s) 
+  kubernetes:core/v1:ConfigMap provisioning created (0.47s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy central-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-2-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-2-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-2-traffic-policy created (0.40s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-1-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-1-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy facility-1-traffic-policy created (0.48s) 
@ Updating....
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-frontend creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-1-db creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy patient-portal-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy patient-portal-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy patient-portal-traffic-policy created (0.43s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-frontend creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (9s) read kubernetes:core/v1:ConfigMap actual-provisioning
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy central-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy central-traffic-policy creating (0s) 
+  kubernetes:gateway.envoyproxy.io/v1alpha1:ClientTrafficPolicy central-traffic-policy created (0.44s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-frontend created (0.41s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-frontend created (0.43s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-frontend created (0.51s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster central-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-2-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-1-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-1-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-1-db created (0.72s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-frontend creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-frontend created (0.56s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (10s) read kubernetes:core/v1:ConfigMap actual-provisioning
@ Updating....
+  kubernetes:postgresql.cnpg.io/v1:Cluster central-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster central-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster central-db created (0.74s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-2-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-2-db creating (0s) 
+  kubernetes:postgresql.cnpg.io/v1:Cluster facility-2-db created (0.75s) 
+  kubernetes:core/v1:ConfigMap facility-2 creating (0s) 
+  kubernetes:core/v1:ConfigMap facility-1 creating (0s) 
@ Updating....
+  kubernetes:core/v1:ConfigMap facility-1 creating (0s) 
+  kubernetes:core/v1:ConfigMap facility-1 creating (0s) 
+  kubernetes:core/v1:ConfigMap facility-1 created (0.45s) 
+  kubernetes:core/v1:ConfigMap facility-2 creating (0s) 
+  kubernetes:core/v1:ConfigMap facility-2 creating (0s) 
+  kubernetes:core/v1:ConfigMap facility-2 created (0.50s) 
@ Updating.........
+  kubernetes:core/v1:Service central-api creating (12s) Service initialization complete
+  kubernetes:core/v1:Service central-api creating (12s) 
+  kubernetes:core/v1:Service central-api created (12s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api-legacy creating (0s) 
+  kubernetes:core/v1:Service facility-2-sync creating (12s) Service initialization complete
+  kubernetes:core/v1:Service facility-2-sync creating (12s) 
+  kubernetes:core/v1:Service facility-2-sync created (12s) 
+  kubernetes:core/v1:Service facility-2-api creating (12s) Service initialization complete
+  kubernetes:core/v1:Service facility-1-api creating (12s) Service initialization complete
+  kubernetes:core/v1:Service facility-1-api creating (12s) 
+  kubernetes:core/v1:Service facility-2-api creating (12s) 
+  kubernetes:core/v1:Service facility-1-api created (12s) 
+  kubernetes:core/v1:Service facility-2-api created (12s) 
@ Updating....
+  kubernetes:core/v1:Service facility-1-sync creating (12s) Service initialization complete
+  kubernetes:core/v1:Service facility-1-sync creating (12s) 
+  kubernetes:core/v1:Service facility-1-sync created (12s) 
+  kubernetes:apps/v1:Deployment patient-portal-web creating (12s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/patient-portal-web-0addf8a1-c59f487c5-rkcg6]: containers with unready status: [http]
+  kubernetes:apps/v1:Deployment facility-1-web creating (11s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-web-a0cdba01-85544bf8f4-6xfr4]: containers with unready status: [http]
+  kubernetes:apps/v1:Deployment facility-1-web creating (11s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-web-a0cdba01-85544bf8f4-dcxxn]: containers with unready status: [http]
+  kubernetes:apps/v1:Deployment central-web creating (11s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-web-e8e8056b-7fbcbfbf6d-r4f4t]: containers with unready status: [http]
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api-legacy created (0.36s) 
+  kubernetes:apps/v1:Deployment facility-2-web creating (13s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-web-8699ece2-87f655587-bhnz9]: containers with unready status: [http]
+  kubernetes:apps/v1:Deployment facility-2-web creating (13s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-web-8699ece2-87f655587-kpddr]: containers with unready status: [http]
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api-legacy created (0.38s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute patient-portal-api created (0.55s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute central-api created (0.61s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api created (0.43s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api created (0.46s) 
+  kubernetes:apps/v1:Deployment central-web creating (12s) Waiting for app ReplicaSet to be available (1/2 Pods available)
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-2-api-legacy created (0.50s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api-legacy creating (0s) 
+  kubernetes:gateway.networking.k8s.io/v1:HTTPRoute facility-1-api-legacy created (0.59s) 
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-web creating (14s) Waiting for app ReplicaSet to be available (1/2 Pods available)
+  kubernetes:apps/v1:Deployment facility-1-web creating (12s) Waiting for app ReplicaSet to be available (1/2 Pods available)
+  kubernetes:apps/v1:Deployment central-web creating (13s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment central-web creating (13s) 
+  kubernetes:apps/v1:Deployment central-web created (13s) 
@ Updating....
+  kubernetes:apps/v1:Deployment facility-1-web creating (14s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-1-web creating (14s) 
@ Updating....
+  kubernetes:apps/v1:Deployment facility-1-web created (14s) 
+  kubernetes:apps/v1:Deployment facility-2-web creating (16s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-2-web creating (16s) 
+  kubernetes:apps/v1:Deployment facility-2-web created (16s) 
+  kubernetes:apps/v1:Deployment patient-portal-web creating (15s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment patient-portal-web creating (15s) 
+  kubernetes:apps/v1:Deployment patient-portal-web created (15s) 
@ Updating.....................
+  kubernetes:batch/v1:Job facility-1-migrator creating (0s) 
+  kubernetes:batch/v1:Job facility-1-migrator creating (0s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (40s) Secret facility-1-db-superuser not found or not ready: Error: HTTP-Code: 404
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (40s) Message: Unknown API Status Code!
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (40s) Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"facility-1-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"facility-1-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (40s) Headers: {"audit-id":"1c4777e3-8d6f-4394-b71e-729350d3058c","cache-control":"no-cache, private","connection":"close","content-length":"220","content-type":"application/json","date":"Thu, 02 Apr 2026 02:51:54 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}
+  kubernetes:core/v1:Secret facility-1-db-url creating (0s) 
@ Updating....
+  kubernetes:batch/v1:Job facility-1-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-1-migrator-5525cc54" to start
+  kubernetes:batch/v1:Job facility-1-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-1-migrator-5525cc54" to succeed (Active: 1 | Succeeded: 0 | Failed: 0)
+  kubernetes:core/v1:Secret facility-1-db-url creating (0s) 
+  kubernetes:core/v1:Secret facility-1-db-url creating (0s) 
+  kubernetes:core/v1:Secret facility-1-db-url created (0.43s) 
@ Updating........
+  kubernetes:batch/v1:Job facility-2-migrator creating (0s) 
+  kubernetes:batch/v1:Job facility-2-migrator creating (0s) 
+  kubernetes:batch/v1:Job facility-2-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-2-migrator-87a6480a" to start
@ Updating....
+  kubernetes:batch/v1:Job facility-2-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-2-migrator-87a6480a" to succeed (Active: 1 | Succeeded: 0 | Failed: 0)
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (46s) Secret facility-2-db-superuser not found or not ready: Error: HTTP-Code: 404
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (46s) Message: Unknown API Status Code!
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (46s) Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"facility-2-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"facility-2-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (46s) Headers: {"audit-id":"9b4eba84-9fc1-4839-86e2-f324a44a9cb3","cache-control":"no-cache, private","connection":"close","content-length":"220","content-type":"application/json","date":"Thu, 02 Apr 2026 02:52:00 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}
+  kubernetes:core/v1:Secret facility-2-db-url creating (0s) 
+  kubernetes:core/v1:Secret facility-2-db-url creating (0s) 
+  kubernetes:core/v1:Secret facility-2-db-url creating (0s) 
+  kubernetes:core/v1:Secret facility-2-db-url created (0.43s) 
@ Updating....
+  kubernetes:batch/v1:Job central-migrator creating (0s) 
+  kubernetes:batch/v1:Job central-migrator creating (0s) 
+  kubernetes:batch/v1:Job central-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-migrator-10f4762f" to start
+  kubernetes:batch/v1:Job central-migrator creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-migrator-10f4762f" to succeed (Active: 1 | Succeeded: 0 | Failed: 0)
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (48s) Secret central-db-superuser not found or not ready: Error: HTTP-Code: 404
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (48s) Message: Unknown API Status Code!
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (48s) Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"central-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"central-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code creating (48s) Headers: {"audit-id":"ea5afc3d-71bf-487b-8529-684193c56e20","cache-control":"no-cache, private","connection":"close","content-length":"214","content-type":"application/json","date":"Thu, 02 Apr 2026 02:52:02 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}
+  kubernetes:core/v1:Secret central-db-url creating (0s) 
@ Updating....
+  kubernetes:core/v1:Secret central-db-url creating (0s) 
+  kubernetes:core/v1:Secret central-db-url creating (0s) 
+  kubernetes:core/v1:Secret central-db-url created (0.55s) 
@ Updating.................................
+  kubernetes:batch/v1:Job facility-1-migrator creating (39s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-migrator-5525cc54-64ql5]: Container "migrator" completed with exit code 0
@ Updating.....
+  kubernetes:batch/v1:Job facility-1-migrator creating (40s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-1-migrator-5525cc54" to succeed (Active: 0 | Succeeded: 0 | Failed: 0)
+  kubernetes:batch/v1:Job facility-1-migrator creating (41s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-1-migrator-5525cc54" to succeed (Active: 0 | Succeeded: 1 | Failed: 0)
+  kubernetes:batch/v1:Job facility-1-migrator creating (41s) 
+  kubernetes:batch/v1:Job facility-1-migrator created (41s) 
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-api creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-sync creating (0s) 
@ Updating....
+  kubernetes:apps/v1:Deployment facility-1-api creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-api creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-1-api creating (0s) Waiting for app ReplicaSet to be available (0/2 Pods available)
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-1-sync creating (0s) 
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (0s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:apps/v1:Deployment facility-1-sync creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-1-sync creating (0s) Waiting for app ReplicaSet to be available (0/1 Pods available)
@ Updating....
+  kubernetes:batch/v1:Job central-migrator creating (34s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-migrator-10f4762f-z92m9]: Container "migrator" completed with exit code 0
@ Updating....
+  kubernetes:batch/v1:Job facility-2-migrator creating (37s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-migrator-87a6480a-zzn28]: Container "migrator" completed with exit code 0
@ Updating....
+  kubernetes:batch/v1:Job central-migrator creating (37s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-migrator-10f4762f" to succeed (Active: 0 | Succeeded: 0 | Failed: 0)
+  kubernetes:batch/v1:Job central-migrator creating (37s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-migrator-10f4762f" to succeed (Active: 0 | Succeeded: 1 | Failed: 0)
+  kubernetes:batch/v1:Job central-migrator creating (37s) 
+  kubernetes:batch/v1:Job central-migrator created (37s) 
+  kubernetes:batch/v1:Job central-provisioner creating (0s) 
@ Updating....
+  kubernetes:batch/v1:Job central-provisioner creating (0s) 
+  kubernetes:batch/v1:Job central-provisioner creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-provisioner-c6bdd6fb" to start
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (4s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-1-tasks creating (4s) 
+  kubernetes:apps/v1:Deployment facility-1-tasks created (4s) 
+  kubernetes:batch/v1:Job central-provisioner creating (0s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-provisioner-c6bdd6fb" to succeed (Active: 1 | Succeeded: 0 | Failed: 0)
+  kubernetes:batch/v1:Job facility-2-migrator creating (39s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-2-migrator-87a6480a" to succeed (Active: 0 | Succeeded: 0 | Failed: 0)
+  kubernetes:batch/v1:Job facility-2-migrator creating (39s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/facility-2-migrator-87a6480a" to succeed (Active: 0 | Succeeded: 1 | Failed: 0)
+  kubernetes:batch/v1:Job facility-2-migrator creating (39s) 
+  kubernetes:batch/v1:Job facility-2-migrator created (39s) 
+  kubernetes:apps/v1:Deployment facility-2-api creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-sync creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-api creating (0s) 
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-sync creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-api creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-2-api creating (0s) Waiting for app ReplicaSet to be available (0/2 Pods available)
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (0s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:apps/v1:Deployment facility-2-sync creating (0s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment facility-2-sync creating (0s) Waiting for app ReplicaSet to be available (0/1 Pods available)
@ Updating......
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (3s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-2-tasks creating (3s) 
+  kubernetes:apps/v1:Deployment facility-2-tasks created (3s) 
@ Updating.....
+  kubernetes:apps/v1:Deployment facility-1-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-p4q7j]: containers with unready status: [server]
+  kubernetes:apps/v1:Deployment facility-1-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-5glxl]: containers with unready status: [server]
+  kubernetes:apps/v1:Deployment facility-1-sync creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-sync-568f7bcb4c-g782f]: containers with unready status: [server]
@ Updating.......
+  kubernetes:apps/v1:Deployment facility-2-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server]
+  kubernetes:apps/v1:Deployment facility-2-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-99vrz]: containers with unready status: [server]
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-sync creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-sync-5f896d55fc-9zf76]: containers with unready status: [server]
@ Updating..............................................................................
+  kubernetes:apps/v1:Deployment facility-1-api creating (90s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-p4q7j]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:53:57Z (Error: exit code 1)
@ Updating.................
+  kubernetes:apps/v1:Deployment facility-2-api creating (100s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server]Container "server" completed with exit code 1
+  kubernetes:apps/v1:Deployment facility-2-api creating (100s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-99vrz]: containers with unready status: [server]Container "server" completed with exit code 1
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-sync creating (100s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-sync-5f896d55fc-9zf76]: containers with unready status: [server]Container "server" completed with exit code 1
@ Updating........
+  kubernetes:apps/v1:Deployment facility-1-api creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-p4q7j]: containers with unready status: [server]Container "server" completed with exit code 1
+  kubernetes:apps/v1:Deployment facility-1-api creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-5glxl]: containers with unready status: [server]Container "server" completed with exit code 1
+  kubernetes:apps/v1:Deployment facility-1-sync creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-sync-568f7bcb4c-g782f]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:24Z (Error: exit code 1)
@ Updating....
+  kubernetes:batch/v1:Job central-provisioner creating (107s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-provisioner-c6bdd6fb-jw4pm]: Container "provisioner" completed with exit code 0
@ Updating.....
+  kubernetes:batch/v1:Job central-provisioner creating (109s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-provisioner-c6bdd6fb" to succeed (Active: 0 | Succeeded: 0 | Failed: 0)
+  kubernetes:batch/v1:Job central-provisioner creating (109s) Waiting for Job "tamanu-feature-sav-1092-generate-qr-code/central-provisioner-c6bdd6fb" to succeed (Active: 0 | Succeeded: 1 | Failed: 0)
+  kubernetes:batch/v1:Job central-provisioner creating (109s) 
+  kubernetes:batch/v1:Job central-provisioner created (109s) 
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (0s) 
+  kubernetes:apps/v1:Deployment central-api creating (0s) 
+  kubernetes:apps/v1:Deployment central-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (0s) 
@ Updating....
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (0s) 
+  kubernetes:apps/v1:Deployment central-tasks creating (0s) 
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (0s) 
+  kubernetes:apps/v1:Deployment central-api creating (0s) 
+  kubernetes:apps/v1:Deployment facility-2-api creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-2-api-6c56d9557f-px4qh_tamanu-feature-sav-1092-generate-qr-code(de06c05b-73ff-4b07-90b6-65d9e21817af)
+  kubernetes:apps/v1:Deployment facility-2-api creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-99vrz]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-2-api-6c56d9557f-99vrz_tamanu-feature-sav-1092-generate-qr-code(c1e6c089-8c0a-4552-891f-07015ce4d5eb)
@ Updating....
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (1s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (1s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:apps/v1:Deployment central-tasks creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment central-tasks creating (1s) Waiting for app ReplicaSet to be available (0/1 Pods available)
+  kubernetes:apps/v1:Deployment facility-2-sync creating (110s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-sync-5f896d55fc-9zf76]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-2-sync-5f896d55fc-9zf76_tamanu-feature-sav-1092-generate-qr-code(fc2640a3-2521-4f66-9595-0feb3c1ce85a)
+  kubernetes:apps/v1:Deployment central-api creating (1s) warning: [MinimumReplicasUnavailable] Deployment does not have minimum availability.
+  kubernetes:apps/v1:Deployment central-api creating (1s) Waiting for app ReplicaSet to be available (0/2 Pods available)
@ Updating......
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (4s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment central-fhir-resolver creating (4s) 
+  kubernetes:apps/v1:Deployment central-fhir-resolver created (4s) 
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (4s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment central-fhir-refresh creating (4s) 
+  kubernetes:apps/v1:Deployment central-fhir-refresh created (4s) 
@ Updating.....
+  kubernetes:apps/v1:Deployment facility-1-api creating (120s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-p4q7j]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-1-api-77ddd787b5-p4q7j_tamanu-feature-sav-1092-generate-qr-code(499cb614-423f-4ebe-8769-e78405f7050f)
+  kubernetes:apps/v1:Deployment facility-1-api creating (120s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-5glxl]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-1-api-77ddd787b5-5glxl_tamanu-feature-sav-1092-generate-qr-code(179efbf0-6b43-41bb-8da1-157803885a83)
+  kubernetes:apps/v1:Deployment facility-1-sync creating (120s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-sync-568f7bcb4c-g782f]: containers with unready status: [server][CrashLoopBackOff] back-off 10s restarting failed container=server pod=facility-1-sync-568f7bcb4c-g782f_tamanu-feature-sav-1092-generate-qr-code(057185ed-159d-4780-a077-e2e2d7d38b74)
@ Updating.......
+  kubernetes:apps/v1:Deployment central-tasks creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-tasks-18a187ba-5cc958d6bd-2w2f4]: containers with unready status: [task-runner]
+  kubernetes:apps/v1:Deployment central-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-api-bfbdb50d-74fd6cdbb7-v2hrt]: containers with unready status: [server]
+  kubernetes:apps/v1:Deployment central-api creating (10s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/central-api-bfbdb50d-74fd6cdbb7-tllww]: containers with unready status: [server]
+  kubernetes:apps/v1:Deployment facility-2-api creating (120s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server][CrashLoopBackOff] back-off 20s restarting failed container=server pod=facility-2-api-6c56d9557f-px4qh_tamanu-feature-sav-1092-generate-qr-code(de06c05b-73ff-4b07-90b6-65d9e21817af)
@ Updating.......
+  kubernetes:apps/v1:Deployment central-tasks creating (14s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment central-tasks creating (14s) 
+  kubernetes:apps/v1:Deployment central-tasks created (14s) 
@ Updating....
+  kubernetes:apps/v1:Deployment central-api creating (15s) Waiting for app ReplicaSet to be available (1/2 Pods available)
@ Updating....
+  kubernetes:apps/v1:Deployment central-api creating (16s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment central-api creating (16s) 
+  kubernetes:apps/v1:Deployment central-api created (16s) 
@ Updating.......
+  kubernetes:apps/v1:Deployment facility-2-api creating (130s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-99vrz]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:21Z (Error: exit code 1)
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-sync creating (130s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-sync-5f896d55fc-9zf76]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:22Z (Error: exit code 1)
@ Updating........
+  kubernetes:apps/v1:Deployment facility-1-api creating (140s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-p4q7j]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:28Z (Error: exit code 1)
+  kubernetes:apps/v1:Deployment facility-1-api creating (140s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-5glxl]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:28Z (Error: exit code 1)
+  kubernetes:apps/v1:Deployment facility-1-sync creating (140s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-sync-568f7bcb4c-g782f]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:27Z (Error: exit code 1)
@ Updating.................
+  kubernetes:apps/v1:Deployment facility-2-api creating (150s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server]Container "server" terminated at 2026-04-02T02:54:34Z (Error: exit code 1)
@ Updating...............
+  kubernetes:apps/v1:Deployment facility-2-api creating (161s) Waiting for app ReplicaSet to be available (1/2 Pods available)
@ Updating.....
+  kubernetes:apps/v1:Deployment facility-1-api creating (169s) Waiting for app ReplicaSet to be available (1/2 Pods available)
@ Updating.....
+  kubernetes:apps/v1:Deployment facility-1-api creating (170s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-api-77ddd787b5-5glxl]: containers with unready status: [server][CrashLoopBackOff] back-off 20s restarting failed container=server pod=facility-1-api-77ddd787b5-5glxl_tamanu-feature-sav-1092-generate-qr-code(179efbf0-6b43-41bb-8da1-157803885a83)
+  kubernetes:apps/v1:Deployment facility-1-sync creating (170s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-1-sync-568f7bcb4c-g782f]: containers with unready status: [server][CrashLoopBackOff] back-off 20s restarting failed container=server pod=facility-1-sync-568f7bcb4c-g782f_tamanu-feature-sav-1092-generate-qr-code(057185ed-159d-4780-a077-e2e2d7d38b74)
@ Updating.......
+  kubernetes:apps/v1:Deployment facility-2-api creating (170s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-api-6c56d9557f-px4qh]: containers with unready status: [server][CrashLoopBackOff] back-off 40s restarting failed container=server pod=facility-2-api-6c56d9557f-px4qh_tamanu-feature-sav-1092-generate-qr-code(de06c05b-73ff-4b07-90b6-65d9e21817af)
@ Updating....
+  kubernetes:apps/v1:Deployment facility-2-sync creating (170s) warning: [Pod tamanu-feature-sav-1092-generate-qr-code/facility-2-sync-5f896d55fc-9zf76]: containers with unready status: [server][CrashLoopBackOff] back-off 20s restarting failed container=server pod=facility-2-sync-5f896d55fc-9zf76_tamanu-feature-sav-1092-generate-qr-code(fc2640a3-2521-4f66-9595-0feb3c1ce85a)
@ Updating....................
+  kubernetes:apps/v1:Deployment facility-2-sync creating (188s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-2-sync creating (188s) 
+  kubernetes:apps/v1:Deployment facility-2-sync created (188s) 
@ Updating.........
+  kubernetes:apps/v1:Deployment facility-1-sync creating (198s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-1-sync creating (198s) 
+  kubernetes:apps/v1:Deployment facility-1-sync created (198s) 
@ Updating......
+  kubernetes:apps/v1:Deployment facility-1-api creating (202s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-1-api creating (202s) 
+  kubernetes:apps/v1:Deployment facility-1-api created (202s) 
@ Updating..............
+  kubernetes:apps/v1:Deployment facility-2-api creating (207s) Deployment initialization complete
+  kubernetes:apps/v1:Deployment facility-2-api creating (207s) 
+  kubernetes:apps/v1:Deployment facility-2-api created (207s) 
+  pulumi:pulumi:Stack tamanu-on-k8s-feature-sav-1092-generate-qr-code created (294s) 16 messages
Diagnostics:
 pulumi:pulumi:Stack (tamanu-on-k8s-feature-sav-1092-generate-qr-code):
   Secret facility-1-db-superuser not found or not ready: Error: HTTP-Code: 404
   Message: Unknown API Status Code!
   Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"facility-1-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"facility-1-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
   Headers: {"audit-id":"1c4777e3-8d6f-4394-b71e-729350d3058c","cache-control":"no-cache, private","connection":"close","content-length":"220","content-type":"application/json","date":"Thu, 02 Apr 2026 02:51:54 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}
   Secret facility-2-db-superuser not found or not ready: Error: HTTP-Code: 404
   Message: Unknown API Status Code!
   Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"facility-2-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"facility-2-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
   Headers: {"audit-id":"9b4eba84-9fc1-4839-86e2-f324a44a9cb3","cache-control":"no-cache, private","connection":"close","content-length":"220","content-type":"application/json","date":"Thu, 02 Apr 2026 02:52:00 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}
   Secret central-db-superuser not found or not ready: Error: HTTP-Code: 404
   Message: Unknown API Status Code!
   Body: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"secrets \\\"central-db-superuser\\\" not found\",\"reason\":\"NotFound\",\"details\":{\"name\":\"central-db-superuser\",\"kind\":\"secrets\"},\"code\":404}
"
   Headers: {"audit-id":"ea5afc3d-71bf-487b-8529-684193c56e20","cache-control":"no-cache, private","connection":"close","content-length":"214","content-type":"application/json","date":"Thu, 02 Apr 2026 02:52:02 GMT","x-kubernetes-pf-flowschema-uid":"3fb296fc-e46b-45d1-9306-057e37ddd229","x-kubernetes-pf-prioritylevel-uid":"feccf24d-a074-4fa8-aa6f-db82477fc2f5"}

   Downloading provider: random
   Waiting for central-db...
   Waiting for facility-1-db...
   Waiting for facility-2-db...

   [Pulumi Neo] Would you like help with these diagnostics?
   https://app.pulumi.com/bes/tamanu-on-k8s/feature-sav-1092-generate-qr-code/updates/1?explainFailure

Outputs:
   urls: {
       Central      : "https://central.feature-sav-1092-generate-qr-code.cd.tamanu.app"
       Facility- 1  : "https://facility-1.feature-sav-1092-generate-qr-code.cd.tamanu.app"
       Facility- 2  : "https://facility-2.feature-sav-1092-generate-qr-code.cd.tamanu.app"
       PatientPortal: "https://portal.feature-sav-1092-generate-qr-code.cd.tamanu.app"
   }

Resources:
   + 82 created

Duration: 4m55s

   

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.

1 participant