# ItemTable

key: workbench.scm.views.state
value:
  {"workbench.scm.repositories":{"collapsed":false,"isHidden":true},"workbench.scm":{"collapsed":false,"isHidden":true},"workbench.scm.history":{"collapsed":false,"isHidden":true}}


key: workbench.view.extension.github-actions.state
value:
  {"github-actions.current-branch":{"collapsed":false,"isHidden":true},"github-actions.workflows":{"collapsed":false,"isHidden":true},"github-actions.settings":{"collapsed":false,"isHidden":true},"github-actions.empty-view":{"collapsed":false,"isHidden":true}}


key: workbench.view.extension.dockerView.state
value:
  {"dockerContainers":{"collapsed":false,"isHidden":true},"dockerImages":{"collapsed":false,"isHidden":true},"dockerRegistries":{"collapsed":false,"isHidden":true},"dockerNetworks":{"collapsed":true,"isHidden":true},"dockerVolumes":{"collapsed":true,"isHidden":true},"vscode-docker.views.dockerContexts":{"collapsed":true,"isHidden":true},"vscode-docker.views.help":{"collapsed":false,"isHidden":true}}


key: workbench.view.debug.state
value:
  {"workbench.debug.welcome":{"collapsed":false,"isHidden":true},"workbench.debug.variablesView":{"collapsed":false,"isHidden":true},"workbench.debug.watchExpressionsView":{"collapsed":false,"isHidden":true},"workbench.debug.callStackView":{"collapsed":false,"isHidden":true},"workbench.debug.loadedScriptsView":{"collapsed":true,"isHidden":true},"workbench.debug.breakPointsView":{"collapsed":false,"isHidden":true},"jsBrowserBreakpoints":{"collapsed":true,"isHidden":true},"jsExcludedCallers":{"collapsed":true,"isHidden":true},"jsDebugNetworkTree":{"collapsed":true,"isHidden":true}}


key: workbench.zenMode.exitInfo
value:
  {"transitionedToCenteredEditorLayout":false,"transitionedToFullScreen":false,"handleNotificationsDoNotDisturbMode":false,"wasVisible":{"auxiliaryBar":false,"panel":false,"sideBar":false}}


key: workbench.view.extension.test.state
value:
  {"workbench.view.testing":{"collapsed":false,"isHidden":true},"workbench.view.testCoverage":{"collapsed":false,"isHidden":true},"go.test.profile":{"collapsed":false,"isHidden":true}}


key: anysphere.cursor-retrieval
value:
  {"cursor-retrieval-state-version":1,"map/e09087f15141c3cb12b0f2bf0a45e4e9712b9479c057389e8774d8ff66464195-container-mom-go/repoKeys":{"repoName":"98facfc0-e401-436f-a79b-820cec123d4f","orthogonalTransformationSeed":604853676864945,"pathEncryptionKey":"N4qqa838R6sOZWXvzYXDOcVjEGCQ5GON-in4Z59h31A","pathEncryptionScheme":"aes-256-ctr"},"map/e09087f15141c3cb12b0f2bf0a45e4e9712b9479c057389e8774d8ff66464195-container-mom-go/github|user_01JH07F1X9GY89Y3R4H3SBKJWC/indexingIntent":"should-index"}


key: ms-python.python
value:
  {"PYTHON_WORKSPACE_STORAGE_KEYS":[{"key":"autoSelectionInterpretersQueried-/home/josie/development/container-mom-go"},{"key":"PYTHON_EXTENSION_WORKSPACE_STORAGE_KEYS","defaultValue":[]},{"key":"showNativeTensorBoardPrompt","defaultValue":true},{"key":"autoSelectedWorkspacePythonInterpreter-/home/josie/development/container-mom-go"}],"autoSelectedWorkspacePythonInterpreter-/home/josie/development/container-mom-go":{"id":"/bin/python","sysPrefix":"/usr","envType":"Global","envName":"","envPath":"","path":"/bin/python","architecture":3,"sysVersion":"3.13.2 (main, Feb  5 2025, 08:05:21) [GCC 14.2.1 20250128]","version":{"raw":"3.13.2","major":3,"minor":13,"patch":2,"build":[],"prerelease":["final","0"]},"displayName":"Python 3.13.2 64-bit","detailedDisplayName":"Python 3.13.2 64-bit"},"autoSelectionInterpretersQueried-/home/josie/development/container-mom-go":true}


key: workbench.search.history
value:
  {"search":["magickly","name: container","name: container-mom-system","phoenix","kubectl","oc ","1000","gitea","gitea-shared-storage\\","shared-storag","shared-storage","rootless","wkl-","namespace: wkl-","cloudflare","/cert-manager","/cloudflare","required parame","zone"]}


key: memento/workbench.view.search
value:
  {"query.queryDetailsExpanded":true,"query.contentPattern":"zone","query.regex":false,"query.wholeWords":false,"query.caseSensitive":false,"query.isInNotebookMarkdownInput":true,"query.isInNotebookMarkdownPreview":true,"query.isInNotebookCellInput":true,"query.isInNotebookCellOutput":true,"query.folderExclusions":"","query.folderIncludes":"","query.useExcludesAndIgnoreFiles":true,"query.preserveCase":false,"query.onlyOpenEditors":false,"view.showReplace":true,"view.treeLayout":false,"query.replaceText":""}


key: workbench.explorer.views.state
value:
  {"notepad":{"collapsed":true,"isHidden":true,"size":22},"outline":{"collapsed":true,"isHidden":true,"size":22},"timeline":{"collapsed":true,"isHidden":true,"size":22},"workbench.explorer.openEditorsView":{"collapsed":false,"isHidden":true},"workbench.explorer.fileView":{"collapsed":false,"isHidden":true,"size":1211},"npm":{"collapsed":true,"isHidden":true},"go.explorer":{"collapsed":true,"isHidden":true,"size":22},"go.package.outline":{"collapsed":true,"isHidden":true,"size":22}}


key: aiService.generations
value:
  [{"unixMs":1747647651032,"generationUUID":"fb4405d2-6206-4626-81e6-0ff046cbe65c","type":"apply","textDescription":"Deployments.jsx"},{"unixMs":1747647666868,"generationUUID":"adc63964-e732-4275-9a3d-300240ac6e5d","type":"apply","textDescription":"k8sClient.js"},{"unixMs":1747648191640,"generationUUID":"4ab1ff34-fdae-44a0-afe9-b453c84bdfb3","type":"composer","textDescription":"it seems like still no db is getting deployed for the CMD\n"},{"unixMs":1747652526452,"generationUUID":"5220fed3-40ba-48fd-8195-a7c87c6a84c7","type":"composer","textDescription":"resume"},{"unixMs":1747653165015,"generationUUID":"18adbef6-14dc-4a6b-9309-1203808486df","type":"composer","textDescription":"the latest version is deployed"},{"unixMs":1747653371136,"generationUUID":"0405c147-36c0-4785-8c41-3366ca8a33d6","type":"composer","textDescription":"I'll create it through the portal frontend instead"},{"unixMs":1747654232490,"generationUUID":"0461954a-b74c-4557-ac28-1929f84aa55c","type":"composer","textDescription":"@container.mom_deployments.yaml "},{"unixMs":1747654262853,"generationUUID":"4c6e43bd-bcc6-4901-be40-44ecb8c1801f","type":"apply","textDescription":"container.mom_deployments.yaml"},{"unixMs":1747654277188,"generationUUID":"d2f5991f-d460-403a-b5cf-1ab381576be8","type":"apply","textDescription":"container.mom_deployments.yaml"},{"unixMs":1747654292455,"generationUUID":"00c72130-ccc5-4267-b389-ec6e8837db30","type":"apply","textDescription":"container.mom_deployments.yaml"},{"unixMs":1747658502652,"generationUUID":"845f837a-7305-4a4e-9bcb-195e6d21d570","type":"composer","textDescription":"still no ss"},{"unixMs":1747658754703,"generationUUID":"6bdb02f3-8794-459e-a708-7fece53543fe","type":"composer","textDescription":"it's applied"},{"unixMs":1747658898180,"generationUUID":"11d365d7-95e1-49dc-86b1-a0d39bd437cc","type":"composer","textDescription":"I created on using the portal"},{"unixMs":1747658944847,"generationUUID":"9090b87b-8d85-4b10-a93c-d47719a74735","type":"composer","textDescription":"it seems to have created 2 ns"},{"unixMs":1747658973406,"generationUUID":"90a1ced2-1a89-4f2f-b47d-789a931cfcb8","type":"composer","textDescription":"the ns have wp in the name base on cmd wp-blog"},{"unixMs":1747659178751,"generationUUID":"2bd44594-1bf9-4b46-8346-8f15465a9fef","type":"apply","textDescription":"deployment.go"},{"unixMs":1747659192563,"generationUUID":"87011456-2ec5-4690-9ed8-8ee8f182f1b2","type":"apply","textDescription":"deployment.go"},{"unixMs":1747665882647,"generationUUID":"aa44aac0-920a-41d8-9c74-c2b4828e9596","type":"composer","textDescription":"the mariadb ss is there now but it's pending because of an unbloud pvc"},{"unixMs":1747665941378,"generationUUID":"c342bff7-e93a-46c0-99a4-c597e92a1a7d","type":"apply","textDescription":"mariadb-pv.yaml"},{"unixMs":1747665996127,"generationUUID":"fc35495c-d276-4fda-9485-9485eb08abeb","type":"composer","textDescription":"the operator should do this stuff following quota in the cmd"},{"unixMs":1747666026957,"generationUUID":"01b9f804-78e9-410f-ae2a-c4224389d687","type":"apply","textDescription":"deployment.go"},{"unixMs":1747666138664,"generationUUID":"9f88a1e5-4386-42ee-be65-14078c912cce","type":"apply","textDescription":"wordpress-template-updated.yaml"},{"unixMs":1747666157838,"generationUUID":"8d15e6d5-fae1-451a-89d5-0af669176e54","type":"composer","textDescription":"update @wordpress-template.yaml "},{"unixMs":1747666191659,"generationUUID":"5cea86eb-dcf5-49f1-82c0-7205982cc731","type":"apply","textDescription":"wordpress-template.yaml"},{"unixMs":1747666220369,"generationUUID":"32c0ca2e-b7bb-458c-9aa9-1e61021b908c","type":"composer","textDescription":"don't use this storage class lol"},{"unixMs":1747666232558,"generationUUID":"35b42d99-9867-4ad4-9786-29d0d87db8d1","type":"apply","textDescription":"wordpress-template.yaml"},{"unixMs":1747666257027,"generationUUID":"ad7d396f-7769-4cb3-961c-e238b6cbfccb","type":"composer","textDescription":"let's create our own storage class for customer workloads"},{"unixMs":1747666269116,"generationUUID":"023105c1-c418-4383-a8c8-ad2cc7e1bdd2","type":"apply","textDescription":"customer-storage-class.yaml"},{"unixMs":1747666321325,"generationUUID":"dc0c3afc-8e7f-48d2-8395-7639df59d773","type":"composer","textDescription":"add it to /home/josie/development/container-mom-go/manifests/10-operator/templates"},{"unixMs":1747666329394,"generationUUID":"91326e26-c2b2-414b-9cfa-12c90170b630","type":"apply","textDescription":"customer-storage-class.yaml"},{"unixMs":1747666339624,"generationUUID":"ffe4c6ca-1bca-4243-85a5-0f4ca7e8eb46","type":"apply","textDescription":"wordpress-template.yaml"},{"unixMs":1747666351020,"generationUUID":"080b71cc-ecea-44b8-8447-24c495879a5c","type":"apply","textDescription":"customer-persistent-volumes.yaml"},{"unixMs":1747666397294,"generationUUID":"c469b1cc-1afa-41a7-928a-bed58ca2e105","type":"composer","textDescription":"no the operator should be creating those on demand"},{"unixMs":1747666826298,"generationUUID":"d328770d-98d0-4b65-b595-166249d53633","type":"apply","textDescription":"deployment.go"},{"unixMs":1747666842376,"generationUUID":"b33caf4d-9f5b-4630-b695-24881ced3111","type":"apply","textDescription":"deployment.go"},{"unixMs":1747666855500,"generationUUID":"264a392e-55bd-4fba-a39b-7e33f7999298","type":"apply","textDescription":"deployment.go"},{"unixMs":1747671057972,"generationUUID":"d3a301e1-3074-42e4-a198-28b40c0e8edf","type":"composer","textDescription":"resume"},{"unixMs":1747671842976,"generationUUID":"96b26fec-128a-4303-b79d-d93ecd3ac181","type":"composer","textDescription":"resume"},{"unixMs":1747671860416,"generationUUID":"42cfa33a-135d-4c47-abbe-ac0cdd086b6b","type":"apply","textDescription":"deployment.go"},{"unixMs":1747673279992,"generationUUID":"71cc140d-78c8-4cec-bba5-9e3ad54cd218","type":"composer","textDescription":"check why ns/wkl-wp-blog-wp-blog-4c6631b4/pods/wp-blog-mariadb-0 is still pending"},{"unixMs":1747673365503,"generationUUID":"e34ae9b4-f042-4bbe-96d6-4a3e5b99da62","type":"composer","textDescription":"use oc"},{"unixMs":1747674206761,"generationUUID":"eb6c45b2-2760-43a7-b2ad-463e7d942527","type":"composer","textDescription":"pls"},{"unixMs":1747675163904,"generationUUID":"a4f2306c-36c8-4428-85d9-670713a4d026","type":"composer","textDescription":"resume"},{"unixMs":1747675400243,"generationUUID":"e7a396d8-bec1-4da9-a522-2d40d8f7438b","type":"composer","textDescription":"it's container.mom"},{"unixMs":1747675539888,"generationUUID":"b7777eb8-3296-4a3b-b1f5-f04a6a923ad4","type":"composer","textDescription":"can't the operator fix this?"},{"unixMs":1747675702736,"generationUUID":"412b2192-eb69-4afe-be90-0d12f1fb9fb4","type":"composer","textDescription":"yes pls and also check why double nses are created for multi comopnent deployments"},{"unixMs":1747675717930,"generationUUID":"d9c18fd3-365d-450a-9f22-6e28be0661ee","type":"apply","textDescription":"deployment.go"},{"unixMs":1747675732457,"generationUUID":"7750d3e4-03bf-400c-b72d-e9064f4c3060","type":"apply","textDescription":"controller.go"},{"unixMs":1747676612230,"generationUUID":"00798fd3-2daf-4b9d-88d7-6527aac2a893","type":"composer","textDescription":"2025-05-19T17:43:06Z ERROR Failed to create PersistentVolume {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"415953e3-2493-4ec6-9beb-6f30b255c910\", \"name\": \"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\", \"output\": \"Error from server (Forbidden): error when retrieving current configuration of:\\nResource: \\\"/v1, Resource=persistentvolumes\\\", GroupVersionKind: \\\"/v1, Kind=PersistentVolume\\\"\\nName: \\\"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\\\", Namespace: \\\"\\\"\\nfrom server for: \\\"STDIN\\\": persistentvolumes \\\"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\\\" is forbidden: User \\\"system:serviceaccount:container-mom-system:container-mom\\\" cannot get resource \\\"pe...\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createPersistentVolumeForClaim\n/app/pkg/controllers/workload/deployment.go:1315\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:286\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-19T17:43:06Z ERROR Failed to create PersistentVolume for component volume claim {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"415953e3-2493-4ec6-9beb-6f30b255c910\", \"pvc\": \"mariadb-data-wordpress-site-mariadb-0\", \"component\": \"mariadb\", \"error\": \"failed to create PersistentVolume: exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:288\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224"},{"unixMs":1747676656502,"generationUUID":"7257e7ce-81c8-465f-bca6-3def33c329d1","type":"composer","textDescription":"pls fix @manifests "},{"unixMs":1747676686390,"generationUUID":"9b4232a2-11e3-4f5f-bf72-668ebfc65f80","type":"apply","textDescription":"clusterrole.yaml"},{"unixMs":1747676714965,"generationUUID":"3452ca33-734e-486e-8bfa-ee9e17bf506d","type":"apply","textDescription":"deployment.go"},{"unixMs":1747676728460,"generationUUID":"d922735f-dc64-491b-8de4-0c691e110671","type":"apply","textDescription":"deployment.go"},{"unixMs":1747678479552,"generationUUID":"889e25f0-14dc-4014-809c-1a1ac5d27141","type":"composer","textDescription":"the namespace are still not cleaned up\n\nand the SS is pending\n\n2025-05-19T18:12:41Z\tINFO\tsetup\tAttempting to create operator\t{\"attempt\": 1, \"maxRetries\": 5}\n2025-05-19T18:12:41Z\tINFO\tsetup\tStarting HTTP server\t{\"port\": \":8082\"}\n2025-05-19T18:12:41Z\tINFO\tsetup\tStarting operator\n2025-05-19T18:12:41Z\tINFO\tinitializing operator\n2025-05-19T18:12:41Z\tINFO\tstarting HTTP server\t{\"addr\": \":8081\"}\n2025-05-19T18:12:41Z\tINFO\tHTTP server is ready\n2025-05-19T18:12:41Z\tINFO\t============ STARTING DEPLOYMENT CONTROLLER ============\n2025-05-19T18:12:41Z\tINFO\tStarting deployment controller\n2025-05-19T18:12:41Z\tINFO\tDeployment controller started\n2025-05-19T18:12:41Z\tINFO\tDeployment controller start function returned successfully\n2025-05-19T18:12:41Z\tINFO\t============ STARTING WORKLOAD CONTROLLER ============\n2025-05-19T18:12:41Z\tINFO\tWorkload controller goroutine has started\n2025-05-19T18:12:41Z\tINFO\tCreating controller manager\n2025-05-19T18:12:41Z\tINFO\tController manager created successfully\n2025-05-19T18:12:41Z\tINFO\tLoaded cluster configuration\t{\"cluster\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tLoaded all cluster configurations\t{\"clusters\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tSetting up workload controller with multi-cluster support\n2025-05-19T18:12:41Z\tINFO\tSetting up workload controller\n2025-05-19T18:12:41Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:41Z\tINFO\tInitializing WorkloadController with cluster configurations\t{\"configCount\": 1, \"clusterNames\": \"[default]\"}\n2025-05-19T18:12:41Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:41Z\tINFO\tAdded cluster client\t{\"region\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tSetting up controller with builder\n2025-05-19T18:12:41Z\tINFO\tWorkloadController setup complete\n2025-05-19T18:12:41Z\tINFO\tWorkload controller created successfully\n2025-05-19T18:12:41Z\tINFO\tWorkload controller created successfully\n2025-05-19T18:12:41Z\tINFO\tSetting up Template controller with manager\n2025-05-19T18:12:41Z\tINFO\tSetting up template controller\n2025-05-19T18:12:41Z\tINFO\tTemplate controller setup completed\n2025-05-19T18:12:41Z\tINFO\tTemplate controller initialized successfully\n2025-05-19T18:12:41Z\tINFO\tStarting manager (this blocks until shutdown)\n2025-05-19T18:12:41Z\tINFO\tcontroller-runtime.metrics\tStarting metrics server\n2025-05-19T18:12:41Z\tINFO\tWorkload controller initialization completed successfully\n2025-05-19T18:12:41Z\tINFO\tcontroller-runtime.metrics\tServing metrics server\t{\"bindAddress\": \":8080\", \"secure\": false}\n2025-05-19T18:12:41Z\tINFO\tstarting server\t{\"name\": \"health probe\", \"addr\": \"[::]:8088\"}\n2025-05-19T18:12:41Z\tINFO\tWaiting for cache to fully sync before cleaning up namespaces\t{\"delay\": \"30s\"}\n2025-05-19T18:12:41Z\tINFO\tStarting EventSource\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"source\": \"kind source: *v1alpha1.ContainerMomDeployment\"}\n2025-05-19T18:12:41Z\tINFO\tStarting EventSource\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"source\": \"kind source: *v1alpha1.Template\"}\n2025-05-19T18:12:41Z\tINFO\tStarting Controller\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\"}\n2025-05-19T18:12:41Z\tINFO\tStarting Controller\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\"}\n2025-05-19T18:12:42Z\tINFO\tStarting workers\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"worker count\": 1}\n2025-05-19T18:12:42Z\tINFO\tStarting workers\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"worker count\": 1}\n2025-05-19T18:12:42Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"f72794e8-7b2b-4f34-bc39-9f2d8fff6670\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:12:42Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-19T18:12:42Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-19T18:12:42Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:42Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3bcc8749-7975-4410-8535-c642a26fb2a8\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:12:42Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:42Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-19T18:12:43Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:44Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo unchanged\\n\"}\n2025-05-19T18:12:46Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.container.mom\", \"actualHostname\": \"nginx.container.mom\", \"match\": true}\n2025-05-19T18:12:46Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-19T18:12:46Z\tINFO\tUsing operator's client for local cluster deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"clusterRef\": \"local\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:48Z\tINFO\tDeployment already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:49Z\tINFO\tService already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:49Z\tINFO\tCreating or updating route with hostname\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\", \"domainName\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-19T18:12:49Z\tINFO\tCreating or updating route\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"route\": \"fooo\", \"host\": \"nginx.container.mom\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:52Z\tINFO\tRoute check output\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"output\": \"NAME   HOST/PORT             PATH   SERVICES   PORT   TERMINATION     WILDCARD\\nfooo   nginx.container.mom          fooo       http   edge/Redirect   None\\n\", \"error\": false}\n2025-05-19T18:12:52Z\tINFO\tRoute exists, checking if update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:53Z\tINFO\tRoute hostname already correct, no update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:56Z\tINFO\tRoute verification successful\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.container.mom\", \"actualHostname\": \"nginx.container.mom\", \"match\": true}\n2025-05-19T18:12:56Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:12:56Z\tINFO\tcloudflare\tVerifying Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:12:56Z\tINFO\thandling health check\n2025-05-19T18:12:56Z\tINFO\thandling readiness check\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tSuccessfully verified Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tEnsuring CNAME record exists\t{\"hostname\": \"nginx.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:12:57Z\tDEBUG\tcloudflare\tGetting existing DNS records\t{\"url\": \"https://api.cloudflare.com/client/v4/zones/5485880624d63a6fdf003b8e994f0dd8/dns_records?type=CNAME&name=nginx.container.mom\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:57Z\tDEBUG\tcloudflare\tRetrieved DNS records from Cloudflare\t{\"hostname\": \"nginx.container.mom\", \"recordCount\": 1}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tFound matching DNS record\t{\"hostname\": \"nginx.container.mom\", \"recordID\": \"f946a29e40306f2e26b4b68460dd9275\"}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tExisting DNS record found, updating\t{\"hostname\": \"nginx.container.mom\", \"recordID\": \"f946a29e40306f2e26b4b68460dd9275\"}\n2025-05-19T18:12:58Z\tINFO\tcloudflare\tUpdated CNAME record in Cloudflare\t{\"hostname\": \"nginx.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully configured Cloudflare CNAME record\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully deployed to local cluster using operator client\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:58Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"phase\": \"Succeeded\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"deployment\": \"fooo\", \"phase\": \"Succeeded\", \"clusters\": \"local\"}\n2025-05-19T18:12:58Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-19T18:12:58Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"annotations\": \"map[containermom.mom/namespace:wkl-wordpress-site-wordpress-site-a9cb5ea3]\"}\n2025-05-19T18:12:58Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:12:58Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:12:58Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"domain\": \"container.mom\", \"prefix\": \"sweet-love-maven\"}\n2025-05-19T18:12:59Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:00Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\", \"output\": \"route.route.openshift.io/wordpress-site unchanged\\n\"}\n2025-05-19T18:13:01Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"a4f205e1-7bb3-4031-a567-2064a204af85\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:01Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"ab8b06bc-9b5e-489e-9836-92028479f43f\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:02Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"expectedHostname\": \"sweet-love-maven.container.mom\", \"actualHostname\": \"sweet-love-maven.container.mom\", \"match\": true}\n2025-05-19T18:13:02Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"phase\": \"Building\"}\n2025-05-19T18:13:02Z\tINFO\tUsing operator's client for local cluster deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"clusterRef\": \"local\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:13:04Z\tINFO\tCreating secret for environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-env\"}\n2025-05-19T18:13:06Z\tINFO\thandling health check\n2025-05-19T18:13:06Z\tINFO\thandling readiness check\n2025-05-19T18:13:07Z\tINFO\tCreated secret for environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-env\"}\n2025-05-19T18:13:07Z\tINFO\tDeployment exists, updating to ensure any env var changes are applied\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:08Z\tINFO\tTriggered rollout to apply environment changes\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:08Z\tINFO\tDeployment already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:10Z\tINFO\tService already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:10Z\tINFO\tCreating or updating route with hostname\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\", \"domainName\": \"container.mom\", \"prefix\": \"sweet-love-maven\"}\n2025-05-19T18:13:10Z\tINFO\tCreating or updating route\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"route\": \"wordpress-site\", \"host\": \"sweet-love-maven.container.mom\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:10Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"fb7f74b1-cb88-4c91-8e44-8a5a1b00a801\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:11Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"cf7e904e-01ed-4348-ac3c-4ad7f9db4c76\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:11Z\tINFO\tRunning cleanup of dangling wkl- namespaces with initialized cache\n2025-05-19T18:13:11Z\tINFO\tVerified CMD cache is synced, proceeding with cleanup\t{\"cmdCount\": 2}\n2025-05-19T18:13:11Z\tINFO\tStarting cleanup of dangling wkl- namespaces\n2025-05-19T18:13:11Z\tINFO\tFound ContainerMomDeployments\t{\"count\": 2}\n2025-05-19T18:13:11Z\tINFO\tProtected namespace from CMD annotation\t{\"cmd\": \"fooo\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:13:11Z\tINFO\tProtected namespace from CMD annotation\t{\"cmd\": \"wordpress-site\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:11Z\tINFO\tFound wkl- namespaces\t{\"count\": 6}\n2025-05-19T18:13:11Z\tINFO\tProtected namespaces\t{\"count\": 3}\n2025-05-19T18:13:11Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:13:11Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-argocd\"}\n2025-05-19T18:13:11Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:12Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"28108af7-d6b6-4196-9711-bbf4affd26f7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:13Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"0b185940-d9d9-46f0-977e-69edbb89a1f4\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:13Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3a82385a-9277-4c28-aea8-500f75c76962\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:14Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-53fe5740\", \"resourceType\": \"deployments\"}\n2025-05-19T18:13:14Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-53fe5740\"}\n2025-05-19T18:13:14Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:13:14Z\tINFO\tRoute check output\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"output\": \"NAME             HOST/PORT            PATH   SERVICES         PORT   TERMINATION     WILDCARD\\nwordpress-site   HostAlreadyClaimed          wordpress-site   http   edge/Redirect   None\\n\", \"error\": false}\n2025-05-19T18:13:14Z\tINFO\tRoute exists, checking if update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:16Z\tINFO\thandling readiness check\n2025-05-19T18:13:16Z\tINFO\thandling health check\n2025-05-19T18:13:16Z\tINFO\tRoute hostname already correct, no update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:19Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-b2cd6fad\", \"resourceType\": \"services\"}\n2025-05-19T18:13:19Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-b2cd6fad\"}\n2025-05-19T18:13:20Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"ad4f75c8-65c4-4b9e-96dc-6e7c1a883e5a\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:20Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d42f252a-2509-4fb7-8988-2aeb9b810e14\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:22Z\tINFO\tRoute verification successful\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"expectedHostname\": \"sweet-love-maven.container.mom\", \"actualHostname\": \"sweet-love-maven.container.mom\", \"match\": true}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tVerifying Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tSuccessfully verified Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tEnsuring CNAME record exists\t{\"hostname\": \"sweet-love-maven.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:13:22Z\tDEBUG\tcloudflare\tGetting existing DNS records\t{\"url\": \"https://api.cloudflare.com/client/v4/zones/5485880624d63a6fdf003b8e994f0dd8/dns_records?type=CNAME&name=sweet-love-maven.container.mom\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:23Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-7d3a4770\", \"resourceType\": \"services\"}\n2025-05-19T18:13:23Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-7d3a4770\"}\n2025-05-19T18:13:23Z\tINFO\tCompleted dangling namespace cleanup\t{\"found\": 6, \"protected\": 3, \"skipped\": 6, \"deleted\": 0}\n2025-05-19T18:13:23Z\tINFO\tCompleted dangling namespaces cleanup\n2025-05-19T18:13:23Z\tDEBUG\tcloudflare\tRetrieved DNS records from Cloudflare\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordCount\": 1}\n2025-05-19T18:13:23Z\tINFO\tcloudflare\tFound matching DNS record\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordID\": \"9a8dc418c13ae1aa07016b12606335ea\"}\n2025-05-19T18:13:23Z\tINFO\tcloudflare\tExisting DNS record found, updating\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordID\": \"9a8dc418c13ae1aa07016b12606335ea\"}\n2025-05-19T18:13:24Z\tINFO\tcloudflare\tUpdated CNAME record in Cloudflare\t{\"hostname\": \"sweet-love-maven.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:13:24Z\tINFO\tSuccessfully configured Cloudflare CNAME record\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:24Z\tINFO\tProcessing additional components\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"count\": 1}\n2025-05-19T18:13:24Z\tINFO\tCreating additional component\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"componentName\": \"wordpress-site-mariadb\", \"componentType\": \"statefulset\"}\n2025-05-19T18:13:25Z\tINFO\tCreating secret for component environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb-env\"}\n2025-05-19T18:13:26Z\tINFO\thandling readiness check\n2025-05-19T18:13:26Z\tINFO\thandling health check\n2025-05-19T18:13:27Z\tINFO\tCreated secret for component environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb-env\"}\n2025-05-19T18:13:27Z\tINFO\tStatefulSet already exists, updating if needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb\"}\n2025-05-19T18:13:28Z\tINFO\tTriggered StatefulSet rollout to apply changes\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb\"}\n2025-05-19T18:13:29Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"0c46abe7-0cce-4de9-9617-9b42cdf31c37\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"afb9bd40-0b3d-4ae7-96b8-880f358270fc\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"e6b838ca-9b15-4ff9-91a4-c066202ab3e7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:31Z\tINFO\tSuccessfully deployed to local cluster using operator client\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:13:31Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"phase\": \"Succeeded\"}\n2025-05-19T18:13:31Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"deployment\": \"wordpress-site\", \"phase\": \"Succeeded\", \"clusters\": \"local\"}\n2025-05-19T18:13:36Z\tINFO\thandling readiness check\n2025-05-19T18:13:36Z\tINFO\thandling health check\n2025-05-19T18:13:39Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"f5e82477-9449-4dac-8e4c-b27aa38df1bb\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:39Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"8614976e-d068-4877-9be3-e5e6d72a3832\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:46Z\tINFO\thandling health check\n2025-05-19T18:13:46Z\tINFO\thandling readiness check\n2025-05-19T18:13:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"fb401d6c-9046-43a9-aa96-f3423a2f4ded\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"bdf8fde5-1290-4f0e-bd7d-a15851c67f61\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:56Z\tINFO\thandling health check\n2025-05-19T18:13:56Z\tINFO\thandling readiness check\n2025-05-19T18:13:58Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d78ff3ed-eb33-4713-95df-9ac7be8bbe3b\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:58Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c5babef1-3e52-4dee-91ec-26f81fd241e3\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:06Z\tINFO\thandling readiness check\n2025-05-19T18:14:06Z\tINFO\thandling health check\n2025-05-19T18:14:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"7fb7ce6f-04cc-4869-a45c-fbf4eb1d6ae7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"46f674a0-6af0-493e-8d0a-10ed58fb7912\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:16Z\tINFO\thandling readiness check\n2025-05-19T18:14:16Z\tINFO\thandling health check\n2025-05-19T18:14:17Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3e4007f0-0a28-4222-80eb-4a12a6fe3fe7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"2bdf0613-e9c8-4468-acb5-da72655a9fb8\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"78aa00fb-283d-4d71-93a1-e8108ea0aa67\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n"},{"unixMs":1747678570793,"generationUUID":"cb815754-7b9a-4505-b826-89498bf69bf8","type":"apply","textDescription":"deployment.go"},{"unixMs":1747678941842,"generationUUID":"784b12a3-f492-4736-b31b-dc3ac3c2a806","type":"apply","textDescription":"lifecycle.go"},{"unixMs":1747678957153,"generationUUID":"5450fb20-fcf6-4d3d-a8e8-3b3e3b1b4587","type":"apply","textDescription":"operator.go"},{"unixMs":1747678992841,"generationUUID":"9e08fb61-c791-4ad4-a701-bf8805ef5857","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679029895,"generationUUID":"ac7160f6-66a6-403a-b8ea-3269631f3d4d","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679097105,"generationUUID":"85bdf402-bb40-49c0-9b81-fe1d077505f2","type":"composer","textDescription":"could we refactor @deployment.go into multiple files/helpers?"},{"unixMs":1747679146267,"generationUUID":"e1d777df-b4f8-4f16-8210-6d2ed46ad5be","type":"apply","textDescription":"volume.go"},{"unixMs":1747679168857,"generationUUID":"34c433fc-4e25-44cf-a4f4-cee6abf79bf2","type":"apply","textDescription":"service.go"},{"unixMs":1747679194488,"generationUUID":"c70b2415-5525-40d5-acd2-e6754abed412","type":"apply","textDescription":"util.go"},{"unixMs":1747679245434,"generationUUID":"b6dfa069-760e-43a3-bafb-245dcab90695","type":"apply","textDescription":"statefulset.go"},{"unixMs":1747679271625,"generationUUID":"bea0dda1-d7db-412d-984e-a5a222dd8afa","type":"apply","textDescription":"route.go"},{"unixMs":1747679306182,"generationUUID":"fa0d09ba-3f09-4092-8bc5-834e7971bbce","type":"apply","textDescription":"component.go"},{"unixMs":1747679369558,"generationUUID":"a128079e-ee5a-4de8-8028-aada1a41d38f","type":"apply","textDescription":"reconciler.go"},{"unixMs":1747679397577,"generationUUID":"47c23a15-8c37-472e-a05e-f567b42b999f","type":"apply","textDescription":"controller.go"},{"unixMs":1747679416419,"generationUUID":"377c67ef-474e-44d1-8906-d07204d50f84","type":"apply","textDescription":"Makefile"},{"unixMs":1747679434917,"generationUUID":"53c811b8-2dcf-4a7e-9d4f-09b86054cc0d","type":"apply","textDescription":"README.md"},{"unixMs":1747679535233,"generationUUID":"aa6dcb11-92d1-45f2-985e-501ebd2b695f","type":"composer","textDescription":"nothing in @customer or @Commit (Diff of Working State) "},{"unixMs":1747679556613,"generationUUID":"0e628ab0-cea1-47d4-ba1a-5bfbdd6a29f1","type":"composer","textDescription":"nothing in @customer or /home/josie/development/container-mom-go/pkg/controllers/deployment is used right?"},{"unixMs":1747679650829,"generationUUID":"8abfa277-a8c9-445b-9556-fffce8f9f97e","type":"composer","textDescription":"remove the redundant, unused stuff from the operator"},{"unixMs":1747679858442,"generationUUID":"2116c77c-c2ce-45b0-a6ca-014e732872c1","type":"composer","textDescription":"For the code present, we get this error:\n```\nescapeJSONString redeclared in this block (see details)\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747679873919,"generationUUID":"6537cc9d-228d-48e4-a683-9393f0d11a50","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679882206,"generationUUID":"e75f1a19-6ff7-4c7e-820a-416c89241056","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679899361,"generationUUID":"0e1c7d66-392b-41d0-b783-5f1379f52b06","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679908821,"generationUUID":"72024311-609b-489b-8b0e-346b0035a408","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679924068,"generationUUID":"0687311d-7a34-4305-b5f9-ad5eba429ba2","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679935849,"generationUUID":"fe20075b-29ca-4caf-86b4-bb257b016ad8","type":"apply","textDescription":"deployment.go"},{"unixMs":1747679975548,"generationUUID":"e0d63ef0-4650-4334-b9a8-f39ba4ad9d04","type":"composer","textDescription":"For the code present, we get this error:\n```\ngenerateComponentName redeclared in this block (see details)\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747686368076,"generationUUID":"14d6cc95-16c0-4131-8728-0126201811ab","type":"composer","textDescription":"For the code present, we get this error:\n```\nmethod Controller.createPersistentVolumeForClaim already declared at /home/josie/development/container-mom-go/pkg/controllers/workload/deployment.go:1061:22\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747686416546,"generationUUID":"5c97337e-292e-4522-a3ab-cc783bc84059","type":"composer","textDescription":"For the code present, we get this error:\n```\ngenerateComponentName redeclared in this block\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747686445060,"generationUUID":"74bc910f-8f38-4603-8028-daf3d75564cd","type":"composer","textDescription":"For the code present, we get this error:\n```\nmethod Controller.createOrUpdateService already declared at /home/josie/development/container-mom-go/pkg/controllers/workload/deployment.go:383:22\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747686474270,"generationUUID":"99e57551-5087-417f-8e52-94949981d771","type":"composer","textDescription":"For the code present, we get this error:\n```\nCreateOrUpdateRoute redeclared in this block\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747686522106,"generationUUID":"b86af6bb-724b-4e2d-98e2-a58247954676","type":"composer","textDescription":"For the code present, we get this error:\n```\nmethod Controller.getImageForDeployment already declared at /home/josie/development/container-mom-go/pkg/controllers/workload/controller.go:191:22\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732303652,"generationUUID":"fde0cb18-bd2c-472c-b1ba-be1655d41166","type":"composer","textDescription":"For the code present, we get this error:\n```\ndeployment.Spec.Image undefined (type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".ContainerMomDeploymentSpec has no field or method Image)\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732705012,"generationUUID":"87c6a27d-3002-4fe4-9485-ac1428ae681b","type":"composer","textDescription":"For the code present, we get this error:\n```\nundefined: ctrl.Logger\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732721282,"generationUUID":"1e9cad42-b3f4-464b-954a-b81f9641ed3d","type":"apply","textDescription":"controller.go"},{"unixMs":1747732769841,"generationUUID":"4d4b09b7-45b3-4625-89e7-859a6db81c58","type":"composer","textDescription":"For the code present, we get this error:\n```\n\"hash/fnv\" imported and not used\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732781914,"generationUUID":"fd8fee3c-bf34-4755-8e57-3e054eeaae8b","type":"apply","textDescription":"deployment.go"},{"unixMs":1747732796427,"generationUUID":"4a11ca2f-d544-4554-831f-a15bdb5735b2","type":"composer","textDescription":"For the code present, we get this error:\n```\nmethod Controller.getImageForDeployment already declared at /home/josie/development/container-mom-go/pkg/controllers/workload/controller.go:192:22\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732824782,"generationUUID":"aeb2c556-2450-44d0-83c7-68e589216cc0","type":"composer","textDescription":"For the code present, we get this error:\n```\nCreateOrUpdateRoute redeclared in this block (see details)\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732842065,"generationUUID":"c16a3a4a-f0b4-411b-b708-80e587d6b567","type":"apply","textDescription":"route.go"},{"unixMs":1747732856998,"generationUUID":"632c609b-2881-4ac0-a7ea-cf8c603d69b1","type":"apply","textDescription":"service.go"},{"unixMs":1747732864585,"generationUUID":"06be6284-8663-4cd8-837f-5bb5ac78e74d","type":"composer","textDescription":"For the code present, we get this error:\n```\nnon-boolean condition in if statement\n```\nHow can I resolve this? If you propose a fix, please make it concise."},{"unixMs":1747732884820,"generationUUID":"aaf57bf4-6ffb-4013-b50c-3923f3b93cd5","type":"apply","textDescription":"route.go"},{"unixMs":1747732985016,"generationUUID":"6eb98178-5c87-4724-be19-c76b8915ccf6","type":"composer","textDescription":"run tests"},{"unixMs":1747733040152,"generationUUID":"24ec4798-17d3-4767-9122-e09ed624b903","type":"composer","textDescription":"what do we do about the other dirs in controllers?"},{"unixMs":1747734443888,"generationUUID":"5a45508b-42a4-4f3c-ae91-01b46dc75872","type":"composer","textDescription":"what baout common and template"}]


key: aiService.prompts
value:
  [{"text":"we also set env vars in cms/secrets in @manifests ","commandType":4},{"text":"why do we haredcode the templates after updating the values","commandType":4},{"text":"I see the portal still uses mongodb which should be deprecated in favour of the containermomdeployment CRDs in the hub cluster","commandType":4},{"text":"try to curl @https://portal.container.mom/ ","commandType":4},{"text":"use oc","commandType":4},{"text":"but isn't the configmap ok?","commandType":4},{"text":"fix the manifest fro the deployment","commandType":4},{"text":"ok troubleshoot again","commandType":4},{"text":"pls","commandType":4},{"text":"should we just connect to the backend using the svc and make it unreachable from outside the namespace?","commandType":4},{"text":"troubleshoot the portal","commandType":4},{"text":"just edit the manifest instead","commandType":4},{"text":"troubleshoot again. logs:\n\n/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration\n/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh\n10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)\n/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh\n/docker-entrypoint.sh: Configuration complete; ready for start up\n2025/05/06 16:44:51 [warn] 1#1: the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\nnginx: [warn] the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\n2025/05/06 16:44:51 [notice] 1#1: using the \"epoll\" event method\n2025/05/06 16:44:51 [notice] 1#1: nginx/1.28.0\n2025/05/06 16:44:51 [notice] 1#1: built by gcc 14.2.0 (Alpine 14.2.0) \n2025/05/06 16:44:51 [notice] 1#1: OS: Linux 5.14.0-427.57.1.el9_4.x86_64\n2025/05/06 16:44:51 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576\n2025/05/06 16:44:51 [notice] 1#1: start worker processes\n2025/05/06 16:44:51 [notice] 1#1: start worker process 16\n2025/05/06 16:44:51 [notice] 1#1: start worker process 17\n2025/05/06 16:44:51 [notice] 1#1: start worker process 18\n2025/05/06 16:44:51 [notice] 1#1: start worker process 19\n2025/05/06 16:44:51 [notice] 1#1: start worker process 20\n2025/05/06 16:44:51 [notice] 1#1: start worker process 21\n2025/05/06 16:44:51 [notice] 1#1: start worker process 22\n2025/05/06 16:44:51 [notice] 1#1: start worker process 23\n2025/05/06 16:44:51 [notice] 1#1: start worker process 24\n2025/05/06 16:44:51 [notice] 1#1: start worker process 25\n2025/05/06 16:44:51 [notice] 1#1: start worker process 26\n2025/05/06 16:44:51 [notice] 1#1: start worker process 27\n2025/05/06 16:44:51 [notice] 1#1: start worker process 28\n2025/05/06 16:44:51 [notice] 1#1: start worker process 29\n2025/05/06 16:44:51 [notice] 1#1: start worker process 30\n2025/05/06 16:44:51 [notice] 1#1: start worker process 31\n2025/05/06 16:44:51 [notice] 1#1: start worker process 32\n2025/05/06 16:44:51 [notice] 1#1: start worker process 33\n2025/05/06 16:44:51 [notice] 1#1: start worker process 34\n2025/05/06 16:44:51 [notice] 1#1: start worker process 35\n2025/05/06 16:44:51 [notice] 1#1: start worker process 36\n2025/05/06 16:44:51 [notice] 1#1: start worker process 37\n2025/05/06 16:44:51 [notice] 1#1: start worker process 38\n2025/05/06 16:44:51 [notice] 1#1: start worker process 39\n2025/05/06 16:44:51 [notice] 1#1: start worker process 40\n2025/05/06 16:44:51 [notice] 1#1: start worker process 41\n2025/05/06 16:44:51 [notice] 1#1: start worker process 42\n2025/05/06 16:44:51 [notice] 1#1: start worker process 43\n2025/05/06 16:44:51 [notice] 1#1: start worker process 44\n2025/05/06 16:44:51 [notice] 1#1: start worker process 45\n2025/05/06 16:44:51 [notice] 1#1: start worker process 46\n2025/05/06 16:44:51 [notice] 1#1: start worker process 47\n","commandType":4},{"text":"use a fedora base image instead\n\nubi8/nodejs-18","commandType":4},{"text":"@https://quay.io/repository/fedora/nodejs-18?tab=info \n@https://quay.io/repository/fedora/nodejs-18?tab=info ","commandType":4},{"text":"do the ports match in the manifests now","commandType":4},{"text":"2025/05/06 17:06:38 [notice] 1#1: start worker process 47\n2025/05/06 17:06:56 [error] 16#16: *1 rewrite or internal redirection cycle while internally redirecting to \"/index.html\", client: 10.128.0.2, server: _, request: \"GET / HTTP/1.1\", host: \"10.128.0.205:8080\"\n10.128.0.2 - - [06/May/2025:17:06:56 +0000] \"GET / HTTP/1.1\" 500 177 \"-\" \"kube-probe/1.31\"\n2025/05/06 17:07:06 [error] 17#17: *2 rewrite or internal redirection cycle while internally redirecting to \"/index.html\", client: 10.128.0.2, server: _, request: \"GET / HTTP/1.1\", host: \"10.128.0.205:8080\"\n10.128.0.2 - - [06/May/2025:17:07:06 +0000] \"GET / HTTP/1.1\" 500 177 \"-\" \"kube-probe/1.31\"\n2025/05/06 17:07:16 [error] 18#18: *3 rewrite or internal redirection cycle while internally redirecting to \"/index.html\", client: 10.128.0.2, server: _, request: \"GET / HTTP/1.1\", host: \"10.128.0.205:8080\"\n10.128.0.2 - - [06/May/2025:17:07:16 +0000] \"GET / HTTP/1.1\" 500 177 \"-\" \"kube-probe/1.31\"\n\nUnhealthy\nReadiness probe failed: HTTP probe failed with statuscode: 500","commandType":4},{"text":"maybe we need a haelth check endpoint or adapt the health check config","commandType":4},{"text":"@https://portal.container.mom/ just 404s now","commandType":4},{"text":"use @https://quay.io/repository/fedora/nginx-126 \n\ncheck docs:\n\nNginx 1.26 server and a reverse proxy server container image\n\nThis container image includes Nginx 1.26 server and a reverse server for OpenShift and general usage. Users can choose between RHEL, CentOS Stream and Fedora based images. The RHEL images are available in the Red Hat Container Catalog, the CentOS Stream images are available in the Quay.io, and the Fedora images are available in the Quay.io. The resulting image can be run using podman.\n\nNote: while the examples in this README are calling podman, you can replace any such calls by docker with the same arguments.\nDescription\n\nNginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high concurrency, performance and low memory usage. The container image provides a containerized packaging of the nginx 1.26 daemon. The image can be used as a base image for other applications based on nginx 1.26 web server. Nginx server image can be extended using Openshift's Source build feature.\nUsage in OpenShift\n\nIn this example, we assume that you are using the ubi8/nginx-126 image, available through the nginx:1.26 imagestream tag in Openshift. To build a simple test-app application in Openshift:\n\noc new-app nginx:1.26~https://github.com/sclorg/nginx-container.git --context-dir=1.26/test/test-app/\n\nTo access the application:\n\n$ oc get pods\n$ oc exec <pod> -- curl 127.0.0.1:8080\n\nSource-to-Image framework and scripts\n\nThis image supports the Source-to-Image (S2I) strategy in OpenShift. The Source-to-Image is an OpenShift framework which makes it easy to write images that take application source code as an input, use a builder image like this Nginx container image, and produce a new image that runs the assembled application as an output.\n\nIn case of Nginx container image, the application source code is typically either static HTML pages or configuration files.\n\nTo support the Source-to-Image framework, important scripts are included in the builder image:\n\n    The /usr/libexec/s2i/run script is set as the default command in the resulting container image (the new image with the application artifacts).\n\n    The /usr/libexec/s2i/assemble script inside the image is run to produce a new image with the application artifacts. The script takes sources of a given application (HTML pages), Nginx configuration files, and places them into appropriate directories inside the image. The structure of nginx-app can look like this:\n\n./nginx.conf-- The main nginx configuration file\n\n./nginx-cfg/*.conf Should contain all nginx configuration we want to include into image\n\n./nginx-default-cfg/*.conf Contains any nginx config snippets to include in the default server block\n\n./nginx-start/*.sh Contains shell scripts that are sourced right before nginx is launched\n\n./nginx-perl/*.pm Contains perl modules to be use by perl_modules and perl_require directives\n\n./ Should contain nginx application source code\nBuild an application using a Dockerfile\n\nCompared to the Source-to-Image strategy, using a Dockerfile is a more flexible way to build an Nginx container image with an application. Use a Dockerfile when Source-to-Image is not sufficiently flexible for you or when you build the image outside of the OpenShift environment.\n\nTo use the Nginx image in a Dockerfile, follow these steps:\n1. Pull a base builder image to build on\n\npodman pull ubi8/nginx-126\n2. Pull an application code\n\nAn example application available at https://github.com/sclorg/nginx-container.git is used here. To adjust the example application, clone the repository.\n\ngit clone https://github.com/sclorg/nginx-container.git nginx-container\ncd nginx-container/examples/1.26/\n\n3. Prepare an application inside a container\n\nThis step usually consists of at least these parts:\n\n    putting the application source into the container\n    moving configuration files to the correct place (if available in the application source code)\n    setting the default command in the resulting image\n\nFor all these three parts, you can either set up all manually and use the nginx command explicitly in the Dockerfile (3.1.), or you can use the Source-to-Image scripts inside the image (3.2.; see more about these scripts in the section \"Source-to-Image framework and scripts\" above), that already know how to set-up and run some common Nginx applications.\n3.1. To use your own setup, create a Dockerfile with this content:\n\nFROM registry.access.redhat.com/ubi8/nginx-126\n\n# Add application sources\nADD test-app/nginx.conf \"${NGINX_CONF_PATH}\"\nADD test-app/nginx-default-cfg/*.conf \"${NGINX_DEFAULT_CONF_PATH}\"\nADD test-app/nginx-cfg/*.conf \"${NGINX_CONFIGURATION_PATH}\"\nADD test-app/*.html .\n\n# Run script uses standard ways to run the application\nCMD nginx -g \"daemon off;\"\n\n3.2. To use the Source-to-Image scripts and build an image using a Dockerfile, create a Dockerfile with this content:\n\nFROM registry.access.redhat.com/ubi8/nginx-126\n\n# Add application sources to a directory where the assemble script expects them\n# and set permissions so that the container runs without root access\n# With older docker that does not support --chown option for ADD statement,\n# use these statements instead:\n#  USER 0\n#  ADD app-src /tmp/src\n#  RUN chown -R 1001:0 /tmp/src\n#  USER 1001\nADD --chown=1001:0 app-src /tmp/src\n\n# Let the assemble script to install the dependencies\nRUN /usr/libexec/s2i/assemble\n\n# Run script uses standard ways to run the application\nCMD /usr/libexec/s2i/run\n\n4. Build a new image from a Dockerfile prepared in the previous step\n\npodman build -t nginx-app .\n\n5. Run the resulting image with the final application\n\npodman run -d nginx-app\n\nDirect usage with a mounted directory\n\nAn example of the data on the host for the following example:\n\n$ ls -lZ /wwwdata/html\n-rw-r--r--. 1 1001 1001 54321 Jan 01 12:34 index.html\n-rw-r--r--. 1 1001 1001  5678 Jan 01 12:34 page.html\n\nIf you want to run the image directly and mount the static pages available in the /wwwdata/ directory on the host as a container volume, execute the following command:\n\n$ podman run -d --name nginx -p 8080:8080 -v /wwwdata:/opt/app-root/src:Z ubi8/nginx-126 nginx -g \"daemon off;\"\n\nThis creates a container named nginx running the Nginx server, serving data from the /wwwdata/ directory. Port 8080 is exposed and mapped to the host. You can pull the data from the nginx container using this command:\n\n$ curl -Lk 127.0.0.1:8080\n\nYou can replace /wwwdata/ with location of your web root. Please note that this has to be an absolute path, due to podman requirements.\nEnvironment variables and volumes\n\nThe nginx container image supports the following configuration variable, which can be set by using the -e option with the podman run command:\n\nNGINX_LOG_TO_VOLUME When NGINX_LOG_TO_VOLUME is set, nginx logs into /var/log/nginx/.\nTroubleshooting\n\nBy default, nginx access logs are written to standard output and error logs are written to standard error, so both are available in the container log. The log can be examined by running:\n\npodman logs <container>\n\nSee also\n\nDockerfile and other sources for this container image are available on https://github.com/sclorg/nginx-container. In that repository you also can find another versions of Python environment Dockerfiles. for RHEL8 it's Dockerfile.rhel8, Dockerfile for RHEL10 is called Dockerfile.rhel10, Dockerfile for CentOS Stream 9 is called Dockerfile.c9s, Dockerfile for CentOS Stream 10 is called Dockerfile.c10s, and the Fedora Dockerfile is called Dockerfile.fedora.","commandType":4},{"text":"~ $ ls\nbin                   home                  proc                  sys\ndev                   lib                   root                  tmp\ndocker-entrypoint.d   media                 run                   usr\ndocker-entrypoint.sh  mnt                   sbin                  var\netc                   opt                   srv\n~ $ ls -la opt/\ntotal 0\ndrwxr-xr-x    2 root     root             6 Feb 13 23:04 .\ndr-xr-xr-x    1 root     root            28 May  6 17:27 ..\n~ $ ","commandType":4},{"text":"can we just use this mvp as a starting point:\n\n\n3.1. To use your own setup, create a Dockerfile with this content:\n\nFROM registry.access.redhat.com/ubi8/nginx-126\n\n# Add application sources\nADD test-app/nginx.conf \"${NGINX_CONF_PATH}\"\nADD test-app/nginx-default-cfg/*.conf \"${NGINX_DEFAULT_CONF_PATH}\"\nADD test-app/nginx-cfg/*.conf \"${NGINX_CONFIGURATION_PATH}\"\nADD test-app/*.html .\n\n# Run script uses standard ways to run the application\nCMD nginx -g \"daemon off;\"\n","commandType":4},{"text":"still use the same fedora image","commandType":4},{"text":"fix the dockerfile","commandType":4},{"text":"keep the var paths","commandType":4},{"text":"/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration\n/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh\n10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)\n/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh\n/docker-entrypoint.sh: Configuration complete; ready for start up\n2025/05/06 17:50:13 [warn] 1#1: the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\nnginx: [warn] the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\n2025/05/06 17:50:13 [emerg] 1#1: \"location\" directive is not allowed here in /etc/nginx/conf.d/default.conf:9\nnginx: [emerg] \"location\" directive is not allowed here in /etc/nginx/conf.d/default.conf:9","commandType":4},{"text":"is the path right?","commandType":4},{"text":"no I mean the build path we're copying from","commandType":4},{"text":"@nginx.conf /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration\n/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh\n10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)\n/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh\n/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh\n/docker-entrypoint.sh: Configuration complete; ready for start up\n2025/05/06 18:01:16 [warn] 1#1: the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\nnginx: [warn] the \"user\" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2\n2025/05/06 18:01:16 [emerg] 1#1: \"location\" directive is not allowed here in /etc/nginx/conf.d/default.conf:9\nnginx: [emerg] \"location\" directive is not allowed here in /etc/nginx/conf.d/default.conf:9","commandType":4},{"text":"the issue is in the @nginx.conf ","commandType":4},{"text":"@https://portal.container.mom/ 404s\n\n\n~ $ ls -la\ntotal 12\ndr-xr-xr-x    1 root     root            28 May  6 18:06 .\ndr-xr-xr-x    1 root     root            28 May  6 18:06 ..\ndrwxr-xr-x    2 root     root          4096 Feb 13 23:04 bin\ndrwxr-xr-x    5 root     root           360 May  6 18:06 dev\ndrwxr-xr-x    1 root     root            41 Apr 23 18:51 docker-entrypoint.d\n-rwxr-xr-x    1 root     root          1620 Apr 23 18:51 docker-entrypoint.sh\ndrwxr-xr-x    1 root     root            19 May  6 18:05 etc\ndrwxr-xr-x    2 root     root             6 Feb 13 23:04 home\ndrwxr-xr-x    1 root     root            17 Feb 13 23:04 lib\ndrwxr-xr-x    5 root     root            44 Feb 13 23:04 media\ndrwxr-xr-x    2 root     root             6 Feb 13 23:04 mnt\ndrwxr-xr-x    2 root     root             6 Feb 13 23:04 opt\ndr-xr-xr-x 1080 root     root             0 May  6 18:06 proc\ndrwx------    2 root     root             6 Feb 13 23:04 root\ndrwxrwxr-x    1 root     root            59 May  6 18:06 run\ndrwxr-xr-x    2 root     root          4096 Feb 13 23:04 sbin\ndrwxr-xr-x    2 root     root             6 Feb 13 23:04 srv\ndr-xr-xr-x   13 root     root             0 Mar 22 18:57 sys\ndrwxrwxrwt    2 root     root             6 Feb 13 23:04 tmp\ndrwxr-xr-x    1 root     root            19 Feb 13 23:04 usr\ndrwxr-xr-x    1 root     root            19 Feb 13 23:04 var","commandType":4},{"text":"the issue is probably in the dockerfile. let's investiaget if files are in the right dir","commandType":4},{"text":"@portal.yml is using teh wrong dockerfiles ","commandType":4},{"text":"update the workflow to use @Dockerfile ","commandType":4},{"text":"Run podman build \\\n[1/2] STEP 1/6: FROM quay.io/fedora/nodejs-18:latest AS build\nTrying to pull quay.io/fedora/nodejs-18:latest...\nGetting image source signatures\nCopying blob sha256:b0bed1e0aa276f7b4624032ff8ffbef01e096746b2e336a0ec3e891d11991d73\nCopying blob sha256:95fe7b64e419f415e8175e1a4f65b41ddb69fdb5c5730a26abd9ffd4a50a1281\nCopying blob sha256:c1266253c0b60dea30470d7aa163480b5b3dfde6053704c9cf63b567e8df19ff\nCopying config sha256:5c71661acd8363df48bebd9c9f376ce4979824cb544a683bc9baca6a2bbf083b\nWriting manifest to image destination\n[1/2] STEP 2/6: WORKDIR /usr/src/app\n--> a73f5f51c90c\n[1/2] STEP 3/6: COPY --chown=1001:1001 package*.json ./\nError: building at STEP \"COPY --chown=1001:1001 package*.json ./\": checking on sources under \"/home/runner/work/container-mom-go/container-mom-go\": Rel: can't make  relative to /home/runner/work/container-mom-go/container-mom-go; copier: stat: [\"/package*.json\"]: no such file or directory\nError: Process completed with exit code 125.","commandType":4},{"text":"Run podman build \\\n[1/2] STEP 1/6: FROM quay.io/fedora/nodejs-18:latest AS build\nTrying to pull quay.io/fedora/nodejs-18:latest...\nGetting image source signatures\nCopying blob sha256:b0bed1e0aa276f7b4624032ff8ffbef01e096746b2e336a0ec3e891d11991d73\nCopying blob sha256:95fe7b64e419f415e8175e1a4f65b41ddb69fdb5c5730a26abd9ffd4a50a1281\nCopying blob sha256:c1266253c0b60dea30470d7aa163480b5b3dfde6053704c9cf63b567e8df19ff\nCopying config sha256:5c71661acd8363df48bebd9c9f376ce4979824cb544a683bc9baca6a2bbf083b\nWriting manifest to image destination\n[1/2] STEP 2/6: WORKDIR /usr/src/app\n--> cfb4a8db3a6c\n[1/2] STEP 3/6: COPY --chown=1001:1001 package*.json ./\n--> 6b35bd4f8c83\n[1/2] STEP 4/6: RUN npm install\nnpm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead\nnpm WARN deprecated domexception@2.0.1: Use your platform's native DOMException instead\nnpm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.\nnpm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.3.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.3.0>\nnpm notice Run `npm install -g npm@11.3.0` to update!\nnpm notice \nnpm ERR! code EMFILE\nnpm ERR! syscall open\nnpm ERR! path /opt/app-root/src/.npm/_cacache/index-v5/bb/68/431da6a77bae523c9b8e44218a52c36c1c81fe7d9626698941b8b8787f8d\nnpm ERR! errno -24\nnpm ERR! EMFILE: too many open files, open '/opt/app-root/src/.npm/_cacache/index-v5/bb/68/431da6a77bae523c9b8e44218a52c36c1c81fe7d9626698941b8b8787f8d'\n\nnpm ERR! A complete log of this run can be found in: /opt/app-root/src/.npm/_logs/2025-05-07T06_23_17_364Z-debug-0.log\nError: building at STEP \"RUN npm install\": while running runtime: exit status 232\nError: Process completed with exit code 232.","commandType":4},{"text":"Run podman build \\\n[1/2] STEP 1/7: FROM quay.io/fedora/nodejs-18:latest AS build\nTrying to pull quay.io/fedora/nodejs-18:latest...\nGetting image source signatures\nCopying blob sha256:b0bed1e0aa276f7b4624032ff8ffbef01e096746b2e336a0ec3e891d11991d73\nCopying blob sha256:95fe7b64e419f415e8175e1a4f65b41ddb69fdb5c5730a26abd9ffd4a50a1281\nCopying blob sha256:c1266253c0b60dea30470d7aa163480b5b3dfde6053704c9cf63b567e8df19ff\nCopying config sha256:5c71661acd8363df48bebd9c9f376ce4979824cb544a683bc9baca6a2bbf083b\nWriting manifest to image destination\n[1/2] STEP 2/7: WORKDIR /usr/src/app\n--> 1d4412477fb2\n[1/2] STEP 3/7: RUN ulimit -n 65536 || echo \"Unable to increase file descriptor limit\"\n/bin/sh: line 1: ulimit: open files: cannot modify limit: Operation not permitted\nUnable to increase file descriptor limit\n--> 11540dc6abbb\n[1/2] STEP 4/7: COPY --chown=1001:1001 package*.json ./\n--> 57a8d43bb040\n[1/2] STEP 5/7: RUN npm install --no-fund --no-audit --loglevel=error\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.3.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.3.0>\nnpm notice Run `npm install -g npm@11.3.0` to update!\nnpm notice \nnpm ERR! code EMFILE\nnpm ERR! syscall open\nnpm ERR! path /opt/app-root/src/.npm/_cacache/index-v5/87/c8/11238035e0054bee6449d80822c4c0dfdc55300b554a45430c93776ca570\nnpm ERR! errno -24\nnpm ERR! EMFILE: too many open files, open '/opt/app-root/src/.npm/_cacache/index-v5/87/c8/11238035e0054bee6449d80822c4c0dfdc55300b554a45430c93776ca570'\nnpm ERR! A complete log of this run can be found in: /opt/app-root/src/.npm/_logs/2025-05-07T06_29_19_486Z-debug-0.log\nError: building at STEP \"RUN npm install --no-fund --no-audit --loglevel=error\": while running runtime: exit status 232\nError: Process completed with exit code 232.","commandType":4},{"text":"Run podman build \\\n[1/2] STEP 1/8: FROM quay.io/fedora/nodejs-18:latest AS build\nTrying to pull quay.io/fedora/nodejs-18:latest...\nGetting image source signatures\nCopying blob sha256:b0bed1e0aa276f7b4624032ff8ffbef01e096746b2e336a0ec3e891d11991d73\nCopying blob sha256:c1266253c0b60dea30470d7aa163480b5b3dfde6053704c9cf63b567e8df19ff\nCopying blob sha256:95fe7b64e419f415e8175e1a4f65b41ddb69fdb5c5730a26abd9ffd4a50a1281\nCopying config sha256:5c71661acd8363df48bebd9c9f376ce4979824cb544a683bc9baca6a2bbf083b\nWriting manifest to image destination\n[1/2] STEP 2/8: WORKDIR /usr/src/app\n--> 03e76caeb7c0\n[1/2] STEP 3/8: COPY package*.json ./\n--> 6c0f756aade6\n[1/2] STEP 4/8: ENV NODE_OPTIONS=\"--max-old-space-size=512 --max-http-header-size=8192\"\n--> db76207eb29e\n[1/2] STEP 5/8: ENV npm_config_cache=/tmp/npm-cache\n--> 6e97a8a2f548\n[1/2] STEP 6/8: RUN mkdir -p /tmp/npm-cache &&     npm config set maxsockets 1 &&     npm ci --no-fund --no-audit --loglevel=error || npm install --no-fund --no-audit --loglevel=error --production\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.3.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.3.0>\nnpm notice Run `npm install -g npm@11.3.0` to update!\nnpm notice \nnpm ERR! code EUSAGE\nnpm ERR! \nnpm ERR! `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.\nnpm ERR! \nnpm ERR! Invalid: lock file's postcss-selector-parser@7.0.0 does not satisfy postcss-selector-parser@6.1.2\nnpm ERR! Missing: @types/react@18.3.21 from lock file\nnpm ERR! Missing: @types/prop-types@15.7.14 from lock file\nnpm ERR! Missing: csstype@3.1.3 from lock file\nnpm ERR! Missing: postcss-selector-parser@7.1.0 from lock file\nnpm ERR! Missing: postcss-selector-parser@7.1.0 from lock file\nnpm ERR! Missing: typescript@4.9.5 from lock file\nnpm ERR! \nnpm ERR! Clean install a project\nnpm ERR! \nnpm ERR! Usage:\nnpm ERR! npm ci\nnpm ERR! \nnpm ERR! Options:\nnpm ERR! [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]\nnpm ERR! [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]\nnpm ERR! [--include <prod|dev|optional|peer> [--include <prod|dev|optional|peer> ...]]\nnpm ERR! [--strict-peer-deps] [--foreground-scripts] [--ignore-scripts] [--no-audit]\nnpm ERR! [--no-bin-links] [--no-fund] [--dry-run]\nnpm ERR! [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]\nnpm ERR! [-ws|--workspaces] [--include-workspace-root] [--install-links]\nnpm ERR! \nnpm ERR! aliases: clean-install, ic, install-clean, isntall-clean\nnpm ERR! \nnpm ERR! Run \"npm help ci\" for more info\n\nnpm ERR! A complete log of this run can be found in: /tmp/npm-cache/_logs/2025-05-07T06_32_50_325Z-debug-0.log\nnpm ERR! code EACCES\nnpm ERR! syscall mkdir\nnpm ERR! path /usr/src/app/node_modules\nnpm ERR! errno -13\nnpm ERR! Error: EACCES: permission denied, mkdir '/usr/src/app/node_modules'\nnpm ERR!  [Error: EACCES: permission denied, mkdir '/usr/src/app/node_modules'] {\nnpm ERR!   errno: -13,\nnpm ERR!   code: 'EACCES',\nnpm ERR!   syscall: 'mkdir',\nnpm ERR!   path: '/usr/src/app/node_modules'\nnpm ERR! }\nnpm ERR! \nnpm ERR! The operation was rejected by your operating system.\nnpm ERR! It is likely you do not have the permissions to access this file as the current user\nnpm ERR! \nnpm ERR! If you believe this might be a permissions issue, please double-check the\nnpm ERR! permissions of the file and its containing directories, or try running\nnpm ERR! the command again as root/Administrator.\n\nnpm ERR! A complete log of this run can be found in: /tmp/npm-cache/_logs/2025-05-07T06_32_52_933Z-debug-0.log\nError: building at STEP \"RUN mkdir -p /tmp/npm-cache &&     npm config set maxsockets 1 &&     npm ci --no-fund --no-audit --loglevel=error || npm install --no-fund --no-audit --loglevel=error --production\": while running runtime: exit status 243\nError: Process completed with exit code 243.\n\n\n","commandType":4},{"text":"look at @@https://developers.redhat.com/articles/2023/05/17/build-lean-nodejs-container-images-ubi-and-podman#attempting_to_slim_down_the_node_js_container_image ","commandType":4},{"text":"use the existing images","commandType":4},{"text":"Run podman build \\\n[1/2] STEP 1/9: FROM quay.io/fedora/nodejs-18:latest AS build\nTrying to pull quay.io/fedora/nodejs-18:latest...\nGetting image source signatures\nCopying blob sha256:b0bed1e0aa276f7b4624032ff8ffbef01e096746b2e336a0ec3e891d11991d73\nCopying blob sha256:95fe7b64e419f415e8175e1a4f65b41ddb69fdb5c5730a26abd9ffd4a50a1281\nCopying blob sha256:c1266253c0b60dea30470d7aa163480b5b3dfde6053704c9cf63b567e8df19ff\nCopying config sha256:5c71661acd8363df48bebd9c9f376ce4979824cb544a683bc9baca6a2bbf083b\nWriting manifest to image destination\n[1/2] STEP 2/9: RUN mkdir -p /opt/app-root/src &&     chown 1001:1001 /opt/app-root/src\nchown: changing ownership of '/opt/app-root/src': Operation not permitted\nError: building at STEP \"RUN mkdir -p /opt/app-root/src &&     chown 1001:1001 /opt/app-root/src\": while running runtime: exit status 1\nError: Process completed with exit code 1.\n","commandType":4},{"text":"[1/2] STEP 6/8: RUN npm config set registry https://registry.npmjs.org/ &&     npm install --no-optional --loglevel=error\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.3.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.3.0>\nnpm notice Run `npm install -g npm@11.3.0` to update!\nnpm notice \nnpm ERR! code EMFILE\nnpm ERR! syscall open\nnpm ERR! path /opt/app-root/src/.npm/_cacache/index-v5/43/5c/29f7f2d31e9a297b5fdc209c28127f6aa0de5c1a089f0bb857e79a48e035\nnpm ERR! errno -24\nnpm ERR! EMFILE: too many open files, open '/opt/app-root/src/.npm/_cacache/index-v5/43/5c/29f7f2d31e9a297b5fdc209c28127f6aa0de5c1a089f0bb857e79a48e035'\n\nnpm ERR! A complete log of this run can be found in: /opt/app-root/src/.npm/_logs/2025-05-07T06_40_15_959Z-debug-0.log\nError: building at STEP \"RUN npm config set registry https://registry.npmjs.org/ &&     npm install --no-optional --loglevel=error\": while running runtime: exit status 232\nError: Process completed with exit code 232.","commandType":4},{"text":" [1/2] STEP 10/12: RUN mkdir -p /tmp/empty-cache &&     npm install --loglevel=error --no-audit --no-fund --prefer-offline --no-optional --ignore-scripts --production=false --concurrency=1\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.3.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.3.0>\nnpm notice Run `npm install -g npm@11.3.0` to update!\nnpm notice \nnpm ERR! code EACCES\nnpm ERR! syscall open\nnpm ERR! path /opt/app-root/src/package-lock.json\nnpm ERR! errno -13\nnpm ERR! Error: EACCES: permission denied, open '/opt/app-root/src/package-lock.json'\nnpm ERR!  [Error: EACCES: permission denied, open '/opt/app-root/src/package-lock.json'] {\nnpm ERR!   errno: -13,\nnpm ERR!   code: 'EACCES',\nnpm ERR!   syscall: 'open',\nnpm ERR!   path: '/opt/app-root/src/package-lock.json'\nnpm ERR! }\nnpm ERR! \nnpm ERR! The operation was rejected by your operating system.\nnpm ERR! It is likely you do not have the permissions to access this file as the current user\nnpm ERR! \nnpm ERR! If you believe this might be a permissions issue, please double-check the\nnpm ERR! permissions of the file and its containing directories, or try running\nnpm ERR! the command again as root/Administrator.\n\nnpm ERR! A complete log of this run can be found in: /tmp/empty-cache/_logs/2025-05-07T06_44_39_339Z-debug-0.log\nError: building at STEP \"RUN mkdir -p /tmp/empty-cache &&     npm install --loglevel=error --no-audit --no-fund --prefer-offline --no-optional --ignore-scripts --production=false --concurrency=1\": while running runtime: exit status 243\nError: Process completed with exit code 243.","commandType":4},{"text":"[1/2] STEP 14/14: RUN npm run build\n> container-mom-portal@0.1.0 build\n> react-scripts build\nCreating an optimized production build...\nFailed to compile.\n[eslint] EACCES: permission denied, open '/opt/app-root/src/node_modules/.cache/.eslintcache'\nError: building at STEP \"RUN npm run build\": while running runtime: exit status 1\nError: Process completed with exit code 1.","commandType":4},{"text":"[1/2] STEP 17/19: RUN npm install --loglevel=error --no-audit --no-fund --prefer-offline --no-optional --ignore-scripts --production=false --concurrency=1 --no-package-lock\nnpm ERR! code EACCES\nnpm ERR! syscall mkdir\nnpm ERR! path /tmp/empty-cache/_cacache\nnpm ERR! errno -13\nnpm ERR! \nnpm ERR! Your cache folder contains root-owned files, due to a bug in\nnpm ERR! previous versions of npm which has since been addressed.\nnpm ERR! \nnpm ERR! To permanently fix this problem, please run:\nnpm ERR!   sudo chown -R 1001:0 \"/tmp/empty-cache\"\nnpm ERR! Log files were not written due to an error writing to the directory: /tmp/empty-cache/_logs\nnpm ERR! You can rerun the command with `--loglevel=verbose` to see the logs in your terminal\nError: building at STEP \"RUN npm install --loglevel=error --no-audit --no-fund --prefer-offline --no-optional --ignore-scripts --production=false --concurrency=1 --no-package-lock\": while running runtime: exit status 243","commandType":4},{"text":"nginx: [emerg] \"server\" directive is not allowed here in /etc/nginx/nginx.conf:2","commandType":4},{"text":"the portal is reachable but if I click on login, I don't get the basic auth thing","commandType":4},{"text":"but the basic auth stuff happens in the portal app no?","commandType":4},{"text":"Loading failed for the <script> with source “https://portal.container.mom/env-config.js”. login:1:425\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.8edf5483.js:2:208700\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.8edf5483.js:2:208700\nJSON parse error: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data\n    getUser auth.js:92\nmain.8edf5483.js:2:216614\n","commandType":4},{"text":"but we feed it env vars in @manifests ","commandType":4},{"text":"we're not hardcoding this","commandType":4},{"text":"clicking the login button takes me to https://container-mom-portal-backend:8080/login","commandType":4},{"text":"Generated env-config.js with the following content:\nwindow.env = {\nREACT_APP_API_URL: 'http://container-mom-portal-backend:8080',\nREACT_APP_ENABLE_BASIC_AUTH: 'true',\nREACT_APP_BASIC_AUTH_USERNAME: 'testuser'\n};\nnginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 64; ignoring types_hash_bucket_size\nnginx: [emerg] unknown \"api_url\" variable","commandType":4},{"text":"we don't want it to be fixed","commandType":4},{"text":"this is all unnecessarily complex","commandType":4},{"text":"no fixed url","commandType":4},{"text":"that is still a hardcoded url","commandType":4},{"text":"            proxy_pass http://container-mom-portal-backend:8080;\n\nthis is still hardcoded","commandType":4},{"text":"still hardcoded","commandType":4},{"text":"ok I can log in but the login prompt leaks the password and if I click on deployments it's not loading","commandType":4},{"text":"don't show the default pw in the form wtf si wrong with you","commandType":4},{"text":"the deployments view is also still not working. there is probably some rbac check","commandType":4},{"text":"deployments asks for a login again after already loggin gin","commandType":4},{"text":"why is the landing page at container.mom not serving","commandType":4},{"text":"the landing page is @landing-page not portal","commandType":4},{"text":"","commandType":4},{"text":"can you check our cert manager certs and why they're not auto renewing?","commandType":4},{"text":"maybe https://container.mom is just missing a cert","commandType":4},{"text":"add it to @ansible \nso it's created with the other certs","commandType":4},{"text":"check why container.mom is still insecure","commandType":4},{"text":"if the routes are created in @manifests we should adapt them to use the certs there","commandType":4},{"text":"Failed sync attempt to 213a64ab0e584cbb313e31158d578255ff5f4e2e: one or more objects failed to apply, reason: Route.route.openshift.io \"landing-www\" is invalid: [spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to get this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to watch this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to list this secret, spec.tls.externalCertificate: Not found: \"secrets \\\"container-mom-root-tls\\\" not found\"]","commandType":4},{"text":"what if we remove the ansible stuff to create the cert and instead gitops it","commandType":4},{"text":"Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): failed to execute helm template command: failed to get command args to log: `helm template . --name-template landing-page --namespace container-mom-landing --kube-version 1.31 <api versions removed> --include-crds` failed exit status 1: Error: template: container-mom-landing/templates/www-route.yaml:19:22: executing \"container-mom-landing/templates/www-route.yaml\" at <.Values.tls.enabled>: nil pointer evaluating interface {}.enabled Use --debug flag to render out invalid YAML","commandType":4},{"text":"https://container.mom still seems insecure","commandType":4},{"text":"no effect","commandType":4},{"text":"look at the other examples in @manifests ","commandType":4},{"text":"it look slike the cert manager cert for https://container.mom is not created","commandType":4},{"text":"use oc. also @manifests has examples","commandType":4},{"text":"I think the namespaces mismatch","commandType":4},{"text":"pls @values.yaml ","commandType":4},{"text":"Waiting for certificate to be ready...\nCertificate secret found, proceeding with sync...\nChecking access to required resources...\nExtracting certificate data...\nCreating or updating certificate secret in openshift-ingress namespace...\nsecret/container-mom-tls unchanged\nTLS certificate synced successfully to openshift-ingress namespace!\nAnnotating routes to use the synced certificate...\nError from server (Forbidden): routes.route.openshift.io \"landing\" is forbidden: User \"system:serviceaccount:container-mom-landing:container-mom-landing\" cannot get resource \"routes\" in API group \"route.openshift.io\" in the namespace \"container-mom-landing\"","commandType":4},{"text":"https://container.mom is still insecure","commandType":4},{"text":"Failed sync attempt to 677067f577c04de7938f2238a5bdd8937bea997c: one or more objects failed to apply, reason: error when patching \"/dev/shm/891348877\": Route.route.openshift.io \"landing\" is invalid: [spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to get this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to watch this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to list this secret],error when patching \"/dev/shm/1636051797\": Route.route.openshift.io \"landing-www\" is invalid: [spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to get this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to watch this secret, spec.tls.externalCertificate: Forbidden: router serviceaccount does not have permission to list this secret]","commandType":4},{"text":"check why it's still not workin","commandType":4},{"text":"why is it in that namespace and not the release ns","commandType":4},{"text":"no manual job","commandType":4},{"text":"fix the ns in @certificate.yaml ","commandType":4},{"text":"edit the existing cert","commandType":4},{"text":"let's just use the default cert from *.apps","commandType":4},{"text":"remove everything that's no longer needed from the manifests","commandType":4},{"text":"is the *apps router cert active for https://container.mom now?","commandType":4},{"text":"2","commandType":4},{"text":"@portal\n\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.7e1e1eff.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.7e1e1eff.js:2:157020\nError fetching deployments: Error: Failed to fetch deployments: 401\n    z Deployments.jsx:286\nmain.7e1e1eff.js:2:194292\nError fetching user roles: Error: Failed to fetch user roles\n    ot Deployments.jsx:250\nmain.7e1e1eff.js:2:193881\nServer error: \nObject { error: \"Unauthorized\", message: \"Authentication required\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: Failed to create deployment\n    onDeploy Deployments.jsx:326\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\nmain.7e1e1eff.js:2:189778\nServer error: \nObject { error: \"Unauthorized\", message: \"Authentication required\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: Failed to create deployment\n    onDeploy Deployments.jsx:326\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\nmain.7e1e1eff.js:2:189778\n","commandType":4},{"text":"we already set basic auth credentials through @manifests in secrets","commandType":4},{"text":"the site keeps prompting for username + password through pop ups after logging in","commandType":4},{"text":"update the backend instead","commandType":4},{"text":"@basicAuth.js @auth.js ","commandType":4},{"text":"is there a more secure way of doing this?","commandType":4},{"text":"remove all basic auth stuff","commandType":4},{"text":"@https://container-mom.com/roles  is not one of our urls","commandType":4},{"text":"temporatily disable all auth for the portal","commandType":4},{"text":"@https://container-mom.com/roles ","commandType":4},{"text":"⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.7e1e1eff.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.7e1e1eff.js:2:157020\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 401 Unauthorized 26ms]\n\nXHRGET\nhttps://portal.container.mom/api/auth/roles\n[HTTP/1.1 401 Unauthorized 58ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 401\n    z Deployments.jsx:286\n    ot Deployments.jsx:230\n    React 3\n    k scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.7e1e1eff.js:2:194292\nError fetching user roles: Error: Failed to fetch user roles\n    ot Deployments.jsx:250\n    ot Deployments.jsx:263\n    React 3\n    k scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.7e1e1eff.js:2:193881\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 400 Bad Request 786ms]\n\nServer error: \nObject { error: \"Validation error\", details: \"This subdomain is already in use\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:326\n    onClick Deployments.jsx:741\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:189778\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 400 Bad Request 82ms]\n\nServer error: \nObject { error: \"Validation error\", details: \"This subdomain is already in use\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:326\n    onClick Deployments.jsx:741\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:189778\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 400 Bad Request 59ms]\n\nServer error: \nObject { error: \"Validation error\", details: \"This subdomain is already in use\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:326\n    onClick Deployments.jsx:741\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:189778\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 400 Bad Request 68ms]\n\nServer error: \nObject { error: \"Validation error\", details: \"This subdomain is already in use\" }\nmain.7e1e1eff.js:2:199022\nError handling deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:326\n    onClick Deployments.jsx:741\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:199290\nFailed to save deployment: TypeError: e is undefined\n    onClick Deployments.jsx:744\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.7e1e1eff.js:2:189778\n","commandType":4},{"text":"getting an incorrect subdomain in use error\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.b478ee0c.js:2:163794\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.b478ee0c.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.b478ee0c.js:2:157020\nError fetching deployments: Error: Failed to fetch deployments: 500\n    O Deployments.jsx:350\nmain.b478ee0c.js:2:193065\nServer error: \nObject { error: \"Validation error\", details: \"This subdomain is already in use\" }\nmain.b478ee0c.js:2:198379\nError handling deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:421\nmain.b478ee0c.js:2:198662\nFailed to save deployment: Error: This subdomain is already in use\n    onDeploy Deployments.jsx:421\nmain.b478ee0c.js:2:188143\n","commandType":4},{"text":"why do we have dummy deployments listed?","commandType":4},{"text":"let's remove mock deployments all together","commandType":4},{"text":"it's not fetching the deployments from the cluster\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.80649c96.js:2:163794\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.80649c96.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.80649c96.js:2:157020\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 550ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 500\n    z Deployments.jsx:300\n    ot Deployments.jsx:230\n    React 3\n    k scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.80649c96.js:2:192084\n","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.80649c96.js:2:163794\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.80649c96.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.80649c96.js:2:157020\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 550ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 500\n    z Deployments.jsx:300\n    ot Deployments.jsx:230\n    React 3\n    k scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.80649c96.js:2:192084\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 249ms]\n\nServer error: \nObject { error: \"Failed to create deployment\", details: \"Failed to create deployment: HTTP request failed\" }\nmain.80649c96.js:2:196814\nError handling deployment: Error: Failed to create deployment: HTTP request failed\n    onDeploy Deployments.jsx:341\n    onClick Deployments.jsx:758\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.80649c96.js:2:197097\nFailed to save deployment: Error: Failed to create deployment: HTTP request failed\n    onDeploy Deployments.jsx:341\n    onClick Deployments.jsx:758\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.80649c96.js:2:187419\n","commandType":4},{"text":"BO","commandType":4},{"text":"NO","commandType":4},{"text":"use oc to get logs from the backend","commandType":4},{"text":"try again","commandType":4},{"text":"no. we're not mocking shit. we have a cluster","commandType":4},{"text":"the portal is in the portal ns","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.80649c96.js:2:163794\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.80649c96.js:2:157020\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.80649c96.js:2:157020\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRPOST\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 180ms]\n\nServer error: \nObject { error: \"Failed to create deployment\", details: \"Failed to create deployment: HTTP request failed\" }\nmain.80649c96.js:2:196814\nError handling deployment: Error: Failed to create deployment: HTTP request failed\n    onDeploy Deployments.jsx:341\n    onClick Deployments.jsx:758\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.80649c96.js:2:197097\nFailed to save deployment: Error: Failed to create deployment: HTTP request failed\n    onDeploy Deployments.jsx:341\n    onClick Deployments.jsx:758\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.80649c96.js:2:187419\n","commandType":4},{"text":"no troubleshoot in the live deployment","commandType":4},{"text":"pls","commandType":4},{"text":"no it's running in the cluster","commandType":4},{"text":"no you can just read logs with oc","commandType":4},{"text":"ok the deployment is created in the fronted it seems","commandType":4},{"text":"troubleshoot the operator. there seems to be some issue with reconcilinh the cmd probsbly because the wp deployment is a template","commandType":4},{"text":"adapt the code in the portal to match with the local cluster we defined","commandType":4},{"text":"the wp template has some issues:\n\nWordPress not found in /var/www/html - copying now...\ntar: .: Cannot change mode to rwxrwxrwx: Operation not permitted\ntar: ./wp-content: Cannot change mode to rwxrwxrwx: Operation not permitted\ntar: ./wp-content/plugins: Cannot change mode to rwxrwxrwx: Operation not permitted\ntar: ./wp-content/themes: Cannot change mode to rwxrwxrwx: Operation not permitted\ntar: Exiting with failure status due to previous errors","commandType":4},{"text":"don't we follow a different template approach on the operaot side? I think we have a crd for templates","commandType":4},{"text":"can we also make","commandType":4},{"text":"can we also make sure the frontend uses templates from these crds and cretes deployments using them?","commandType":4},{"text":"the portal needs to parse required vars etc from the template","commandType":4},{"text":"also the portal doesn't fetch all created doeploments  ","commandType":4},{"text":"--> 5f294b1a2e5a\n[1/2] STEP 8/9: COPY . ./\n--> b780f0432da2\n[1/2] STEP 9/9: RUN npm run build\n\n> container-mom-portal@0.1.0 build\n> react-scripts build\n\nCreating an optimized production build...\nFailed to compile.\n\nModule not found: Error: Can't resolve 'axios' in '/opt/app-root/src/src/services'\n\n\nError: building at STEP \"RUN npm run build\": while running runtime: exit status 1\nError: Process completed with exit code 1.","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.0d16dd17.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.0d16dd17.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.0d16dd17.js:2:157167\nReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:71771\nUncaught ReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:237341\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 513ms]\n\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 500 Internal Server Error 541ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 500\n    V Deployments.jsx:324\n    Fr Deployments.jsx:375\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:236818\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:209614\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:237215\n","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.0d16dd17.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.0d16dd17.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.0d16dd17.js:2:157167\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 10\n    Ir App.jsx:20\n    Ir App.jsx:29\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.0d16dd17.js:2:71771\nUncaught ReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 10\n    Ir App.jsx:20\n    Ir App.jsx:29\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.0d16dd17.js:2:237341\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 88ms]\n\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 500 Internal Server Error 82ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 500\n    V Deployments.jsx:324\n    Fr Deployments.jsx:375\n    React 10\n    Ir App.jsx:20\n    Ir App.jsx:29\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.0d16dd17.js:2:236818\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:209614\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:237215\n","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.0d16dd17.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.0d16dd17.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.0d16dd17.js:2:157167\nReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:71771\nUncaught ReferenceError: checkAuth is not defined\n    Fr Deployments.jsx:376\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:237341\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 500 Internal Server Error 58ms]\n\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 500 Internal Server Error 129ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 500\n    V Deployments.jsx:324\n    Fr Deployments.jsx:375\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.0d16dd17.js:2:236818\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:209614\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.0d16dd17.js:2:237215\n","commandType":4},{"text":"added 1477 packages, and audited 1478 packages in 45s\n\n272 packages are looking for funding\n  run `npm fund` for details\n\n8 vulnerabilities (2 moderate, 6 high)\n\nTo address all issues (including breaking changes), run:\n  npm audit fix --force\n\nRun `npm audit` for details.\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.4.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.4.0>\nnpm notice Run `npm install -g npm@11.4.0` to update!\nnpm notice \n--> 2cec51a0e29a\n[1/2] STEP 8/9: COPY . ./\n--> 967e9678fcf2\n[1/2] STEP 9/9: RUN npm run build\n\n> container-mom-portal@0.1.0 build\n> react-scripts build\n\nCreating an optimized production build...\nFailed to compile.\n\nSyntaxError: /opt/app-root/src/src/components/Deployments.jsx: Unexpected token, expected \"}\" (1072:36)\n  1070 |         <h4>Template Parameters</h4>\n  1071 |         {selectedTemplate.parameters.map((param, index) => (\n> 1072 |           <div key={`param-${index}`\n       |                                     ^\n\n\nError: building at STEP \"RUN npm run build\": while running runtime: exit status 1\nError: Process completed with exit code 1.","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.b7493ba6.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.b7493ba6.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.b7493ba6.js:2:157167\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nReferenceError: fetchUserRoles is not defined\n    Dr Deployments.jsx:392\n    React 10\n    zr App.jsx:21\n    zr App.jsx:30\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.b7493ba6.js:2:71771\n    React 14\n    zr App.jsx:21\n    zr App.jsx:30\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nUncaught ReferenceError: fetchUserRoles is not defined\n    Dr Deployments.jsx:392\n    React 10\n    zr App.jsx:21\n    zr App.jsx:30\n    React 10\n    f index.tsx:809\n    push history.ts:664\n    te hooks.tsx:244\n    b index.tsx:1452\n    onClick index.tsx:1027\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.b7493ba6.js:2:233442\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 500 Internal Server Error 68ms]\n\nAPI Error: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.b7493ba6.js:2:209290\nError fetching templates: \nObject { message: \"Request failed with status code 500\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 500, stack: \"\", … }\nmain.b7493ba6.js:2:209656\n","commandType":4},{"text":"check pod logs","commandType":4},{"text":"edit the role in @manifests ","commandType":4},{"text":"npm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.4.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.4.0>\nnpm notice Run `npm install -g npm@11.4.0` to update!\nnpm notice \n8 vulnerabilities (2 moderate, 6 high)\nTo address all issues (including breaking changes), run:\n  npm audit fix --force\nRun `npm audit` for details.\n--> a2deae5f19bf\n[1/2] STEP 8/9: COPY . ./\n--> be9835cf79b0\n[1/2] STEP 9/9: RUN npm run build\n> container-mom-portal@0.1.0 build\n> react-scripts build\nCreating an optimized production build...\nFailed to compile.\nSyntaxError: /opt/app-root/src/src/components/Deployments.jsx: Missing initializer in const declaration. (765:28)\n  763 |\n  764 |   // Initialize sourceType based on existing deployment\n> 765 |   const getInitialSourceType\n      |                             ^\n    at parser.next (<anonymous>)\n    at normalizeFile.next (<anonymous>)\n    at run.next (<anonymous>)\n    at transform.next (<anonymous>)\nError: building at STEP \"RUN npm run build\":","commandType":4},{"text":"\n--> e5331f49e59c\n[1/2] STEP 8/9: COPY . ./\n--> 67b9c26a8fe9\n[1/2] STEP 9/9: RUN npm run build\n\n> container-mom-portal@0.1.0 build\n> react-scripts build\n\nCreating an optimized production build...\nFailed to compile.\n\nSyntaxError: /opt/app-root/src/src/components/Deployments.jsx: Unexpected token (774:4)\n  772 |     }\n  773 |     return 'prebaked';\n> 774 |   };\n      |     ^\n    at parser.next (<anonymous>)\n    at normalizeFile.next (<anonymous>)\n    at run.next (<anonymous>)\n\n\nError: building at STEP \"RUN npm run build\": while running runtime: exit status 1\nError: Process completed with exit code 1.\n0s","commandType":4},{"text":"why is the styling all fucked now\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.e1d46061.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.e1d46061.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.e1d46061.js:2:157167\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nError formatting template: TypeError: this is undefined\n    formatTemplateForForm templateService.js:97\n    V Deployments.jsx:323\n    Dr Deployments.jsx:268\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\n \nObject { id: \"wordpress\", name: \"wordpress\", description: \"WordPress deployment with MariaDB database\", components: (5) […], parameters: (8) […], networkConfig: {…} }\nmain.e1d46061.js:2:211590\nError formatting template: TypeError: this is undefined\n    formatTemplateForForm templateService.js:97\n    Ar Deployments.jsx:829\n    Ar Deployments.jsx:841\n    React 10\n    $ Deployments.jsx:457\n    onEdit Deployments.jsx:631\n    onClick Deployments.jsx:786\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\n \nObject { id: \"wordpress\", name: \"wordpress\", description: \"WordPress deployment with MariaDB database\", components: (5) […], parameters: (8) […], networkConfig: {…} }\nmain.e1d46061.js:2:211590\n","commandType":4},{"text":"where did the nice looking  modal go? it looks like ass now","commandType":4},{"text":"also template params is redundant with other env var form","commandType":4},{"text":"style is srill not back to normal","commandType":4},{"text":"look at the old deployment file from when it looked fine\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { regions, testRegion, templates } from '../constants';\nimport './Deployments.css';\nimport config from '../config';\nimport Cookies from 'js-cookie';\nimport { authService, isAuthEnabled, getUserRoles, isUserAdmin } from '../services/auth';\nimport templateService from '../services/templateService';\n\n// Simple Card component (since we don't have a UI library imported)\nconst Card = ({ className, onClick, children }) => {\n  return (\n    <div className={className} onClick={onClick}>\n      {children}\n    </div>\n  );\n};\n\n// Card subcomponents\nCard.Body = ({ children }) => <div className=\"card-body\">{children}</div>;\nCard.Title = ({ children }) => <h3 className=\"card-title\">{children}</h3>;\nCard.Text = ({ children }) => <p className=\"card-text\">{children}</p>;\n\n// Add URI validation helper\nconst isValidUrl = (string) => {\n  try {\n    new URL(string);\n    return true;\n  } catch (_) {\n    return false;\n  }\n};\n\n// Add container registry validation\nconst isValidContainerImage = (string) => {\n  // Basic container image format validation\n  // e.g., registry.example.com/username/image:tag\n  const pattern = /^(?:([a-zA-Z0-9\\-\\.]+(?::\\d+)?)\\/)?([\\w\\-\\/]+)(?::([\\w\\-\\.]+))?$/;\n  return pattern.test(string);\n};\n\n// Add these arrays at the top with other constants\nconst momWords = {\n  adjectives: ['warm', 'sweet', 'loving', 'caring', 'gentle', 'kind', 'wise', 'patient', 'cozy'],\n  nouns: ['cookies', 'cuddles', 'hugs', 'kisses', 'snuggles', 'comfort', 'wisdom', 'love'],\n  traits: ['girlboss', 'rockstar', 'champion', 'superhero', 'warrior', 'legend', 'queen', 'maven']\n};\n\n// Add this helper function\nconst generateSubdomainOptions = (existingDomains = []) => {\n  const options = [];\n\n  while (options.length < 3) {\n    const adj = momWords.adjectives[Math.floor(Math.random() * momWords.adjectives.length)];\n    const noun = momWords.nouns[Math.floor(Math.random() * momWords.nouns.length)];\n    const trait = momWords.traits[Math.floor(Math.random() * momWords.traits.length)];\n\n    const subdomain = `${adj}-${noun}-${trait}`;\n\n    if (!existingDomains.includes(subdomain) && !options.includes(subdomain)) {\n      options.push(subdomain);\n    }\n  }\n\n  return options;\n};\n\nfunction CredentialsForm({ type, credentials = {}, onChange, onTest }) {\n  const [showPassword, setShowPassword] = useState(false);\n  const [isTestingCredentials, setIsTestingCredentials] = useState(false);\n\n  const handleChange = (field, value) => {\n    onChange({\n      ...credentials,\n      type,\n      [field]: value\n    });\n  };\n\n  const handleTest = async () => {\n    setIsTestingCredentials(true);\n    try {\n      await onTest(credentials);\n      alert('Credentials verified successfully!');\n    } catch (error) {\n      alert(`Failed to verify credentials: ${error.message}`);\n    } finally {\n      setIsTestingCredentials(false);\n    }\n  };\n\n  return (\n    <div className=\"credentials-form\">\n      <h4>{type === 'git' ? 'Git Credentials' : 'Registry Credentials'}</h4>\n\n      <div className=\"auth-type-selector\">\n        <select\n          value={credentials?.authType || 'none'}\n          onChange={(e) => handleChange('authType', e.target.value)}\n        >\n          <option value=\"none\">No Authentication</option>\n          {type === 'git' ? (\n            <>\n              <option value=\"basic\">Username/Password</option>\n              <option value=\"token\">Access Token</option>\n              <option value=\"ssh\">SSH Key</option>\n            </>\n          ) : (\n            <>\n              <option value=\"basic\">Username/Password</option>\n              <option value=\"token\">Access Token</option>\n            </>\n          )}\n        </select>\n      </div>\n\n      {credentials?.authType === 'basic' && (\n        <>\n          <div className=\"input-group\">\n            <label>Username</label>\n            <input\n              type=\"text\"\n              value={credentials.username || ''}\n              onChange={(e) => handleChange('username', e.target.value)}\n              placeholder=\"Username\"\n            />\n          </div>\n          <div className=\"input-group\">\n            <label>Password</label>\n            <div className=\"password-input\">\n              <input\n                type={showPassword ? 'text' : 'password'}\n                value={credentials.password || ''}\n                onChange={(e) => handleChange('password', e.target.value)}\n                placeholder=\"Password\"\n              />\n              <button\n                type=\"button\"\n                className=\"toggle-password\"\n                onClick={() => setShowPassword(!showPassword)}\n              >\n                {showPassword ? '👁️' : '👁️‍🗨️'}\n              </button>\n            </div>\n          </div>\n          {type === 'registry' && (\n            <div className=\"input-group\">\n              <label>Email</label>\n              <input\n                type=\"email\"\n                value={credentials.email || ''}\n                onChange={(e) => handleChange('email', e.target.value)}\n                placeholder=\"Email for registry\"\n              />\n            </div>\n          )}\n        </>\n      )}\n\n      {credentials?.authType === 'token' && (\n        <div className=\"input-group\">\n          <label>Access Token</label>\n          <div className=\"password-input\">\n            <input\n              type={showPassword ? 'text' : 'password'}\n              value={credentials.token || ''}\n              onChange={(e) => handleChange('token', e.target.value)}\n              placeholder=\"Access Token\"\n            />\n            <button\n              type=\"button\"\n              className=\"toggle-password\"\n              onClick={() => setShowPassword(!showPassword)}\n            >\n              {showPassword ? '👁️' : '👁️‍🗨️'}\n            </button>\n          </div>\n        </div>\n      )}\n\n      {credentials?.authType === 'ssh' && type === 'git' && (\n        <div className=\"input-group\">\n          <label>SSH Private Key</label>\n          <textarea\n            value={credentials.sshKey || ''}\n            onChange={(e) => handleChange('sshKey', e.target.value)}\n            placeholder=\"Paste your SSH private key here\"\n            rows={6}\n          />\n        </div>\n      )}\n\n      {credentials?.authType !== 'none' && (\n        <button\n          type=\"button\"\n          className=\"test-credentials\"\n          onClick={handleTest}\n          disabled={isTestingCredentials}\n        >\n          {isTestingCredentials ? 'Testing...' : 'Test Credentials'}\n        </button>\n      )}\n    </div>\n  );\n}\n\nfunction Deployments() {\n  // Replace the Auth0 hook with our own auth state management\n  const [user, setUser] = useState(null);\n  const [isAuthenticated, setIsAuthenticated] = useState(false);\n  const [isAuthLoading, setIsAuthLoading] = useState(true);\n  const [deployments, setDeployments] = useState([]);\n  const [showNewDeployment, setShowNewDeployment] = useState(false);\n  const [editingDeployment, setEditingDeployment] = useState(null);\n  const [initialTab, setInitialTab] = useState('source');\n  const [isLoadingData, setIsLoadingData] = useState(true);\n  const [error, setError] = useState(null);\n  const [viewMode, setViewMode] = useState(Cookies.get('deploymentViewMode') || 'card');\n  const [sortBy, setSortBy] = useState('name');\n  const [sortOrder, setSortOrder] = useState('asc');\n  const [filterStatus, setFilterStatus] = useState('all');\n  const [searchTerm, setSearchTerm] = useState('');\n  const [userRoles, setUserRoles] = useState([]);\n  const [apiTemplates, setApiTemplates] = useState([]);\n  const [loadingTemplates, setLoadingTemplates] = useState(true);\n  const [lastRefresh, setLastRefresh] = useState(Date.now());\n  const [isPolling, setIsPolling] = useState(true);\n  const [pollingInterval, setPollingInterval] = useState(5000); // 5 seconds\n\n  // Check auth status when component mounts\n  useEffect(() => {\n    const authenticateUser = async () => {\n      try {\n        setIsAuthLoading(true);\n        const userData = await authService.getUser();\n        setUser(userData);\n        setIsAuthenticated(!!userData);\n      } catch (error) {\n        console.error('Auth check error:', error);\n        setIsAuthenticated(false);\n      } finally {\n        setIsAuthLoading(false);\n      }\n    };\n    \n    authenticateUser();\n  }, []);\n\n  useEffect(() => {\n    if (isAuthenticated) {\n      fetchDeployments();\n    }\n  }, [isAuthenticated]);\n\n  useEffect(() => {\n    Cookies.set('deploymentViewMode', viewMode, { expires: 365 });\n  }, [viewMode]);\n\n  console.log('Auth state:', { isAuthenticated, isAuthLoading });\n  console.log('User:', user);\n\n  // Add refresh button and polling toggle\n  const togglePolling = () => {\n    setIsPolling(!isPolling);\n  };\n  \n  // Use effect to load data\n  useEffect(() => {\n    fetchTemplates();\n    fetchDeployments();\n    \n    // Only fetch user roles if needed\n    if (userRoles.length === 0 && isAuthenticated) {\n      // Fetch user roles directly instead of calling an undefined function\n      (async () => {\n        try {\n          // Use mock roles for basic auth in development mode\n          if (isAuthEnabled() && window.sessionStorage.getItem('test_auth_pwd')) {\n            console.log('Using mock roles with basic auth');\n            setUserRoles(['admin']);\n            return;\n          }\n          \n          const response = await fetch(`/api/auth/roles`, {\n            credentials: 'include'\n          });\n  \n          if (!response.ok) {\n            throw new Error('Failed to fetch user roles');\n          }\n  \n          const { roles } = await response.json();\n          setUserRoles(roles);\n        } catch (error) {\n          console.error('Error fetching user roles in load effect:', error);\n          // Set default roles as fallback to prevent UI issues\n          if (user) {\n            const extractedRoles = getUserRoles(user);\n            setUserRoles(extractedRoles);\n          } else {\n            setUserRoles([]);\n          }\n        }\n      })();\n    }\n    \n    // Set up polling control\n    return () => {\n      setIsPolling(false);\n    };\n  }, []);\n\n  // Use the helper function to determine admin status, with fallback to userRoles state\n  const isAdmin = user ? isUserAdmin(user) : userRoles.includes('admin');\n  const availableRegions = isAdmin ? [...regions, testRegion] : regions;\n\n  // Fetch API templates\n  const fetchTemplates = async () => {\n    try {\n      setLoadingTemplates(true);\n      const templates = await templateService.getAllTemplates();\n      // Format templates for UI use\n      const formattedTemplates = templates\n        .map(templateService.formatTemplateForForm)\n        .filter(Boolean); // Filter out null values\n      setApiTemplates(formattedTemplates);\n    } catch (error) {\n      console.error('Error fetching templates:', error);\n      setError('Failed to load templates. Using local templates as fallback.');\n      // Fall back to local templates if API fails\n    } finally {\n      setLoadingTemplates(false);\n    }\n  };\n\n  // Convert to useCallback to avoid recreation on every render\n  const fetchDeployments = useCallback(async () => {\n    try {\n      setIsLoadingData(true);\n      \n      console.log('Fetching deployments...');\n      \n      // Use relative URL instead of hardcoded localhost\n      const response = await fetch('/api/deployments', {\n        credentials: 'include',\n        headers: {\n          'Accept': 'application/json'\n        }\n      });\n\n      if (!response.ok) {\n        throw new Error(`Failed to fetch deployments: ${response.status}`);\n      }\n\n      const data = await response.json();\n      console.log(`Fetched ${data.length} deployments:`, data);\n      \n      // Check if any new deployments were added or updated\n      const hasChanges = data.length !== deployments.length || \n                         data.some(newDep => {\n                           const existingDep = deployments.find(d => d._id === newDep._id);\n                           return !existingDep || existingDep.status !== newDep.status;\n                         });\n      \n      if (hasChanges) {\n        console.log('Changes detected in deployments, updating state');\n        setDeployments(data);\n      }\n      \n      setError(null);\n      setLastRefresh(Date.now());\n    } catch (error) {\n      console.error('Error fetching deployments:', error);\n      setError('Failed to load deployments. Please try again later.');\n      // Provide empty deployments array as fallback if we haven't loaded any yet\n      if (deployments.length === 0) {\n        setDeployments([]);\n      }\n    } finally {\n      setIsLoadingData(false);\n    }\n  }, [deployments]);\n  \n  // Add polling for deployments\n  useEffect(() => {\n    if (!isPolling) return;\n    \n    const timer = setTimeout(() => {\n      fetchDeployments();\n    }, pollingInterval);\n    \n    return () => clearTimeout(timer);\n  }, [isPolling, lastRefresh, fetchDeployments, pollingInterval]);\n\n  if (isAuthLoading) {\n    return <div>Loading...</div>;\n  }\n\n  const handleDeploy = async (deploymentData) => {\n    try {\n      setIsLoadingData(true);\n      \n      let newDeployment;\n      \n      // If using a template, use the template API endpoint\n      if (deploymentData.sourceType === 'prebaked' && deploymentData.selectedTemplateId) {\n        const templateDeploymentData = {\n          name: deploymentData.name,\n          subdomain: deploymentData.subdomain,\n          clusters: deploymentData.regions,\n          params: {} // Add any template parameters here\n        };\n        \n        // If there are environment variables, convert them to template parameters\n        if (deploymentData.env && deploymentData.env.length > 0) {\n          deploymentData.env.forEach(env => {\n            templateDeploymentData.params[env.key] = env.value;\n          });\n        }\n        \n        newDeployment = await templateService.createDeploymentFromTemplate(\n          deploymentData.selectedTemplateId,\n          templateDeploymentData\n        );\n      } else {\n        // Regular deployment creation\n        const response = await fetch('/api/deployments', {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n          },\n          body: JSON.stringify(deploymentData),\n          credentials: 'include'\n        });\n        \n        if (!response.ok) {\n          const errorData = await response.json();\n          throw new Error(errorData.error || 'Failed to create deployment');\n        }\n        \n        newDeployment = await response.json();\n      }\n      \n      // Add the new deployment to state\n      setDeployments(prev => [...prev, newDeployment]);\n      \n      return newDeployment;\n    } catch (error) {\n      console.error('Error creating deployment:', error);\n      setError(error.message);\n      throw error;\n    } finally {\n      setIsLoadingData(false);\n    }\n  };\n\n  const handleEdit = (deployment, tab = 'source') => {\n    setEditingDeployment(deployment);\n    setInitialTab(tab);\n    setShowNewDeployment(true);\n  };\n\n  const updateDeploymentStatus = (deploymentId, status) => {\n    setDeployments(deployments.map(d =>\n      d._id === deploymentId ? { ...d, status } : d\n    ));\n  };\n\n  const deleteDeployment = async (deploymentId) => {\n    if (window.confirm('Are you sure you want to delete this deployment?')) {\n      try {\n        const response = await fetch(`/api/deployments/${deploymentId}`, {\n          method: 'DELETE',\n          credentials: 'include'\n        });\n\n        if (!response.ok) {\n          const errorData = await response.json();\n          throw new Error(errorData.details || 'Failed to delete deployment');\n        }\n\n        // Only remove from state if the delete was successful\n        setDeployments(prev => prev.filter(d => d._id !== deploymentId));\n      } catch (error) {\n        console.error('Error deleting deployment:', error);\n        alert(error.message);\n      }\n    }\n  };\n\n  const handleSort = (field) => {\n    if (sortBy === field) {\n      setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc');\n    } else {\n      setSortBy(field);\n      setSortOrder('asc');\n    }\n  };\n\n  const filteredAndSortedDeployments = deployments\n    .filter(d => {\n      if (filterStatus !== 'all' && d.status !== filterStatus) return false;\n      if (searchTerm && !d.name.toLowerCase().includes(searchTerm.toLowerCase())) return false;\n      return true;\n    })\n    .sort((a, b) => {\n      const order = sortOrder === 'asc' ? 1 : -1;\n      switch (sortBy) {\n        case 'name':\n          return order * a.name.localeCompare(b.name);\n        case 'status':\n          return order * a.status.localeCompare(b.status);\n        case 'created':\n          return order * (new Date(a.createdAt) - new Date(b.createdAt));\n        default:\n          return 0;\n      }\n    });\n\n  return (\n    <div className=\"deployments-page\">\n      {isAdmin && (\n        <div className=\"admin-badge\">\n          <span className=\"admin-icon\">👑</span>\n          Admin Mode\n        </div>\n      )}\n\n      <header className=\"deployments-header\">\n        <div className=\"header-left\">\n          <h1>Your Deployments</h1>\n          <div className=\"view-toggle\">\n            <button\n              className={`view-toggle-btn ${viewMode === 'card' ? 'active' : ''}`}\n              onClick={() => setViewMode('card')}\n            >\n              <span className=\"icon\">⊞</span>\n              <span className=\"label\">Cards</span>\n            </button>\n            <button\n              className={`view-toggle-btn ${viewMode === 'list' ? 'active' : ''}`}\n              onClick={() => setViewMode('list')}\n            >\n              <span className=\"icon\">☰</span>\n              <span className=\"label\">List</span>\n            </button>\n          </div>\n        </div>\n        <div className=\"header-actions\">\n          <button \n            className=\"refresh-btn\" \n            onClick={fetchDeployments} \n            disabled={isLoadingData}\n            title=\"Refresh Deployments\"\n          >\n            🔄 {isLoadingData ? 'Loading...' : ''}\n          </button>\n          <button\n            className={`auto-refresh-btn ${isPolling ? 'active' : ''}`}\n            onClick={togglePolling}\n            title={isPolling ? \"Disable Auto-refresh\" : \"Enable Auto-refresh\"}\n          >\n            {isPolling ? '⏸️ Auto' : '▶️ Auto'}\n          </button>\n          <button\n            className=\"new-deployment-btn\"\n            onClick={() => setShowNewDeployment(true)}\n          >\n            New Deployment\n          </button>\n        </div>\n      </header>\n      \n      {error && (\n        <div className=\"error-banner\">\n          <span className=\"error-icon\">⚠️</span>\n          {error}\n          <button className=\"retry-btn\" onClick={fetchDeployments}>Retry</button>\n        </div>\n      )}\n      \n      {isLoadingData && deployments.length === 0 && (\n        <div className=\"loading-indicator\">\n          <div className=\"spinner\"></div>\n          <p>Loading deployments...</p>\n        </div>\n      )}\n      \n      {!isLoadingData && deployments.length === 0 && !error && (\n        <div className=\"empty-state\">\n          <div className=\"empty-icon\">📦</div>\n          <h3>No deployments found</h3>\n          <p>Get started by creating your first deployment</p>\n          <button\n            className=\"new-deployment-btn\"\n            onClick={() => setShowNewDeployment(true)}\n          >\n            Create Deployment\n          </button>\n        </div>\n      )}\n\n      {viewMode === 'list' && (\n        <div className=\"list-controls\">\n          <div className=\"search-filter\">\n            <input\n              type=\"text\"\n              placeholder=\"Search deployments...\"\n              value={searchTerm}\n              onChange={(e) => setSearchTerm(e.target.value)}\n            />\n            <select\n              value={filterStatus}\n              onChange={(e) => setFilterStatus(e.target.value)}\n            >\n              <option value=\"all\">All Status</option>\n              <option value=\"running\">Running</option>\n              <option value=\"paused\">Paused</option>\n              <option value=\"error\">Error</option>\n            </select>\n          </div>\n        </div>\n      )}\n\n      {viewMode === 'card' ? (\n        <div className=\"deployments-grid\">\n          {/* Existing card view */}\n          {filteredAndSortedDeployments.map(deployment => (\n            <DeploymentCard\n              key={deployment._id}\n              deployment={deployment}\n              onEdit={(tab) => handleEdit(deployment, tab)}\n              onUpdateStatus={updateDeploymentStatus}\n              onDelete={() => deleteDeployment(deployment._id)}\n            />\n          ))}\n        </div>\n      ) : (\n        <div className=\"deployments-list\">\n          <table>\n            <thead>\n              <tr>\n                <th onClick={() => handleSort('name')}>\n                  Name {sortBy === 'name' && (sortOrder === 'asc' ? '↑' : '↓')}\n                </th>\n                <th onClick={() => handleSort('status')}>\n                  Status {sortBy === 'status' && (sortOrder === 'asc' ? '↑' : '↓')}\n                </th>\n                <th>Source</th>\n                <th>Regions</th>\n                <th onClick={() => handleSort('created')}>\n                  Created {sortBy === 'created' && (sortOrder === 'asc' ? '↑' : '↓')}\n                </th>\n                <th>Actions</th>\n              </tr>\n            </thead>\n            <tbody>\n              {filteredAndSortedDeployments.map(deployment => (\n                <tr key={deployment._id}>\n                  <td>{deployment.name}</td>\n                  <td>\n                    <span className={`status-dot ${deployment.status}`} />\n                    {deployment.status}\n                  </td>\n                  <td>{deployment.gitUrl || deployment.containerImage}</td>\n                  <td>\n                    {deployment.regions.map(regionId => {\n                      const region = [...regions, testRegion].find(r => r.id === regionId);\n                      return region && (\n                        <span\n                          key={region.id}\n                          className=\"region-tag-small\"\n                          title={`${region.name} (${region.location})`}\n                        >\n                          {region.icon}\n                        </span>\n                      );\n                    })}\n                  </td>\n                  <td>{new Date(deployment.createdAt).toLocaleDateString()}</td>\n                  <td className=\"actions\">\n                    <button\n                      className=\"action-btn\"\n                      onClick={() => handleEdit(deployment, 'logs')}\n                      data-tooltip=\"View Logs\"\n                    >\n                      📋\n                    </button>\n                    <button\n                      className=\"action-btn\"\n                      onClick={() => handleEdit(deployment, 'source')}\n                      data-tooltip=\"Edit\"\n                    >\n                      ✏️\n                    </button>\n                    <button\n                      className=\"action-btn\"\n                      onClick={() => deleteDeployment(deployment._id)}\n                      data-tooltip=\"Delete\"\n                    >\n                      🗑\n                    </button>\n                  </td>\n                </tr>\n              ))}\n            </tbody>\n          </table>\n        </div>\n      )}\n\n      {showNewDeployment && (\n        <NewDeploymentForm\n          deployment={editingDeployment}\n          initialTab={initialTab}\n          onClose={() => {\n            setShowNewDeployment(false);\n            setEditingDeployment(null);\n            setInitialTab('source');\n          }}\n          onDeploy={handleDeploy}\n          availableRegions={availableRegions}\n        />\n      )}\n    </div>\n  );\n}\n\nfunction NewDeploymentForm({\n  deployment,\n  initialTab,\n  onClose,\n  onDeploy,\n  availableRegions\n}) {\n  const [activeTab, setActiveTab] = useState(initialTab || 'source');\n  const [apiTemplates, setApiTemplates] = useState([]);\n  const [loadingTemplates, setLoadingTemplates] = useState(true);\n\n  // Fetch templates on component mount\n  useEffect(() => {\n    const fetchTemplates = async () => {\n      try {\n        setLoadingTemplates(true);\n        const templates = await templateService.getAllTemplates();\n        // Format templates for UI use\n        const formattedTemplates = templates\n          .map(templateService.formatTemplateForForm)\n          .filter(Boolean); // Filter out null values\n        setApiTemplates(formattedTemplates);\n      } catch (error) {\n        console.error('Error fetching templates:', error);\n        // Fall back to local templates\n        setApiTemplates([]);\n      } finally {\n        setLoadingTemplates(false);\n      }\n    };\n    \n    fetchTemplates();\n  }, []);\n\n  // Combine API templates with local templates as fallback\n  const combinedTemplates = apiTemplates.length > 0 ? apiTemplates : templates;\n\n  // Initialize sourceType based on existing deployment\n  const getInitialSourceType","commandType":4},{"text":"apply the code changes to use proper components again","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.830abc23.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.830abc23.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.830abc23.js:2:157167\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 502 Bad Gateway 19ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 22ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 20ms]\n\nAPI Error: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.830abc23.js:2:209290\nError fetching templates: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.830abc23.js:2:210301\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    Fr Deployments.jsx:269\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.830abc23.js:2:233558\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    Fr Deployments.jsx:250\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.830abc23.js:2:233558\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 19ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.830abc23.js:2:233558\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 19ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.830abc23.js:2:233558\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 46ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.830abc23.js:2:233558\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 22ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.830abc23.js:2:233558\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 20ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:351\n    e Deployments.jsx:388\n    setTimeout handler*Fr/< Deployments.jsx:387\n    React 3\n    S scheduler.production.min.js:13\n    R scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.830abc23.js:2:233558\n","commandType":4},{"text":"check this commit 699e5065b7fbe0347e86655527764b3d6d4a7e22","commandType":4},{"text":"resume","commandType":4},{"text":"help me troubleshoot creating a deployment in the portal\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.830abc23.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.830abc23.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.830abc23.js:2:157167\nAPI Error: \nObject { message: \"Request failed with status code 503\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 503, stack: \"\", … }\nmain.830abc23.js:2:209290\nError fetching templates: \nObject { message: \"Request failed with status code 503\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 503, stack: \"\", … }\nmain.830abc23.js:2:210301\n@portal-backend @portal @\\","commandType":4},{"text":"use oc commands to troubleshoot the live deployment","commandType":4},{"text":"this is the problem we want to be solving remember? troubleshooting the deployment comes later\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.830abc23.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.830abc23.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.830abc23.js:2:157167\nAPI Error: \nObject { message: \"Request failed with status code 503\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 503, stack: \"\", … }\nmain.830abc23.js:2:209290\nError fetching templates: \nObject { message: \"Request failed with status code 503\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 503, stack: \"\", … }\nmain.830abc23.js:2:210301\n","commandType":4},{"text":"the backend uses a svc","commandType":4},{"text":"the deploy button stays greyed after a validatuin error after submitting","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.d984b755.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.d984b755.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.d984b755.js:2:157167\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRPOST\nhttps://portal.container.mom/api/templates/wordpress/deploy\n[HTTP/1.1 400 Bad Request 209ms]\n\nAPI Error: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.d984b755.js:2:209290\nError creating deployment from template: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.d984b755.js:2:210870\nError creating deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.d984b755.js:2:240006\nFailed to save deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.d984b755.js:2:231110\n","commandType":4},{"text":"add a message to the frontend","commandType":4},{"text":"also make the form not redundant like if the user selects a url it sgould populae the domain field","commandType":4},{"text":"i filled out everytung\n\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.c31e15c1.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.c31e15c1.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.c31e15c1.js:2:157167\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRPOST\nhttps://portal.container.mom/api/templates/wordpress/deploy\n[HTTP/1.1 400 Bad Request 97ms]\n\nAPI Error: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:209650\nError creating deployment from template: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:211230\nError creating deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:243681\nFailed to save deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:234634\nXHRPOST\nhttps://portal.container.mom/api/templates/wordpress/deploy\n[HTTP/1.1 400 Bad Request 93ms]\n\nAPI Error: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:209650\nError creating deployment from template: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:211230\nError creating deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:243681\nFailed to save deployment: \nObject { message: \"Request failed with status code 400\", name: \"AxiosError\", code: \"ERR_BAD_REQUEST\", config: {…}, request: XMLHttpRequest, response: {…}, status: 400, stack: \"\", … }\nmain.c31e15c1.js:2:234634\n","commandType":4},{"text":"now the modal is broken","commandType":4},{"text":"stilll not submittng. check backend logs","commandType":4},{"text":"use oc commands","commandType":4},{"text":"no that's a bad idea","commandType":4},{"text":"pls fix","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.1b4d2048.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.1b4d2048.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.1b4d2048.js:2:157167\nReferenceError: formData is not defined\n    Qr Deployments.jsx:839\n    React 8\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.1b4d2048.js:2:71771\nUncaught ReferenceError: formData is not defined\n    Qr Deployments.jsx:839\n    React 8\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.1b4d2048.js:2:261380\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.1b4d2048.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.1b4d2048.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.1b4d2048.js:2:157167\nReferenceError: formData is not defined\n    Qr Deployments.jsx:839\n    React 8\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.1b4d2048.js:2:71771\nUncaught ReferenceError: formData is not defined\n    Qr Deployments.jsx:839\n    React 8\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.1b4d2048.js:2:261380\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\n","commandType":4},{"text":"remove the debug information checkbox and stuff\nalso remove the extra deploy wp button which is redundant","commandType":4},{"text":"the tabs in the modal are not horzontally aligned anymore","commandType":4},{"text":"remove the \"has required params\" notice when chosing a template","commandType":4},{"text":"the domain name is still not filled when selecting a domain","commandType":4},{"text":"filling the domain name field is still not working and the key value boes are not vertically aligned anymore","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.d21874b2.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.d21874b2.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.d21874b2.js:2:157167\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nUncaught (in promise) ReferenceError: setSubmitError is not defined\n    onClick Deployments.jsx:1300\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.d21874b2.js:2:247140\n","commandType":4},{"text":"now loading deployments fails\n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.d21874b2.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.d21874b2.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.d21874b2.js:2:157167\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 17ms]\n\nXHRGET\nhttps://portal.container.mom/api/templates\n[HTTP/1.1 502 Bad Gateway 19ms]\n\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 40ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:353\n    Vr Deployments.jsx:271\n    React 3\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.d21874b2.js:2:251667\nAPI Error: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.d21874b2.js:2:209653\nAPI Error Status: 502 main.d21874b2.js:2:209729\nAPI Error Response Data: <html>\n\n<head><title>502 Bad Gateway</title></head>\n\n<body>\n\n<center><h1>502 Bad Gateway</h1></center>\n\n<hr><center>nginx/1.26.3</center>\n\n</body>\n\n</html>\n\nmain.d21874b2.js:2:209779\nError fetching templates: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.d21874b2.js:2:211405\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:353\n    Vr Deployments.jsx:252\n    React 3\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.d21874b2.js:2:251667\nXHRGET\nhttps://portal.container.mom/api/deployments\n[HTTP/1.1 502 Bad Gateway 22ms]\n\nError fetching deployments: Error: Failed to fetch deployments: 502\n    H Deployments.jsx:353\n    React 16\n    <anonymous> index.js:6\n    <anonymous> index.js:9\nmain.d21874b2.js:2:251667\n","commandType":4},{"text":"added 1477 packages, and audited 1478 packages in 42s\n\n272 packages are looking for funding\n  run `npm fund` for details\n\n8 vulnerabilities (2 moderate, 6 high)\n\nTo address all issues (including breaking changes), run:\n  npm audit fix --force\n\nRun `npm audit` for details.\nnpm notice \nnpm notice New major version of npm available! 10.2.3 -> 11.4.0\nnpm notice Changelog: <https://github.com/npm/cli/releases/tag/v11.4.0>\nnpm notice Run `npm install -g npm@11.4.0` to update!\nnpm notice \n--> eb8dfc56d5d8\n[1/2] STEP 8/9: COPY . ./\n--> e6ac86aca9d1\n[1/2] STEP 9/9: RUN npm run build\n\n> container-mom-portal@0.1.0 build\n> react-scripts build\n\nCreating an optimized production build...\nFailed to compile.\n\nSyntaxError: /opt/app-root/src/src/components/Deployments.jsx: Unexpected token (848:2)\n  846 |\n  847 | function DeploymentCard({ deployment, onEdit, onUpdateStatus, onDelete }) {\n> 848 |   const deploymentDate = new Date(deployment.createdAt).toLocaleDateString();\n      |   ^\n  849 |   \n  850 |   // Get region info from the deployment's regions\n  851 |   const deploymentRegions = deployment.regions.map(regionId => {\n\n\nError: building at STEP \"RUN npm run build\": while running runtime: exit status 1\nError: Process completed with exit code 1.","commandType":4},{"text":"⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.d21874b2.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.d21874b2.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.d21874b2.js:2:157167\nAPI Error: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.d21874b2.js:2:209653\nAPI Error Status: 502 main.d21874b2.js:2:209729\nAPI Error Response Data: <html>\n\n<head><title>502 Bad Gateway</title></head>\n\n<body>\n\n<center><h1>502 Bad Gateway</h1></center>\n\n<hr><center>nginx/1.26.3</center>\n\n</body>\n\n</html>\n\nmain.d21874b2.js:2:209779\nError fetching templates: \nObject { message: \"Request failed with status code 502\", name: \"AxiosError\", code: \"ERR_BAD_RESPONSE\", config: {…}, request: XMLHttpRequest, response: {…}, status: 502, stack: \"\", … }\nmain.d21874b2.js:2:211405\nUncaught (in promise) ReferenceError: setSubmitError is not defined\n    onClick https://portal.container.mom/static/js/main.d21874b2.js:2\n    Le https://portal.container.mom/static/js/main.d21874b2.js:2\n    Be https://portal.container.mom/static/js/main.d21874b2.js:2\n    Ur https://portal.container.mom/static/js/main.d21874b2.js:2\n    Ur https://portal.container.mom/static/js/main.d21874b2.js:2\n    Ir https://portal.container.mom/static/js/main.d21874b2.js:2\n    Vr https://portal.container.mom/static/js/main.d21874b2.js:2\n    uu https://portal.container.mom/static/js/main.d21874b2.js:2\n    Re https://portal.container.mom/static/js/main.d21874b2.js:2\n    Vr https://portal.container.mom/static/js/main.d21874b2.js:2\n    $t https://portal.container.mom/static/js/main.d21874b2.js:2\n    Qt https://portal.container.mom/static/js/main.d21874b2.js:2\nmain.d21874b2.js:2:247140\nSource map error: Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data\nStack in the worker:parseSourceMapInput@resource://devtools/client/shared/vendor/source-map/lib/util.js:163:15\n_factory@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:1066:22\nSourceMapConsumer@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:26:12\n_fetch@resource://devtools/client/shared/source-map-loader/utils/fetchSourceMap.js:83:19\n\nResource URL: https://portal.container.mom/static/css/main.789c2e35.css\nSource Map URL: main.789c2e35.css.map\nSource map error: Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data\nStack in the worker:parseSourceMapInput@resource://devtools/client/shared/vendor/source-map/lib/util.js:163:15\n_factory@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:1066:22\nSourceMapConsumer@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:26:12\n_fetch@resource://devtools/client/shared/source-map-loader/utils/fetchSourceMap.js:83:19\n\nResource URL: https://portal.container.mom/static/js/main.d21874b2.js\nSource Map URL: main.d21874b2.js.map\n","commandType":4},{"text":"@pkg @cmd the operator doesn't seem to clean up namespaces after CMDs the deleted","commandType":4},{"text":"it looks like the operator also deleted a namespace for an existing CMD\n\n","commandType":4},{"text":"the CMD has a namespace annotation. why not just use that to prevent deletion along with the system namespace we're exclugin (e.g. argocd) \n\napiVersion: container.mom/v1alpha1\nkind: ContainerMomDeployment\nmetadata:\n  annotations:\n    containermom.mom/namespace: wkl-fooo-fooo-24de0fb4","commandType":4},{"text":"is there anything we can clean up to make the code tidyer?","commandType":4},{"text":"2025-05-18T10:11:29Z\tINFO\tsetup\tAttempting to create operator\t{\"attempt\": 1, \"maxRetries\": 5}\n2025-05-18T10:11:29Z\tINFO\tsetup\tStarting HTTP server\t{\"port\": \":8082\"}\n2025-05-18T10:11:29Z\tINFO\tsetup\tStarting operator\n2025-05-18T10:11:29Z\tINFO\tinitializing operator\n2025-05-18T10:11:29Z\tINFO\tstarting HTTP server\t{\"addr\": \":8081\"}\n2025-05-18T10:11:29Z\tINFO\tHTTP server is ready\n2025-05-18T10:11:29Z\tINFO\t============ STARTING DEPLOYMENT CONTROLLER ============\n2025-05-18T10:11:29Z\tINFO\tStarting deployment controller\n2025-05-18T10:11:29Z\tINFO\tDeployment controller started\n2025-05-18T10:11:29Z\tINFO\tDeployment controller start function returned successfully\n2025-05-18T10:11:29Z\tINFO\t============ STARTING WORKLOAD CONTROLLER ============\n2025-05-18T10:11:29Z\tINFO\tWorkload controller goroutine has started\n2025-05-18T10:11:29Z\tINFO\tCreating controller manager\n2025-05-18T10:11:29Z\tINFO\tController manager created successfully\n2025-05-18T10:11:29Z\tINFO\tLoaded cluster configuration\t{\"cluster\": \"default\"}\n2025-05-18T10:11:29Z\tINFO\tLoaded all cluster configurations\t{\"clusters\": \"default\"}\n2025-05-18T10:11:29Z\tINFO\tSetting up workload controller with multi-cluster support\n2025-05-18T10:11:29Z\tINFO\tSetting up workload controller\n2025-05-18T10:11:29Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-18T10:11:29Z\tINFO\tInitializing WorkloadController with cluster configurations\t{\"configCount\": 1, \"clusterNames\": \"[default]\"}\n2025-05-18T10:11:29Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-18T10:11:29Z\tINFO\tAdded cluster client\t{\"region\": \"default\"}\n2025-05-18T10:11:29Z\tINFO\tSetting up controller with builder\n2025-05-18T10:11:29Z\tINFO\tWorkloadController setup complete\n2025-05-18T10:11:29Z\tINFO\tWorkload controller created successfully\n2025-05-18T10:11:29Z\tINFO\tWorkload controller created successfully\n2025-05-18T10:11:29Z\tINFO\tSetting up Template controller with manager\n2025-05-18T10:11:29Z\tINFO\tSetting up template controller\n2025-05-18T10:11:29Z\tINFO\tTemplate controller setup completed\n2025-05-18T10:11:29Z\tINFO\tTemplate controller initialized successfully\n2025-05-18T10:11:29Z\tINFO\tStarting manager (this blocks until shutdown)\n2025-05-18T10:11:29Z\tINFO\tcontroller-runtime.metrics\tStarting metrics server\n2025-05-18T10:11:29Z\tINFO\tWorkload controller initialization completed successfully\n2025-05-18T10:11:29Z\tINFO\tstarting server\t{\"name\": \"health probe\", \"addr\": \"[::]:8088\"}\n2025-05-18T10:11:29Z\tINFO\tcontroller-runtime.metrics\tServing metrics server\t{\"bindAddress\": \":8080\", \"secure\": false}\n2025-05-18T10:11:30Z\tINFO\tWaiting for cache to fully sync before cleaning up namespaces\t{\"delay\": \"30s\"}\n2025-05-18T10:11:30Z\tINFO\tStarting EventSource\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"source\": \"kind source: *v1alpha1.ContainerMomDeployment\"}\n2025-05-18T10:11:30Z\tINFO\tStarting Controller\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\"}\n2025-05-18T10:11:30Z\tINFO\tStarting EventSource\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"source\": \"kind source: *v1alpha1.Template\"}\n2025-05-18T10:11:30Z\tINFO\tStarting Controller\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\"}\n2025-05-18T10:11:30Z\tINFO\tStarting workers\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"worker count\": 1}\n2025-05-18T10:11:30Z\tINFO\tStarting workers\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"worker count\": 1}\n2025-05-18T10:11:30Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:11:30Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:11:30Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:11:30Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:11:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c79de247-bb3c-4ce1-9a08-daef4a53fe7a\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:11:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c17fb3cf-a937-426c-ac93-6f26013c5c53\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:11:31Z\tINFO\tService does not exist yet, will create it\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\"}\n2025-05-18T10:11:32Z\tERROR\tFailed to create service with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): error when creating \\\"STDIN\\\": namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:33Z\tERROR\tFailed to create route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): error when creating \\\"STDIN\\\": namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:35Z\tERROR\tFailed to verify route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:327\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:35Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:11:35Z\tERROR\tfailed to update final deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"error\": \"status update conflict: Operation cannot be fulfilled on containermomdeployments.container.mom \\\"fooo\\\": the object has been modified; please apply your changes to the latest version and try again\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:535\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:35Z\tINFO\tStatus update conflict, will retry shortly\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"240b0465-2b73-4215-a9a9-740e74877e3f\", \"deployment\": \"fooo\"}\n2025-05-18T10:11:37Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:11:37Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:11:37Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:11:37Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:11:38Z\tINFO\tService does not exist yet, will create it\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\"}\n2025-05-18T10:11:39Z\tERROR\tFailed to create service with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): error when creating \\\"STDIN\\\": namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:40Z\tERROR\tFailed to create route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): error when creating \\\"STDIN\\\": namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:41Z\tERROR\tFailed to verify route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): namespaces \\\"wkl-fooo-fooo-24de0fb4\\\" not found\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:327\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:11:41Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:11:41Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"name\": \"fooo\", \"phase\": \"Succeeded\"}\n2025-05-18T10:11:41Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"cbc84c8d-c171-445e-b484-a41229d016b1\", \"deployment\": \"fooo\", \"phase\": \"Succeeded\", \"clusters\": \"\"}\n2025-05-18T10:11:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"01f8a7ab-794f-4a24-98a4-cdb25d4fb98a\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:11:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"72970aab-c61e-4345-83ce-e39a8739be20\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:11:50Z\tINFO\thandling readiness check\n2025-05-18T10:11:50Z\tINFO\thandling health check\n","commandType":4},{"text":"there were some errors again. the CMD didn't have any target clusters defined and then I added \"local\" but it tried to create the ns before adding it which it shouldn't\n\n2025-05-18T10:22:56Z\tINFO\tsetup\tAttempting to create operator\t{\"attempt\": 1, \"maxRetries\": 5}\n2025-05-18T10:22:56Z\tINFO\tsetup\tStarting HTTP server\t{\"port\": \":8082\"}\n2025-05-18T10:22:56Z\tINFO\tsetup\tStarting operator\n2025-05-18T10:22:56Z\tINFO\tinitializing operator\n2025-05-18T10:22:56Z\tINFO\tstarting HTTP server\t{\"addr\": \":8081\"}\n2025-05-18T10:22:56Z\tINFO\tHTTP server is ready\n2025-05-18T10:22:56Z\tINFO\t============ STARTING DEPLOYMENT CONTROLLER ============\n2025-05-18T10:22:56Z\tINFO\tStarting deployment controller\n2025-05-18T10:22:56Z\tINFO\tDeployment controller started\n2025-05-18T10:22:56Z\tINFO\tDeployment controller start function returned successfully\n2025-05-18T10:22:56Z\tINFO\t============ STARTING WORKLOAD CONTROLLER ============\n2025-05-18T10:22:56Z\tINFO\tWorkload controller goroutine has started\n2025-05-18T10:22:56Z\tINFO\tCreating controller manager\n2025-05-18T10:22:56Z\tINFO\tController manager created successfully\n2025-05-18T10:22:56Z\tINFO\tLoaded cluster configuration\t{\"cluster\": \"default\"}\n2025-05-18T10:22:56Z\tINFO\tLoaded all cluster configurations\t{\"clusters\": \"default\"}\n2025-05-18T10:22:56Z\tINFO\tSetting up workload controller with multi-cluster support\n2025-05-18T10:22:56Z\tINFO\tSetting up workload controller\n2025-05-18T10:22:56Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-18T10:22:56Z\tINFO\tInitializing WorkloadController with cluster configurations\t{\"configCount\": 1, \"clusterNames\": \"[default]\"}\n2025-05-18T10:22:56Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-18T10:22:56Z\tINFO\tAdded cluster client\t{\"region\": \"default\"}\n2025-05-18T10:22:56Z\tINFO\tSetting up controller with builder\n2025-05-18T10:22:56Z\tINFO\tWorkloadController setup complete\n2025-05-18T10:22:56Z\tINFO\tWorkload controller created successfully\n2025-05-18T10:22:56Z\tINFO\tWorkload controller created successfully\n2025-05-18T10:22:56Z\tINFO\tSetting up Template controller with manager\n2025-05-18T10:22:56Z\tINFO\tSetting up template controller\n2025-05-18T10:22:56Z\tINFO\tTemplate controller setup completed\n2025-05-18T10:22:56Z\tINFO\tTemplate controller initialized successfully\n2025-05-18T10:22:56Z\tINFO\tStarting manager (this blocks until shutdown)\n2025-05-18T10:22:56Z\tINFO\tcontroller-runtime.metrics\tStarting metrics server\n2025-05-18T10:22:56Z\tINFO\tWorkload controller initialization completed successfully\n2025-05-18T10:22:56Z\tINFO\tstarting server\t{\"name\": \"health probe\", \"addr\": \"[::]:8088\"}\n2025-05-18T10:22:56Z\tINFO\tcontroller-runtime.metrics\tServing metrics server\t{\"bindAddress\": \":8080\", \"secure\": false}\n2025-05-18T10:22:56Z\tINFO\tWaiting for cache to fully sync before cleaning up namespaces\t{\"delay\": \"30s\"}\n2025-05-18T10:22:56Z\tINFO\tStarting EventSource\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"source\": \"kind source: *v1alpha1.ContainerMomDeployment\"}\n2025-05-18T10:22:56Z\tINFO\tStarting EventSource\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"source\": \"kind source: *v1alpha1.Template\"}\n2025-05-18T10:22:56Z\tINFO\tStarting Controller\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\"}\n2025-05-18T10:22:56Z\tINFO\tStarting Controller\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\"}\n2025-05-18T10:22:56Z\tINFO\tStarting workers\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"worker count\": 1}\n2025-05-18T10:22:56Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"697de327-c3de-49cc-a482-eced0866a844\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:22:56Z\tINFO\tStarting workers\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"worker count\": 1}\n2025-05-18T10:22:56Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:22:56Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:22:56Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:22:56Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"be996260-f25b-4919-95a6-267c12e8892e\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:22:57Z\tINFO\tCreating namespace\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"deploymentName\": \"fooo\"}\n2025-05-18T10:22:57Z\tINFO\tSuccessfully created namespace\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:22:59Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:23:00Z\tINFO\tService does not exist yet, will create it\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"output\": \"Error from server (NotFound): services \\\"fooo\\\" not found\\n\"}\n2025-05-18T10:23:01Z\tINFO\tCreated service with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:23:02Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo created\\n\"}\n2025-05-18T10:23:04Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.nginx.container.mom\", \"actualHostname\": \"nginx.nginx.container.mom\", \"match\": true}\n2025-05-18T10:23:04Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:23:04Z\tERROR\tfailed to update final deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"error\": \"status update conflict: Operation cannot be fulfilled on containermomdeployments.container.mom \\\"fooo\\\": the object has been modified; please apply your changes to the latest version and try again\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:564\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:23:04Z\tINFO\tStatus update conflict, will retry shortly\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"fbe99bdd-a287-4bec-8e89-fb374ce10388\", \"deployment\": \"fooo\"}\n2025-05-18T10:23:06Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:23:06Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:23:06Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:06Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:06Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:23:07Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:23:08Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo unchanged\\n\"}\n2025-05-18T10:23:09Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.nginx.container.mom\", \"actualHostname\": \"nginx.nginx.container.mom\", \"match\": true}\n2025-05-18T10:23:09Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:23:09Z\tERROR\tfailed to update final deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"error\": \"status update conflict: Operation cannot be fulfilled on containermomdeployments.container.mom \\\"fooo\\\": the object has been modified; please apply your changes to the latest version and try again\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:564\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:23:09Z\tINFO\tStatus update conflict, will retry shortly\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"f4618e18-b6ba-47ab-8fc7-a8cda861b1a4\", \"deployment\": \"fooo\"}\n2025-05-18T10:23:11Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:23:11Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:23:11Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:11Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:11Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:23:12Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:23:14Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo unchanged\\n\"}\n2025-05-18T10:23:15Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.nginx.container.mom\", \"actualHostname\": \"nginx.nginx.container.mom\", \"match\": true}\n2025-05-18T10:23:15Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:23:15Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"name\": \"fooo\", \"phase\": \"Succeeded\"}\n2025-05-18T10:23:15Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"61e85cbf-e787-44aa-ad0a-9d5e69df90c2\", \"deployment\": \"fooo\", \"phase\": \"Succeeded\", \"clusters\": \"\"}\n2025-05-18T10:23:16Z\tINFO\thandling readiness check\n2025-05-18T10:23:16Z\tINFO\thandling health check\n2025-05-18T10:23:17Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"fd1cb009-92b5-430b-893a-100e8c2b6012\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:17Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d8237b51-2558-4fda-8d58-bab1bcbdc673\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:26Z\tINFO\thandling readiness check\n2025-05-18T10:23:26Z\tINFO\thandling health check\n2025-05-18T10:23:26Z\tINFO\tRunning cleanup of dangling wkl- namespaces with initialized cache\n2025-05-18T10:23:26Z\tINFO\tVerified CMD cache is synced, proceeding with cleanup\t{\"cmdCount\": 1}\n2025-05-18T10:23:26Z\tINFO\tStarting cleanup of dangling wkl- namespaces\n2025-05-18T10:23:26Z\tINFO\tFound ContainerMomDeployments\t{\"count\": 1}\n2025-05-18T10:23:26Z\tINFO\tProtected namespace from CMD annotation\t{\"cmd\": \"fooo\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:26Z\tINFO\tFound wkl- namespaces\t{\"count\": 2}\n2025-05-18T10:23:26Z\tINFO\tProtected namespaces\t{\"count\": 2}\n2025-05-18T10:23:26Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-argocd\"}\n2025-05-18T10:23:26Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:23:26Z\tINFO\tCompleted dangling namespace cleanup\t{\"found\": 2, \"protected\": 2, \"skipped\": 2, \"deleted\": 0}\n2025-05-18T10:23:26Z\tINFO\tCompleted dangling namespaces cleanup\n2025-05-18T10:23:27Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d77bfdf2-ce9c-43f1-9c08-df5c22c55be0\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:28Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"357c5063-f76c-4011-8a84-8ee833eff5b9\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:29Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c1336c62-29c5-45b2-a7ce-5bdbf6786714\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:31Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"a71c066e-40dc-43f2-aa13-1fd5da4749c6\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:31Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"a183d7d3-2476-4fe3-8383-9aab4dcce45b\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:36Z\tINFO\thandling health check\n2025-05-18T10:23:36Z\tINFO\thandling readiness check\n2025-05-18T10:23:37Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"647c5477-d4f2-4eb4-8ca7-3a3cfda136da\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:37Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"8be34c6e-17d6-4d54-a449-8aca6d81134a\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:46Z\tINFO\thandling health check\n2025-05-18T10:23:46Z\tINFO\thandling readiness check\n2025-05-18T10:23:47Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"ab36b99b-4e83-424a-ac77-9fb17d738e27\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:47Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d546d51f-44a1-48c4-94e7-c2fff5200e19\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:56Z\tINFO\thandling readiness check\n2025-05-18T10:23:56Z\tINFO\thandling health check\n2025-05-18T10:23:57Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"e48c6a0d-b0fb-4ab6-998f-9de33922cc9c\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:23:57Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d4a9f374-be7e-4384-b182-320a0d94b1c8\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:05Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-18T10:24:05Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-18T10:24:05Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:24:05Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-18T10:24:05Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-18T10:24:06Z\tINFO\thandling readiness check\n2025-05-18T10:24:06Z\tINFO\thandling health check\n2025-05-18T10:24:07Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:24:07Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3362c1ca-78fd-447a-8298-b2fe16f28418\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"901624e0-ebf5-4f00-a8dc-f3802e391eee\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"35c52691-9279-4d1d-b319-d4a8634fd757\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:09Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo unchanged\\n\"}\n2025-05-18T10:24:10Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.nginx.container.mom\", \"actualHostname\": \"nginx.nginx.container.mom\", \"match\": true}\n2025-05-18T10:24:10Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-18T10:24:10Z\tINFO\tUsing operator's client for local cluster deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"clusterRef\": \"local\", \"namespace\": \"container-mom-system\"}\n2025-05-18T10:24:10Z\tINFO\tNamespace not in cache, assuming deployment doesn't exist\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:24:10Z\tINFO\tDeployment not found, creating\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:24:10Z\tINFO\tCreated deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-18T10:24:10Z\tERROR\tFailed to create or update service\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"error\": \"failed to check service: unable to get: wkl-fooo-fooo-24de0fb4/fooo because of unknown namespace for the cache\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n\t/app/pkg/controllers/workload/deployment.go:365\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:410\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T10:24:10Z\tINFO\tSuccessfully deployed to local cluster using operator client\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"namespace\": \"container-mom-system\"}\n2025-05-18T10:24:10Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"name\": \"fooo\", \"phase\": \"Succeeded\"}\n2025-05-18T10:24:10Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"4032509d-921c-4130-a729-5d756b412e51\", \"deployment\": \"fooo\", \"phase\": \"Succeeded\", \"clusters\": \"local\"}\n2025-05-18T10:24:16Z\tINFO\thandling readiness check\n2025-05-18T10:24:16Z\tINFO\thandling health check\n2025-05-18T10:24:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"7942c62c-ce23-467f-9da8-ea5b8b0e82c0\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c3e46003-50af-40c0-8ff5-dc8a1bab0115\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:26Z\tINFO\thandling readiness check\n2025-05-18T10:24:26Z\tINFO\thandling health check\n2025-05-18T10:24:28Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"4613feda-e1e0-4f12-8dea-5f387e23abac\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:28Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"410cef01-ceec-4bb5-924c-a814a5b03830\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:36Z\tINFO\thandling readiness check\n2025-05-18T10:24:36Z\tINFO\thandling health check\n2025-05-18T10:24:38Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"9006cb8d-c016-45c7-bfde-6ebd18f7fc94\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-18T10:24:38Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c9a4bfb7-5054-495a-a891-e67772c618ed\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n","commandType":4},{"text":"does the operator also add status info to the CMD warning the user that no target cluster is defined?","commandType":4},{"text":"@portal @portal-backend \n\ncreating a wordpress deployment through the portal fails.\n\nthis is the log from ther backend\n\nGetting template: wordpress\nCreating deployment from template: wordpress with params: {\n  SITE_NAME: 'My WordPress Site',\n  ADMIN_EMAIL: 'hi@josie.lol',\n  ADMIN_PASSWORD: '[auto-generated]',\n  MYSQL_ROOT_PASSWORD: '[auto-generated]',\n  MYSQL_DATABASE: 'wordpress',\n  MYSQL_USER: 'wordpress',\n  MYSQL_PASSWORD: '[auto-generated]',\n  DOMAIN_NAME: 'caring-cuddles-girlboss.container.mom'\n}\nGetting template: wordpress\nProcessed template deployment data: {\n  name: 'wordpress-site',\n  sourceType: 'container',\n  containerImage: 'bitnami/wordpress:latest',\n  regions: [ 'local' ],\n  domain: '${DOMAIN_NAME}',\n  subdomain: 'caring-cuddles-girlboss',\n  useWildcard: false,\n  env: [\n    { key: 'WORDPRESS_DATABASE_HOST', value: 'mariadb:3306' },\n    { key: 'WORDPRESS_DATABASE_PORT_NUMBER', value: '3306' },\n    { key: 'WORDPRESS_DATABASE_NAME', value: 'wordpress' },\n    { key: 'WORDPRESS_DATABASE_USER', value: 'wordpress' },\n    { key: 'WORDPRESS_DATABASE_PASSWORD', value: '[auto-generated]' },\n    { key: 'WORDPRESS_USERNAME', value: 'admin' },\n    { key: 'WORDPRESS_PASSWORD', value: '[auto-generated]' },\n    { key: 'WORDPRESS_EMAIL', value: 'hi@josie.lol' },\n    { key: 'WORDPRESS_BLOG_NAME', value: 'My WordPress Site' },\n    { key: 'ALLOW_EMPTY_PASSWORD', value: 'yes' },\n    { key: 'WORDPRESS_SKIP_BOOTSTRAP', value: 'no' },\n    { key: 'WORDPRESS_TABLE_PREFIX', value: 'wp_' },\n    {\n      key: 'WORDPRESS_CONFIG_EXTRA',\n      value: \"define('WP_HOME','https://caring-cuddles-girlboss.container.mom'); define('WP_SITEURL','https://caring-cuddles-girlboss.container.mom');\"\n    },\n    { key: 'SITE_NAME', value: 'My WordPress Site' },\n    { key: 'ADMIN_EMAIL', value: 'hi@josie.lol' },\n    { key: 'ADMIN_PASSWORD', value: '[auto-generated]' },\n    { key: 'MYSQL_ROOT_PASSWORD', value: '[auto-generated]' },\n    { key: 'MYSQL_DATABASE', value: 'wordpress' },\n    { key: 'MYSQL_USER', value: 'wordpress' },\n    { key: 'MYSQL_PASSWORD', value: '[auto-generated]' },\n    {\n      key: 'DOMAIN_NAME',\n      value: 'caring-cuddles-girlboss.container.mom'\n    }\n  ],\n  resources: { cpu: '500m', memory: '512Mi' },\n  template: { name: 'wordpress', id: 'wordpress' }\n}\nCreating deployment for user: *\nError creating deployment: HttpError: HTTP request failed\n    at Request._callback (/app/node_modules/@kubernetes/client-node/dist/gen/api/customObjectsApi.js:268:36)\n    at self.callback (/app/node_modules/request/request.js:185:22)\n    at Request.emit (node:events:517:28)\n    at Request.<anonymous> (/app/node_modules/request/request.js:1154:10)\n    at Request.emit (node:events:517:28)\n    at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1076:12)\n    at Object.onceWrapper (node:events:631:28)\n    at IncomingMessage.emit (node:events:529:35)\n    at endReadableNT (node:internal/streams/readable:1400:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {\n  response: <ref *1> IncomingMessage {\n    _readableState: ReadableState {\n      state: 325654,\n      highWaterMark: 16384,\n      buffer: BufferList { head: null, tail: null, length: 0 },\n      length: 0,\n      pipes: [],\n      flowing: true,\n      errored: null,\n      defaultEncoding: 'utf8',\n      awaitDrainWriters: null,\n      decoder: null,\n      encoding: null,\n      [Symbol(kPaused)]: false\n    },\n    _events: [Object: null prototype] {\n      end: [Array],\n      close: [Array],\n      data: [Function (anonymous)],\n      error: [Function (anonymous)]\n    },\n    _eventsCount: 4,\n    _maxListeners: undefined,\n    socket: TLSSocket {\n      _tlsOptions: [Object],\n      _secureEstablished: true,\n      _securePending: false,\n      _newSessionPending: false,\n      _controlReleased: true,\n      secureConnecting: false,\n      _SNICallback: null,\n      servername: false,\n      alpnProtocol: false,\n      authorized: true,\n      authorizationError: null,\n      encrypted: true,\n      _events: [Object: null prototype],\n      _eventsCount: 10,\n      connecting: false,\n      _hadError: false,\n      _parent: null,\n      _host: null,\n      _closeAfterHandlingError: false,\n      _readableState: [ReadableState],\n      _maxListeners: undefined,\n      _writableState: [WritableState],\n      allowHalfOpen: false,\n      _sockname: null,\n      _pendingData: null,\n      _pendingEncoding: '',\n      server: undefined,\n      _server: null,\n      ssl: [TLSWrap],\n      _requestCert: true,\n      _rejectUnauthorized: true,\n      parser: null,\n      _httpMessage: [ClientRequest],\n      [Symbol(alpncallback)]: null,\n      [Symbol(res)]: [TLSWrap],\n      [Symbol(verified)]: true,\n      [Symbol(pendingSession)]: null,\n      [Symbol(async_id_symbol)]: 20944,\n      [Symbol(kHandle)]: [TLSWrap],\n      [Symbol(lastWriteQueueSize)]: 0,\n      [Symbol(timeout)]: null,\n      [Symbol(kBuffer)]: null,\n      [Symbol(kBufferCb)]: null,\n      [Symbol(kBufferGen)]: null,\n      [Symbol(kCapture)]: false,\n      [Symbol(kSetNoDelay)]: false,\n      [Symbol(kSetKeepAlive)]: false,\n      [Symbol(kSetKeepAliveInitialDelay)]: 0,\n      [Symbol(kBytesRead)]: 0,\n      [Symbol(kBytesWritten)]: 0,\n      [Symbol(connect-options)]: [Object]\n    },\n    httpVersionMajor: 1,\n    httpVersionMinor: 1,\n    httpVersion: '1.1',\n    complete: true,\n    rawHeaders: [\n      'Audit-Id',\n      '12555002-7ef1-4578-9492-4f5c43618fb3',\n      'Cache-Control',\n      'no-cache, private',\n      'Content-Type',\n      'application/json',\n      'Strict-Transport-Security',\n      'max-age=31536000; includeSubDomains; preload',\n      'X-Kubernetes-Pf-Flowschema-Uid',\n      '2a6af4b9-2134-41cf-8169-83701a81eeab',\n      'X-Kubernetes-Pf-Prioritylevel-Uid',\n      '777f115e-3610-4cd7-a1a1-b36da5585a10',\n      'Date',\n      'Sun, 18 May 2025 10:47:44 GMT',\n      'Content-Length',\n      '952',\n      'Connection',\n      'close'\n    ],\n    rawTrailers: [],\n    joinDuplicateHeaders: undefined,\n    aborted: false,\n    upgrade: false,\n    url: '',\n    method: null,\n    statusCode: 422,\n    statusMessage: 'Unprocessable Entity',\n    client: TLSSocket {\n      _tlsOptions: [Object],\n      _secureEstablished: true,\n      _securePending: false,\n      _newSessionPending: false,\n      _controlReleased: true,\n      secureConnecting: false,\n      _SNICallback: null,\n      servername: false,\n      alpnProtocol: false,\n      authorized: true,\n      authorizationError: null,\n      encrypted: true,\n      _events: [Object: null prototype],\n      _eventsCount: 10,\n      connecting: false,\n      _hadError: false,\n      _parent: null,\n      _host: null,\n      _closeAfterHandlingError: false,\n      _readableState: [ReadableState],\n      _maxListeners: undefined,\n      _writableState: [WritableState],\n      allowHalfOpen: false,\n      _sockname: null,\n      _pendingData: null,\n      _pendingEncoding: '',\n      server: undefined,\n      _server: null,\n      ssl: [TLSWrap],\n      _requestCert: true,\n      _rejectUnauthorized: true,\n      parser: null,\n      _httpMessage: [ClientRequest],\n      [Symbol(alpncallback)]: null,\n      [Symbol(res)]: [TLSWrap],\n      [Symbol(verified)]: true,\n      [Symbol(pendingSession)]: null,\n      [Symbol(async_id_symbol)]: 20944,\n      [Symbol(kHandle)]: [TLSWrap],\n      [Symbol(lastWriteQueueSize)]: 0,\n      [Symbol(timeout)]: null,\n      [Symbol(kBuffer)]: null,\n      [Symbol(kBufferCb)]: null,\n      [Symbol(kBufferGen)]: null,\n      [Symbol(kCapture)]: false,\n      [Symbol(kSetNoDelay)]: false,\n      [Symbol(kSetKeepAlive)]: false,\n      [Symbol(kSetKeepAliveInitialDelay)]: 0,\n      [Symbol(kBytesRead)]: 0,\n      [Symbol(kBytesWritten)]: 0,\n      [Symbol(connect-options)]: [Object]\n    },\n    _consuming: true,\n    _dumped: false,\n    req: ClientRequest {\n      _events: [Object: null prototype],\n      _eventsCount: 5,\n      _maxListeners: undefined,\n      outputData: [],\n      outputSize: 0,\n      writable: true,\n      destroyed: false,\n      _last: true,\n      chunkedEncoding: false,\n      shouldKeepAlive: false,\n      maxRequestsOnConnectionReached: false,\n      _defaultKeepAlive: true,\n      useChunkedEncodingByDefault: true,\n      sendDate: false,\n      _removedConnection: false,\n      _removedContLen: false,\n      _removedTE: false,\n      strictContentLength: false,\n      _contentLength: 1628,\n      _hasBody: true,\n      _trailer: '',\n      finished: true,\n      _headerSent: true,\n      _closed: false,\n      socket: [TLSSocket],\n      _header: 'POST /apis/container.mom/v1alpha1/namespaces/container-mom-system/containermomdeployments HTTP/1.1\\r\\n' +\n        'Accept: application/json\\r\\n' +\n        'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImU4UUlvbml1bGtzUmJMbkNOTkRuTVVUbWhnZWxjbTZwZDNDZGp6ZklpdzQifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTc3OTEwMDY4MSwiaWF0IjoxNzQ3NTY0NjgxLCJpc3MiOiJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiLCJqdGkiOiIwZDA5ZGE3NS0zMjk0LTRiNmUtYWQwMS1iY2Q1OTEwZjBlMzQiLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImNvbnRhaW5lci1tb20tcG9ydGFsIiwibm9kZSI6eyJuYW1lIjoibWFzdGVyLTAiLCJ1aWQiOiJmNDg3NGUzNy04ZGViLTQ3ZmUtOGQwZC0zMjEyMzY5MzVmMjUifSwicG9kIjp7Im5hbWUiOiJjb250YWluZXItbW9tLXBvcnRhbC1iYWNrZW5kLTZkY2Y4N2M3OWMtODQ2d3oiLCJ1aWQiOiIxMmM1ZmJlOS1lMzI1LTQ2OWItYmU3Yy05YTZiMDY0ODk1YmMifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImNvbnRhaW5lci1tb20iLCJ1aWQiOiI5ZTYzNmMxYi1jYWI5LTQ3MzQtYjU2Yy0xYWM5YjU1YjA2MmYifSwid2FybmFmdGVyIjoxNzQ3NTY4Mjg4fSwibmJmIjoxNzQ3NTY0NjgxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6Y29udGFpbmVyLW1vbS1wb3J0YWw6Y29udGFpbmVyLW1vbSJ9.Zo2SpEAmzEDy6gN-McN0p2YKkMnawzf7QSZdfC1VJcz2Xr_Fbu1xHM1JN0LvDab3NOqDGFFqUkuFZQ76uPk7nJBMvzvSiiCPkN2WrRkIeddpiht7zKwFY1cDfpeZMJu78mpqkb4BEGOUsULmcLKQTbhpl7jU-lI4CR7atylMx-ZzVZUgJEe21hCBb-vc1kG0naGRXeOAQ112q3F3I0EQihuBIp1CSORZAQsXA4SO1B0pmH3cyZSUBehgUsid_ZNuqndKErC_71diLr_amZ25qvznjyjEwL76eDFvquCrTBTGFanLOYf1EHmMHDiOO9JJk9WNjcrUvZDjR923OSV6xSiXIHa2Bhpl_QkTh5mBYjwozkKYojcUlwwBRBmqq1Ab8IdKC7ArCogUMIF8tFXxt4KhaWjE3O7yVEht_Q4fIG86bjpHtxuPFfb-QC_CIxgo1fzC6bcZZWG2-SBlwaHWTOpD5qg7pZpRTGb8G5uK8i_vJCkHeOERB0CUfKvGO8011GYRnLq7pJ4wkgMmO07B35QoIWdOMQB_dS3IXK3JjdlmiLf34hs_LNYClafqO8eCOAkEJ_si85es3GtSZQlrg_KC06nGfG3F5UdEVjdgLz-32mWvnoFFo3J2J3JS2mzg_UDh-LvVjVQKQJO4Tq5d6TcTbWmO3sagqafCZV7afSI\\r\\n' +\n        'host: 172.30.0.1\\r\\n' +\n        'content-type: application/json\\r\\n' +\n        'content-length: 1628\\r\\n' +\n        'Connection: close\\r\\n' +\n        '\\r\\n',\n      _keepAliveTimeout: 0,\n      _onPendingData: [Function: nop],\n      agent: [Agent],\n      socketPath: undefined,\n      method: 'POST',\n      maxHeaderSize: undefined,\n      insecureHTTPParser: undefined,\n      joinDuplicateHeaders: undefined,\n      path: '/apis/container.mom/v1alpha1/namespaces/container-mom-system/containermomdeployments',\n      _ended: true,\n      res: [Circular *1],\n      aborted: false,\n      timeoutCb: null,\n      upgradeOrConnect: false,\n      parser: null,\n      maxHeadersCount: null,\n      reusedSocket: false,\n      host: '172.30.0.1',\n      protocol: 'https:',\n      [Symbol(kCapture)]: false,\n      [Symbol(kBytesWritten)]: 0,\n      [Symbol(kNeedDrain)]: false,\n      [Symbol(corked)]: 0,\n      [Symbol(kOutHeaders)]: [Object: null prototype],\n      [Symbol(errored)]: null,\n      [Symbol(kHighWaterMark)]: 16384,\n      [Symbol(kRejectNonStandardBodyWrites)]: false,\n      [Symbol(kUniqueHeaders)]: null\n    },\n    request: Request {\n      _events: [Object: null prototype],\n      _eventsCount: 5,\n      _maxListeners: undefined,\n      method: 'POST',\n      headers: [Object],\n      uri: [Url],\n      useQuerystring: false,\n      body: '{\"apiVersion\":\"container.mom/v1alpha1\",\"kind\":\"ContainerMomDeployment\",\"metadata\":{\"name\":\"wordpress-site\",\"labels\":{\"createdBy\":\"*\"}},\"spec\":{\"source\":{\"image\":\"bitnami/wordpress:latest\"},\"clusters\":[\"local\"],\"domain\":{\"domainName\":\"${DOMAIN_NAME}\",\"prefix\":\"caring-cuddles-girlboss\",\"useWildcard\":false,\"tls\":{\"autoCert\":true}},\"resources\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"env\":[{\"name\":\"WORDPRESS_DATABASE_HOST\",\"value\":\"mariadb:3306\"},{\"name\":\"WORDPRESS_DATABASE_PORT_NUMBER\",\"value\":\"3306\"},{\"name\":\"WORDPRESS_DATABASE_NAME\",\"value\":\"wordpress\"},{\"name\":\"WORDPRESS_DATABASE_USER\",\"value\":\"wordpress\"},{\"name\":\"WORDPRESS_DATABASE_PASSWORD\",\"value\":\"[auto-generated]\"},{\"name\":\"WORDPRESS_USERNAME\",\"value\":\"admin\"},{\"name\":\"WORDPRESS_PASSWORD\",\"value\":\"[auto-generated]\"},{\"name\":\"WORDPRESS_EMAIL\",\"value\":\"hi@josie.lol\"},{\"name\":\"WORDPRESS_BLOG_NAME\",\"value\":\"My WordPress Site\"},{\"name\":\"ALLOW_EMPTY_PASSWORD\",\"value\":\"yes\"},{\"name\":\"WORDPRESS_SKIP_BOOTSTRAP\",\"value\":\"no\"},{\"name\":\"WORDPRESS_TABLE_PREFIX\",\"value\":\"wp_\"},{\"name\":\"WORDPRESS_CONFIG_EXTRA\",\"value\":\"define(\\'WP_HOME\\',\\'https://caring-cuddles-girlboss.container.mom\\'); define(\\'WP_SITEURL\\',\\'https://caring-cuddles-girlboss.container.mom\\');\"},{\"name\":\"SITE_NAME\",\"value\":\"My WordPress Site\"},{\"name\":\"ADMIN_EMAIL\",\"value\":\"hi@josie.lol\"},{\"name\":\"ADMIN_PASSWORD\",\"value\":\"[auto-generated]\"},{\"name\":\"MYSQL_ROOT_PASSWORD\",\"value\":\"[auto-generated]\"},{\"name\":\"MYSQL_DATABASE\",\"value\":\"wordpress\"},{\"name\":\"MYSQL_USER\",\"value\":\"wordpress\"},{\"name\":\"MYSQL_PASSWORD\",\"value\":\"[auto-generated]\"},{\"name\":\"DOMAIN_NAME\",\"value\":\"caring-cuddles-girlboss.container.mom\"}]}}',\n      ca: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 4e 20 43 45 52 54 49 46 49 43 41 54 45 2d 2d 2d 2d 2d 0a 4d 49 49 44 4d 6a 43 43 41 68 71 67 41 77 49 42 41 67 49 49 43 4f ... 8528 more bytes>,\n      callback: [Function (anonymous)],\n      readable: true,\n      writable: true,\n      explicitMethod: true,\n      _qs: [Querystring],\n      _auth: [Auth],\n      _oauth: [OAuth],\n      _multipart: [Multipart],\n      _redirect: [Redirect],\n      _tunnel: [Tunnel],\n      setHeader: [Function (anonymous)],\n      hasHeader: [Function (anonymous)],\n      getHeader: [Function (anonymous)],\n      removeHeader: [Function (anonymous)],\n      localAddress: undefined,\n      pool: [Object],\n      dests: [],\n      __isRequestRequest: true,\n      _callback: [Function (anonymous)],\n      proxy: null,\n      tunnel: true,\n      setHost: true,\n      originalCookieHeader: undefined,\n      _disableCookies: true,\n      _jar: undefined,\n      port: '443',\n      host: '172.30.0.1',\n      path: '/apis/container.mom/v1alpha1/namespaces/container-mom-system/containermomdeployments',\n      _json: true,\n      httpModule: [Object],\n      agentClass: [Function: Agent],\n      agent: [Agent],\n      _started: true,\n      href: 'https://172.30.0.1:443/apis/container.mom/v1alpha1/namespaces/container-mom-system/containermomdeployments',\n      req: [ClientRequest],\n      ntick: true,\n      response: [Circular *1],\n      originalHost: '172.30.0.1',\n      originalHostHeaderName: 'host',\n      responseContent: [Circular *1],\n      _destdata: true,\n      _ended: true,\n      _callbackCalled: true,\n      [Symbol(kCapture)]: false\n    },\n    toJSON: [Function: responseToJSON],\n    caseless: Caseless { dict: [Object] },\n    body: {\n      kind: 'Status',\n      apiVersion: 'v1',\n      metadata: {},\n      status: 'Failure',\n      message: `ContainerMomDeployment.container.mom \"wordpress-site\" is invalid: metadata.labels: Invalid value: \"*\": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')`,\n      reason: 'Invalid',\n      details: [Object],\n      code: 422\n    },\n    [Symbol(kCapture)]: false,\n    [Symbol(kHeaders)]: {\n      'audit-id': '12555002-7ef1-4578-9492-4f5c43618fb3',\n      'cache-control': 'no-cache, private',\n      'content-type': 'application/json',\n      'strict-transport-security': 'max-age=31536000; includeSubDomains; preload',\n      'x-kubernetes-pf-flowschema-uid': '2a6af4b9-2134-41cf-8169-83701a81eeab',\n      'x-kubernetes-pf-prioritylevel-uid': '777f115e-3610-4cd7-a1a1-b36da5585a10',\n      date: 'Sun, 18 May 2025 10:47:44 GMT',\n      'content-length': '952',\n      connection: 'close'\n    },\n    [Symbol(kHeadersCount)]: 18,\n    [Symbol(kTrailers)]: null,\n    [Symbol(kTrailersCount)]: 0\n  },\n  body: {\n    kind: 'Status',\n    apiVersion: 'v1',\n    metadata: {},\n    status: 'Failure',\n    message: `ContainerMomDeployment.container.mom \"wordpress-site\" is invalid: metadata.labels: Invalid value: \"*\": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')`,\n    reason: 'Invalid',\n    details: {\n      name: 'wordpress-site',\n      group: 'container.mom',\n      kind: 'ContainerMomDeployment',\n      causes: [Array]\n    },\n    code: 422\n  },\n  statusCode: 422\n}\nError creating deployment from template: Error: Failed to create deployment: HTTP request failed\n    at KubernetesClient.createDeployment (/app/services/k8sClient.js:149:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async KubernetesClient.createDeploymentFromTemplate (/app/services/k8sClient.js:319:14)\n    at async /app/routes/templates.js:76:24\nError creating deployment from template: Error: Failed to create deployment from template: Failed to create deployment: HTTP request failed\n    at KubernetesClient.createDeploymentFromTemplate (/app/services/k8sClient.js:322:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async /app/routes/templates.js:76:24","commandType":4},{"text":"status:\n  conditions:\n    - message: 'failed in local cluster: failed to create namespace wkl-wordpress-site-wordpress-site-da19fe71: exec: \"kubectl\": executable file not found in $PATH'\n      reason: ReconciliationErrors\n      status: 'True'\n      type: Failed","commandType":4},{"text":"it looks like CMD env vars aren't passed to the container. \n\nmaybe we should just wrap all the env vars into a secret managed by the operator and not write any of them into the CMD directly","commandType":4},{"text":"2025-05-18T11:56:13Z ERROR Failed to create route with yaml {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"1ff0ee47-c950-478a-8530-2fc2438deeb7\", \"namespace\": \"wkl-wordpress-site-wordpress-site-da19fe71\", \"name\": \"wordpress-site\", \"output\": \"The Route \\\"wordpress-site\\\" is invalid: \\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": host must conform to DNS 952 subdomain conventions\\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:83\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:423\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:296\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n","commandType":4},{"text":"I think we're creating the secret in the wrong ns\n\n2025-05-18T12:02:29Z ERROR Failed to create secret for environment variables {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"b148415d-8c8b-4850-bab0-49ffb6a73091\", \"namespace\": \"wkl-wordpress-site-wordpress-site-da19fe71\", \"name\": \"wordpress-site-env\", \"output\": \"Error from server (BadRequest): error when creating \\\"STDIN\\\": Secret in version \\\"v1\\\" cannot be handled as a Secret: json: cannot unmarshal array into Go struct field Secret.stringData of type string\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:164\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"2025-05-18T12:18:45Z ERROR Failed to create route with yaml {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"c2d63afd-1e37-48cb-a2ea-867df32cb683\", \"namespace\": \"wkl-wordpress-site-wordpress-site-da19fe71\", \"name\": \"wordpress-site\", \"output\": \"The Route \\\"wordpress-site\\\" is invalid: \\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": host must conform to DNS 952 subdomain conventions\\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')\\n\", \"error\": \"exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:83\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:438\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:311\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T12:18:45Z ERROR Failed to create route {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"c2d63afd-1e37-48cb-a2ea-867df32cb683\", \"namespace\": \"wkl-wordpress-site-wordpress-site-da19fe71\", \"name\": \"wordpress-site\", \"error\": \"failed to create route: exit status 1, output: The Route \\\"wordpress-site\\\" is invalid: \\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": host must conform to DNS 952 subdomain conventions\\n* spec.host: Invalid value: \\\"loving-hugs-champion.${DOMAIN_NAME}\\\": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')\\n\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"maybe we should just fix it in the portal backend @portal-backend ","commandType":4},{"text":"the operator needs to use cloudflare to add a cname for the domain pointing at the deftault router at router-default.apps.hub.euw.container.mom.","commandType":4},{"text":"the operator should do this not the portal","commandType":4},{"text":"we also need to remove the cnames if the ns is deleted","commandType":4},{"text":"025-05-18T12:57:40Z ERROR Failed to ensure Cloudflare CNAME record {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"dde2c0b3-24a8-4661-9640-8ec293c94358\", \"hostname\": \"loving-hugs-champion.loving-hugs-champion.container.mom\", \"error\": \"failed to check existing DNS records: unexpected status code: 400, body: {\\\"success\\\":false,\\\"errors\\\":[{\\\"code\\\":7003,\\\"message\\\":\\\"Could not route to \\\\/zones\\\\/${CLOUDFLARE_ZONE_ID}\\\\/dns_records, perhaps your object identifier is invalid?\\\"},{\\\"code\\\":7000,\\\"message\\\":\\\"No route for that URI\\\"}],\\\"messages\\\":[],\\\"result\\\":null}\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:222\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:503\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"2025-05-18T13:12:09Z ERROR cloudflare CLOUDFLARE_ZONE_ID contains unexpanded variable {\"zoneID\": \"${CLOUDFLARE_ZONE_ID}\", \"error\": \"invalid zone ID\"}\ngithub.com/pfeifferj/container-mom-go/pkg/cloudflare.NewClient\n/app/pkg/cloudflare/client.go:82\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:215\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T13:12:09Z ERROR Failed to create Cloudflare client, skipping DNS update {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"8ee8f022-f3e0-4f3f-8525-8438b01af2e3\", \"hostname\": \"nginx.container.mom\", \"error\": \"CLOUDFLARE_ZONE_ID contains unexpanded variable: ${CLOUDFLARE_ZONE_ID}\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:217\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"update @manifests to fix the var","commandType":4},{"text":"the secret is created in @ansible ","commandType":4},{"text":"how do I rerun the playbook to create the secrets?\n\nalso pls check if the restructuring of the cloudflare secrets could cause any errors?","commandType":4},{"text":"I think cert manager expect the secret in vault to be global.cloudflare instead of global.cloudflare.api_key","commandType":4},{"text":"2025-05-18T14:43:34Z ERROR Failed to create Cloudflare client, skipping DNS update {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"311df162-432e-4915-a9cd-5b3b91097f02\", \"hostname\": \"loving-hugs-champion.container.mom\", \"error\": \"CLOUDFLARE_ZONE_ID contains unexpanded variable: ${CLOUDFLARE_ZONE_ID}\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:217\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"2025-05-18T14:57:14Z\tERROR\tcloudflare\tCLOUDFLARE_ZONE_ID contains an unexpanded variable - check your secret and deployment\t{\"zoneID\": \"${CLOUDFLARE_ZONE_ID}\", \"error\": \"unexpanded environment variable\"}\ngithub.com/pfeifferj/container-mom-go/pkg/cloudflare.NewClient\n\t/app/pkg/cloudflare/client.go:86\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n\t/app/pkg/controllers/workload/routes.go:215\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n\t/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n\t/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T14:57:14Z\tERROR\tFailed to create Cloudflare client, skipping DNS update\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"e138ffec-d1c1-4e0c-a84f-c4a81cd10d30\", \"hostname\": \"nginx.container.mom\", \"error\": \"CLOUDFLARE_ZONE_ID contains unexpanded variable: ${CLOUDFLARE_ZONE_ID}\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n\t/app/pkg/controllers/workload/routes.go:217\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n\t/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n\t/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n\t/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"from vault\n---\nglobal:\n  cloudflare:\n    zone_id: \"5485880624d63a6fdf003b8e994f0dd8\"\n    \n","commandType":4},{"text":"use oc to check if the secret was created correctly and if not fix the playbook","commandType":4},{"text":"\nTASK [namespace_setup : Create cloudflare-secret in cert-manager namespace] ******************************************************************************************************************************************************************************************************************\nfatal: [localhost]: FAILED! => {\"changed\": false, \"msg\": \"Failed to patch object: b'{\\\"kind\\\":\\\"Status\\\",\\\"apiVersion\\\":\\\"v1\\\",\\\"metadata\\\":{},\\\"status\\\":\\\"Failure\\\",\\\"message\\\":\\\" \\\\\\\\\\\"\\\\\\\\\\\" is invalid: patch: Invalid value: \\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"dkFiODR0TlJtNUMtU19yN0VQWDhjZHpJU0lSLUtfYjhhN0doNTZ1QQ==\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"kind\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"metadata\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"creationTimestamp\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"managedFields\\\\\\\\\\\\\\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\\\\\\\\\\\\\\"manager\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"OpenAPI-Generator\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"operation\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Update\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsType\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"FieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\".\\\\\\\\\\\\\\\\\\\\\\\\\\\":{},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:type\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}}}],\\\\\\\\\\\\\\\\\\\\\\\\\\\"name\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cloudflare-secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"namespace\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cert-manager\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"resourceVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2162936\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"uid\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"49148200-eee7-45f5-a908-af32a1245a81\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"stringData\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api_token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"vAb84tNRm5C-S_r7EPX8cdzISIR-K_b8a7Gh56uA\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"router_url\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"router-default.apps.hub.euw.container.mom\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"zone_id\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"5485880624d63a6fdf003b8e994f0dd8\\\\\\\\\\\\\\\\\\\\\\\\\\\"}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"type\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Opaque\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\": json: cannot unmarshal object into Go struct field Secret.stringData of type string\\\",\\\"reason\\\":\\\"Invalid\\\",\\\"details\\\":{\\\"causes\\\":[{\\\"reason\\\":\\\"FieldValueInvalid\\\",\\\"message\\\":\\\"Invalid value: \\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"dkFiODR0TlJtNUMtU19yN0VQWDhjZHpJU0lSLUtfYjhhN0doNTZ1QQ==\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"kind\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"metadata\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"creationTimestamp\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"managedFields\\\\\\\\\\\\\\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\\\\\\\\\\\\\\"manager\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"OpenAPI-Generator\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"operation\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Update\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsType\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"FieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\".\\\\\\\\\\\\\\\\\\\\\\\\\\\":{},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:type\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}}}],\\\\\\\\\\\\\\\\\\\\\\\\\\\"name\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cloudflare-secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"namespace\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cert-manager\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"resourceVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2162936\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"uid\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"49148200-eee7-45f5-a908-af32a1245a81\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"stringData\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api_token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"vAb84tNRm5C-S_r7EPX8cdzISIR-K_b8a7Gh56uA\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"router_url\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"router-default.apps.hub.euw.container.mom\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"zone_id\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"5485880624d63a6fdf003b8e994f0dd8\\\\\\\\\\\\\\\\\\\\\\\\\\\"}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"type\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Opaque\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\": json: cannot unmarshal object into Go struct field Secret.stringData of type string\\\",\\\"field\\\":\\\"patch\\\"}]},\\\"code\\\":422}\\\\n'\", \"reason\": \"Unprocessable Entity\"}\n\nPLAY RECAP ***********************************************************************************************************************************************************************************************************************************************************************************\nlocalhost                  : ok=24   changed=5    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0\n","commandType":4},{"text":"TASK [cert_manager_deployment : Create cloudflare-secret in cert-manager namespace] **********************************************************************************************************************************************************************************************************\nfatal: [localhost]: FAILED! => {\"changed\": false, \"msg\": \"Failed to patch object: b'{\\\"kind\\\":\\\"Status\\\",\\\"apiVersion\\\":\\\"v1\\\",\\\"metadata\\\":{},\\\"status\\\":\\\"Failure\\\",\\\"message\\\":\\\" \\\\\\\\\\\"\\\\\\\\\\\" is invalid: patch: Invalid value: \\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"dkFiODR0TlJtNUMtU19yN0VQWDhjZHpJU0lSLUtfYjhhN0doNTZ1QQ==\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"kind\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"metadata\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"creationTimestamp\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"managedFields\\\\\\\\\\\\\\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\\\\\\\\\\\\\\"manager\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"OpenAPI-Generator\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"operation\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Update\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsType\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"FieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\".\\\\\\\\\\\\\\\\\\\\\\\\\\\":{},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:type\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}}}],\\\\\\\\\\\\\\\\\\\\\\\\\\\"name\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cloudflare-secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"namespace\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cert-manager\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"resourceVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2162936\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"uid\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"49148200-eee7-45f5-a908-af32a1245a81\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"stringData\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api_token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"vAb84tNRm5C-S_r7EPX8cdzISIR-K_b8a7Gh56uA\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"router_url\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"router-default.apps.hub.euw.container.mom\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"zone_id\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"5485880624d63a6fdf003b8e994f0dd8\\\\\\\\\\\\\\\\\\\\\\\\\\\"}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"type\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Opaque\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\": json: cannot unmarshal object into Go struct field Secret.stringData of type string\\\",\\\"reason\\\":\\\"Invalid\\\",\\\"details\\\":{\\\"causes\\\":[{\\\"reason\\\":\\\"FieldValueInvalid\\\",\\\"message\\\":\\\"Invalid value: \\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"dkFiODR0TlJtNUMtU19yN0VQWDhjZHpJU0lSLUtfYjhhN0doNTZ1QQ==\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"kind\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"metadata\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"creationTimestamp\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"managedFields\\\\\\\\\\\\\\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\\\\\\\\\\\\\\"manager\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"OpenAPI-Generator\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"operation\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Update\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"apiVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"v1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2025-03-27T13:53:09Z\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsType\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"FieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"fieldsV1\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:data\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\".\\\\\\\\\\\\\\\\\\\\\\\\\\\":{},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"f:type\\\\\\\\\\\\\\\\\\\\\\\\\\\":{}}}],\\\\\\\\\\\\\\\\\\\\\\\\\\\"name\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cloudflare-secret\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"namespace\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"cert-manager\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"resourceVersion\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"2162936\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"uid\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"49148200-eee7-45f5-a908-af32a1245a81\\\\\\\\\\\\\\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\\\\\\\\\\\\\\"stringData\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api-token\\\\\\\\\\\\\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\\\\\\\\\\\\\"api_token\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"vAb84tNRm5C-S_r7EPX8cdzISIR-K_b8a7Gh56uA\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"router_url\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"router-default.apps.hub.euw.container.mom\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\"zone_id\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"5485880624d63a6fdf003b8e994f0dd8\\\\\\\\\\\\\\\\\\\\\\\\\\\"}},\\\\\\\\\\\\\\\\\\\\\\\\\\\"type\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\"Opaque\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\": json: cannot unmarshal object into Go struct field Secret.stringData of type string\\\",\\\"field\\\":\\\"patch\\\"}]},\\\"code\\\":422}\\\\n'\", \"reason\": \"Unprocessable Entity\"}\n","commandType":4},{"text":"this is still not working\n\n\n2025-05-18T15:12:58Z ERROR cloudflare CLOUDFLARE_ZONE_ID contains an unexpanded variable - check your secret and deployment {\"zoneID\": \"${CLOUDFLARE_ZONE_ID}\", \"error\": \"unexpanded environment variable\"}\ngithub.com/pfeifferj/container-mom-go/pkg/cloudflare.NewClient\n/app/pkg/cloudflare/client.go:86\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:215\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-18T15:12:58Z ERROR Failed to create Cloudflare client, skipping DNS update {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"3e80a350-8d97-4a54-b4cd-524a6c9f829d\", \"hostname\": \"nginx.container.mom\", \"error\": \"CLOUDFLARE_ZONE_ID contains unexpanded variable: ${CLOUDFLARE_ZONE_ID}\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:217\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"is the operator looking for the secret in the right namespace?","commandType":4},{"text":"no the secret is not in the namespace","commandType":4},{"text":"I think the operator is not getting the secret because it's not added to the deployment @manifests ","commandType":4},{"text":"it's vreated by ansible. just add it to the deplyment","commandType":4},{"text":"Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): failed to execute helm template command: failed to get command args to log: `helm template . --name-template operator --namespace container-mom-system --kube-version 1.31 <api versions removed> --include-crds` failed exit status 1: Error: template: container-mom-operator/templates/secret.yaml:15:32: executing \"container-mom-operator/templates/secret.yaml\" at <.Values.secrets.stripeSecretKey>: nil pointer evaluating interface {}.stripeSecretKey Use --debug flag to render out invalid YAML","commandType":4},{"text":"@manifests \n\nFailed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): failed to execute helm template command: failed to get command args to log: `helm template . --name-template operator --namespace container-mom-system --kube-version 1.31 <api versions removed> --include-crds` failed exit status 1: Error: template: container-mom-operator/templates/secret.yaml:15:32: executing \"container-mom-operator/templates/secret.yaml\" at <.Values.secrets.stripeSecretKey>: nil pointer evaluating interface {}.stripeSecretKey Use --debug flag to render out invalid YAML","commandType":4},{"text":"does @ansible not create this?\n\nError: secret \"container-mom-operator-secret\" not found","commandType":4},{"text":"add it to the playbook. the values are all in the vault","commandType":4},{"text":"maybe put cloudflare stuff in there too and remove the dedicated secret and its references","commandType":4},{"text":"remove references from @manifests ","commandType":4},{"text":"TASK [cert_management : Create read-only role for certificates] ******************************************************************************************************************************************************************************************************************************\nfatal: [localhost]: FAILED! => {\"msg\": \"The task includes an option with an undefined variable.. 'certificate_secret_name' is undefined\\n\\nThe error appears to be in '/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/setup_roles.yml': line 4, column 3, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n\\n- name: Create read-only role for certificates\\n  ^ here\\n\"}\n\n","commandType":4},{"text":"TASK [cert_management : Create certificate for namespace] ************************************************************************************************************************************************************************************************************************************\nfatal: [localhost]: FAILED! => {\"msg\": \"The task includes an option with an undefined variable.. 'certificate_common_name' is undefined\\n\\nThe error appears to be in '/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/main.yml': line 33, column 3, but may\\nbe\nelsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n# Create the Certificate resource\\n- name: Create certificate for namespace\\n  ^ here\\n\"}\n\n","commandType":4},{"text":"run the playbook part that creates the secret","commandType":4},{"text":"@manifests @ansible \n\nTASK [cert_management : Create certificate for namespace] ************************************************************************************************************************************************************************************************************************************\nfatal: [localhost]: FAILED! => {\"msg\": \"The task includes an option with an undefined variable.. 'certificate_common_name' is undefined\\n\\nThe error appears to be in '/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/main.yml': line 33, column 3, but may\\nbe\nelsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n# Create the Certificate resource\\n- name: Create certificate for namespace\\n  ^ here\\n\"}\n\nPLAY RECAP ***********************************************************************************************************************************************************************************************************************************************************************************\nlocalhost                  : ok=52   changed=10   unreachable=0    failed=1    skipped=7    rescued=0    ignored=0\n","commandType":4},{"text":"2025-05-18T16:08:36Z ERROR Failed to ensure Cloudflare CNAME record {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"1380642c-d576-4e96-b0f9-4deaaffb8647\", \"hostname\": \"nginx.container.mom\", \"error\": \"failed to unmarshal response: json: cannot unmarshal bool into Go struct field CreateDNSRecordResponse.result of type string\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.CreateOrUpdateRoute\n/app/pkg/controllers/workload/routes.go:228\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createOrUpdateRoute\n/app/pkg/controllers/workload/deployment.go:511\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:312\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"the dns records created by the operator are proxied but shouldnt be","commandType":4},{"text":"also add a created by operator type comment to the records","commandType":4},{"text":"and it's not proxied anymore?","commandType":4},{"text":"try curling @https://loving-hugs-champion.container.mom/ ","commandType":4},{"text":"resume","commandType":4},{"text":"@portal-backend @portal @cmd @pkg \n\nthe deployment created based on the CMD doesn't have the secret env vars attached","commandType":4},{"text":"the wordpress template based deployment doesn't attach envs from the secret still","commandType":4},{"text":"the secret is generated bu the operaroe as well so the name need to be picked up by the operator","commandType":4},{"text":"you did it all wrong. the secret name is auto generated the deplyment name doesn need to be in there at all","commandType":4},{"text":"the secret pattern should be the same for all cm deployments. \none per CMD with values passed to it and this one secret shoiuld be attached to the deployment","commandType":4},{"text":"no wp secret. like normal (non wp deployments) also create secrets. wp should use the same mechanism","commandType":4},{"text":"does the operator do it properly?","commandType":4},{"text":"the names won't align because the secet is auto generated dynamically","commandType":4},{"text":"it should be a wildcard add all secret values to env","commandType":4},{"text":"wordpress 17:47:18.81 INFO ==>\nwordpress 17:47:18.81 INFO ==> Welcome to the Bitnami wordpress container\nwordpress 17:47:18.87 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers\nwordpress 17:47:18.88 INFO ==> Did you know there are enterprise versions of the Bitnami catalog? For enhanced secure software supply chain features, unlimited pulls from Docker, LTS support, or application customization, see Bitnami Premium or Tanzu Application Catalog. See https://www.arrow.com/globalecs/na/vendors/bitnami/ for more information.\nwordpress 17:47:18.88 INFO ==>\nwordpress 17:47:18.89 INFO ==> ** Starting WordPress setup **\nwordpress 17:47:19.07 INFO ==> Generating sample certificates\nCertificate request self-signature ok\nsubject=CN = example.com\nrealpath: /bitnami/apache/conf: No such file or directory\nwordpress 17:47:33.91 INFO ==> Configuring Apache ServerTokens directive\nwordpress 17:47:34.08 INFO ==> Configuring PHP options\nwordpress 17:47:34.10 INFO ==> Setting PHP expose_php option\nwordpress 17:47:34.17 INFO ==> Setting PHP output_buffering option\nwordpress 17:47:34.28 INFO ==> Validating settings in MYSQL_CLIENT_* env vars\nwordpress 17:47:34.49 WARN ==> Hostname mariadb:3306 could not be resolved, this could lead to connection issues\nwordpress 17:47:34.50 WARN ==> You set the environment variable ALLOW_EMPTY_PASSWORD=yes. For safety reasons, do not use this flag in a production environment.\nwordpress 17:47:35.38 INFO ==> Ensuring WordPress directories exist\nwordpress 17:47:35.39 INFO ==> Trying to connect to the database server\nwordpress 17:48:36.39 ERROR ==> Could not connect to the database","commandType":4},{"text":"the template doesn't deploy a db i think","commandType":4},{"text":"2","commandType":4},{"text":"I think we need to modify the template too to also deploy a db","commandType":4},{"text":"I think the crds are out of date in my deployment. are they not gitopsed?","commandType":4},{"text":"I meant operator crs","commandType":4},{"text":"no you fucking retard the CRs like CM templates","commandType":4},{"text":"these files","commandType":4},{"text":"does it also support multiple components that are part of a cmd (e.g. deployment + stateful set with db)","commandType":4},{"text":"pls implement","commandType":4},{"text":"clusterip is a bad idea","commandType":4},{"text":"ONLY use type LB","commandType":4},{"text":"1","commandType":4},{"text":"rename the .io filename sicne they're not accurate","commandType":4},{"text":"use oc commands to troubleshoot why the wp cmd doesn't have a db yet","commandType":4},{"text":"resume","commandType":4},{"text":"well the single CMD should create multiple componentsd","commandType":4},{"text":"no pods get created after reconcile","commandType":4},{"text":"we already have a cmd","commandType":4},{"text":"is there a way to have a standardized way to just allow the creation of multiple components per CMD?","commandType":4},{"text":"do we need to adapt the portal? @portal-backend ","commandType":4},{"text":"@portal \n\n⚠️ AUTHENTICATION IS DISABLED - All users granted admin access main.ab77ca06.js:2:163941\n⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. main.ab77ca06.js:2:157167\n⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. main.ab77ca06.js:2:157167\nGET\nhttps://portal.container.mom/logo192.png\n[HTTP/1.1 404 Not Found 0ms]\n\nGET\nhttps://portal.container.mom/favicon.ico\n[HTTP/1.1 404 Not Found 0ms]\n\nError: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7Bphase%2C%20message%2C%20lastUpdated%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\n    React 11\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.ab77ca06.js:2:71771\nUncaught Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7Bphase%2C%20message%2C%20lastUpdated%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\n    React 11\n    x scheduler.production.min.js:13\n    T scheduler.production.min.js:14\n    234 scheduler.production.min.js:14\n    Webpack 11\nmain.ab77ca06.js:2:49888\n","commandType":4},{"text":"it seems like still no db is getting deployed for the CMD\n","commandType":4},{"text":"resume","commandType":4},{"text":"the latest version is deployed","commandType":4},{"text":"I'll create it through the portal frontend instead","commandType":4},{"text":"@container.mom_deployments.yaml ","commandType":4},{"text":"still no ss","commandType":4},{"text":"it's applied","commandType":4},{"text":"I created on using the portal","commandType":4},{"text":"it seems to have created 2 ns","commandType":4},{"text":"the ns have wp in the name base on cmd wp-blog","commandType":4},{"text":"the mariadb ss is there now but it's pending because of an unbloud pvc","commandType":4},{"text":"the operator should do this stuff following quota in the cmd","commandType":4},{"text":"update @wordpress-template.yaml ","commandType":4},{"text":"don't use this storage class lol","commandType":4},{"text":"let's create our own storage class for customer workloads","commandType":4},{"text":"add it to /home/josie/development/container-mom-go/manifests/10-operator/templates","commandType":4},{"text":"no the operator should be creating those on demand","commandType":4},{"text":"resume","commandType":4},{"text":"check why ns/wkl-wp-blog-wp-blog-4c6631b4/pods/wp-blog-mariadb-0 is still pending","commandType":4},{"text":"use oc","commandType":4},{"text":"pls","commandType":4},{"text":"resume","commandType":4},{"text":"it's container.mom","commandType":4},{"text":"can't the operator fix this?","commandType":4},{"text":"yes pls and also check why double nses are created for multi comopnent deployments","commandType":4},{"text":"2025-05-19T17:43:06Z ERROR Failed to create PersistentVolume {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"415953e3-2493-4ec6-9beb-6f30b255c910\", \"name\": \"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\", \"output\": \"Error from server (Forbidden): error when retrieving current configuration of:\\nResource: \\\"/v1, Resource=persistentvolumes\\\", GroupVersionKind: \\\"/v1, Kind=PersistentVolume\\\"\\nName: \\\"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\\\", Namespace: \\\"\\\"\\nfrom server for: \\\"STDIN\\\": persistentvolumes \\\"mariadb-data-wordpress-site-mariadb-0-wkl-wordpress-site-wordpress-site-a9cb5ea3-pv\\\" is forbidden: User \\\"system:serviceaccount:container-mom-system:container-mom\\\" cannot get resource \\\"pe...\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).createPersistentVolumeForClaim\n/app/pkg/controllers/workload/deployment.go:1315\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:286\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224\n2025-05-19T17:43:06Z ERROR Failed to create PersistentVolume for component volume claim {\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"415953e3-2493-4ec6-9beb-6f30b255c910\", \"pvc\": \"mariadb-data-wordpress-site-mariadb-0\", \"component\": \"mariadb\", \"error\": \"failed to create PersistentVolume: exit status 1\"}\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).reconcileInCluster\n/app/pkg/controllers/workload/deployment.go:288\ngithub.com/pfeifferj/container-mom-go/pkg/controllers/workload.(*Controller).Reconcile\n/app/pkg/controllers/workload/controller.go:433\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:303\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:224","commandType":4},{"text":"pls fix @manifests ","commandType":4},{"text":"the namespace are still not cleaned up\n\nand the SS is pending\n\n2025-05-19T18:12:41Z\tINFO\tsetup\tAttempting to create operator\t{\"attempt\": 1, \"maxRetries\": 5}\n2025-05-19T18:12:41Z\tINFO\tsetup\tStarting HTTP server\t{\"port\": \":8082\"}\n2025-05-19T18:12:41Z\tINFO\tsetup\tStarting operator\n2025-05-19T18:12:41Z\tINFO\tinitializing operator\n2025-05-19T18:12:41Z\tINFO\tstarting HTTP server\t{\"addr\": \":8081\"}\n2025-05-19T18:12:41Z\tINFO\tHTTP server is ready\n2025-05-19T18:12:41Z\tINFO\t============ STARTING DEPLOYMENT CONTROLLER ============\n2025-05-19T18:12:41Z\tINFO\tStarting deployment controller\n2025-05-19T18:12:41Z\tINFO\tDeployment controller started\n2025-05-19T18:12:41Z\tINFO\tDeployment controller start function returned successfully\n2025-05-19T18:12:41Z\tINFO\t============ STARTING WORKLOAD CONTROLLER ============\n2025-05-19T18:12:41Z\tINFO\tWorkload controller goroutine has started\n2025-05-19T18:12:41Z\tINFO\tCreating controller manager\n2025-05-19T18:12:41Z\tINFO\tController manager created successfully\n2025-05-19T18:12:41Z\tINFO\tLoaded cluster configuration\t{\"cluster\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tLoaded all cluster configurations\t{\"clusters\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tSetting up workload controller with multi-cluster support\n2025-05-19T18:12:41Z\tINFO\tSetting up workload controller\n2025-05-19T18:12:41Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:41Z\tINFO\tInitializing WorkloadController with cluster configurations\t{\"configCount\": 1, \"clusterNames\": \"[default]\"}\n2025-05-19T18:12:41Z\tINFO\tOperator running in namespace\t{\"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:41Z\tINFO\tAdded cluster client\t{\"region\": \"default\"}\n2025-05-19T18:12:41Z\tINFO\tSetting up controller with builder\n2025-05-19T18:12:41Z\tINFO\tWorkloadController setup complete\n2025-05-19T18:12:41Z\tINFO\tWorkload controller created successfully\n2025-05-19T18:12:41Z\tINFO\tWorkload controller created successfully\n2025-05-19T18:12:41Z\tINFO\tSetting up Template controller with manager\n2025-05-19T18:12:41Z\tINFO\tSetting up template controller\n2025-05-19T18:12:41Z\tINFO\tTemplate controller setup completed\n2025-05-19T18:12:41Z\tINFO\tTemplate controller initialized successfully\n2025-05-19T18:12:41Z\tINFO\tStarting manager (this blocks until shutdown)\n2025-05-19T18:12:41Z\tINFO\tcontroller-runtime.metrics\tStarting metrics server\n2025-05-19T18:12:41Z\tINFO\tWorkload controller initialization completed successfully\n2025-05-19T18:12:41Z\tINFO\tcontroller-runtime.metrics\tServing metrics server\t{\"bindAddress\": \":8080\", \"secure\": false}\n2025-05-19T18:12:41Z\tINFO\tstarting server\t{\"name\": \"health probe\", \"addr\": \"[::]:8088\"}\n2025-05-19T18:12:41Z\tINFO\tWaiting for cache to fully sync before cleaning up namespaces\t{\"delay\": \"30s\"}\n2025-05-19T18:12:41Z\tINFO\tStarting EventSource\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"source\": \"kind source: *v1alpha1.ContainerMomDeployment\"}\n2025-05-19T18:12:41Z\tINFO\tStarting EventSource\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"source\": \"kind source: *v1alpha1.Template\"}\n2025-05-19T18:12:41Z\tINFO\tStarting Controller\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\"}\n2025-05-19T18:12:41Z\tINFO\tStarting Controller\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\"}\n2025-05-19T18:12:42Z\tINFO\tStarting workers\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"worker count\": 1}\n2025-05-19T18:12:42Z\tINFO\tStarting workers\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"worker count\": 1}\n2025-05-19T18:12:42Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"f72794e8-7b2b-4f34-bc39-9f2d8fff6670\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:12:42Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-19T18:12:42Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"annotations\": \"map[containermom.mom/namespace:wkl-fooo-fooo-24de0fb4]\"}\n2025-05-19T18:12:42Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:42Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3bcc8749-7975-4410-8535-c642a26fb2a8\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:12:42Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:42Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"domain\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-19T18:12:43Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:44Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\", \"output\": \"route.route.openshift.io/fooo unchanged\\n\"}\n2025-05-19T18:12:46Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.container.mom\", \"actualHostname\": \"nginx.container.mom\", \"match\": true}\n2025-05-19T18:12:46Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"phase\": \"Building\"}\n2025-05-19T18:12:46Z\tINFO\tUsing operator's client for local cluster deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"clusterRef\": \"local\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:48Z\tINFO\tDeployment already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:49Z\tINFO\tService already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\"}\n2025-05-19T18:12:49Z\tINFO\tCreating or updating route with hostname\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\", \"domainName\": \"nginx.container.mom\", \"prefix\": \"nginx\"}\n2025-05-19T18:12:49Z\tINFO\tCreating or updating route\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"route\": \"fooo\", \"host\": \"nginx.container.mom\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:12:52Z\tINFO\tRoute check output\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"output\": \"NAME   HOST/PORT             PATH   SERVICES   PORT   TERMINATION     WILDCARD\\nfooo   nginx.container.mom          fooo       http   edge/Redirect   None\\n\", \"error\": false}\n2025-05-19T18:12:52Z\tINFO\tRoute exists, checking if update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:53Z\tINFO\tRoute hostname already correct, no update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:56Z\tINFO\tRoute verification successful\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\", \"name\": \"fooo\", \"expectedHostname\": \"nginx.container.mom\", \"actualHostname\": \"nginx.container.mom\", \"match\": true}\n2025-05-19T18:12:56Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:12:56Z\tINFO\tcloudflare\tVerifying Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:12:56Z\tINFO\thandling health check\n2025-05-19T18:12:56Z\tINFO\thandling readiness check\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tSuccessfully verified Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tEnsuring CNAME record exists\t{\"hostname\": \"nginx.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:12:57Z\tDEBUG\tcloudflare\tGetting existing DNS records\t{\"url\": \"https://api.cloudflare.com/client/v4/zones/5485880624d63a6fdf003b8e994f0dd8/dns_records?type=CNAME&name=nginx.container.mom\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:57Z\tDEBUG\tcloudflare\tRetrieved DNS records from Cloudflare\t{\"hostname\": \"nginx.container.mom\", \"recordCount\": 1}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tFound matching DNS record\t{\"hostname\": \"nginx.container.mom\", \"recordID\": \"f946a29e40306f2e26b4b68460dd9275\"}\n2025-05-19T18:12:57Z\tINFO\tcloudflare\tExisting DNS record found, updating\t{\"hostname\": \"nginx.container.mom\", \"recordID\": \"f946a29e40306f2e26b4b68460dd9275\"}\n2025-05-19T18:12:58Z\tINFO\tcloudflare\tUpdated CNAME record in Cloudflare\t{\"hostname\": \"nginx.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully configured Cloudflare CNAME record\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"hostname\": \"nginx.container.mom\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully deployed to local cluster using operator client\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:12:58Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"name\": \"fooo\", \"phase\": \"Succeeded\"}\n2025-05-19T18:12:58Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"fooo\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"fooo\", \"reconcileID\": \"22c0a32d-0538-4fc7-b76e-48199c9152e4\", \"deployment\": \"fooo\", \"phase\": \"Succeeded\", \"clusters\": \"local\"}\n2025-05-19T18:12:58Z\tINFO\tStarting reconciliation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"namespace\": \"container-mom-system\", \"availableClusters\": 1}\n2025-05-19T18:12:58Z\tINFO\tCR annotations\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"annotations\": \"map[containermom.mom/namespace:wkl-wordpress-site-wordpress-site-a9cb5ea3]\"}\n2025-05-19T18:12:58Z\tINFO\tCR already has namespace annotation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"namespace\": \"container-mom-system\", \"appNamespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:12:58Z\tINFO\tNamespace already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:12:58Z\tINFO\tDomain specified in deployment, ensuring route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"domain\": \"container.mom\", \"prefix\": \"sweet-love-maven\"}\n2025-05-19T18:12:59Z\tINFO\tService exists, proceeding with route creation\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:00Z\tINFO\tCreated or updated route with direct command\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\", \"output\": \"route.route.openshift.io/wordpress-site unchanged\\n\"}\n2025-05-19T18:13:01Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"a4f205e1-7bb3-4031-a567-2064a204af85\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:01Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"ab8b06bc-9b5e-489e-9836-92028479f43f\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:02Z\tINFO\tRoute verification\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"expectedHostname\": \"sweet-love-maven.container.mom\", \"actualHostname\": \"sweet-love-maven.container.mom\", \"match\": true}\n2025-05-19T18:13:02Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"phase\": \"Building\"}\n2025-05-19T18:13:02Z\tINFO\tUsing operator's client for local cluster deployment\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"clusterRef\": \"local\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:13:04Z\tINFO\tCreating secret for environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-env\"}\n2025-05-19T18:13:06Z\tINFO\thandling health check\n2025-05-19T18:13:06Z\tINFO\thandling readiness check\n2025-05-19T18:13:07Z\tINFO\tCreated secret for environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-env\"}\n2025-05-19T18:13:07Z\tINFO\tDeployment exists, updating to ensure any env var changes are applied\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:08Z\tINFO\tTriggered rollout to apply environment changes\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:08Z\tINFO\tDeployment already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:10Z\tINFO\tService already exists\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\"}\n2025-05-19T18:13:10Z\tINFO\tCreating or updating route with hostname\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\", \"domainName\": \"container.mom\", \"prefix\": \"sweet-love-maven\"}\n2025-05-19T18:13:10Z\tINFO\tCreating or updating route\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"route\": \"wordpress-site\", \"host\": \"sweet-love-maven.container.mom\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:10Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"fb7f74b1-cb88-4c91-8e44-8a5a1b00a801\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:11Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"cf7e904e-01ed-4348-ac3c-4ad7f9db4c76\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:11Z\tINFO\tRunning cleanup of dangling wkl- namespaces with initialized cache\n2025-05-19T18:13:11Z\tINFO\tVerified CMD cache is synced, proceeding with cleanup\t{\"cmdCount\": 2}\n2025-05-19T18:13:11Z\tINFO\tStarting cleanup of dangling wkl- namespaces\n2025-05-19T18:13:11Z\tINFO\tFound ContainerMomDeployments\t{\"count\": 2}\n2025-05-19T18:13:11Z\tINFO\tProtected namespace from CMD annotation\t{\"cmd\": \"fooo\", \"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:13:11Z\tINFO\tProtected namespace from CMD annotation\t{\"cmd\": \"wordpress-site\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:11Z\tINFO\tFound wkl- namespaces\t{\"count\": 6}\n2025-05-19T18:13:11Z\tINFO\tProtected namespaces\t{\"count\": 3}\n2025-05-19T18:13:11Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:13:11Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-argocd\"}\n2025-05-19T18:13:11Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\"}\n2025-05-19T18:13:12Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"28108af7-d6b6-4196-9711-bbf4affd26f7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:13Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"0b185940-d9d9-46f0-977e-69edbb89a1f4\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:13Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3a82385a-9277-4c28-aea8-500f75c76962\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:14Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-53fe5740\", \"resourceType\": \"deployments\"}\n2025-05-19T18:13:14Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-53fe5740\"}\n2025-05-19T18:13:14Z\tINFO\tSkipping protected namespace\t{\"namespace\": \"wkl-fooo-fooo-24de0fb4\"}\n2025-05-19T18:13:14Z\tINFO\tRoute check output\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"output\": \"NAME             HOST/PORT            PATH   SERVICES         PORT   TERMINATION     WILDCARD\\nwordpress-site   HostAlreadyClaimed          wordpress-site   http   edge/Redirect   None\\n\", \"error\": false}\n2025-05-19T18:13:14Z\tINFO\tRoute exists, checking if update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:16Z\tINFO\thandling readiness check\n2025-05-19T18:13:16Z\tINFO\thandling health check\n2025-05-19T18:13:16Z\tINFO\tRoute hostname already correct, no update needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:19Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-b2cd6fad\", \"resourceType\": \"services\"}\n2025-05-19T18:13:19Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-b2cd6fad\"}\n2025-05-19T18:13:20Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"ad4f75c8-65c4-4b9e-96dc-6e7c1a883e5a\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:20Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d42f252a-2509-4fb7-8988-2aeb9b810e14\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:22Z\tINFO\tRoute verification successful\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site\", \"expectedHostname\": \"sweet-love-maven.container.mom\", \"actualHostname\": \"sweet-love-maven.container.mom\", \"match\": true}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tInitializing Cloudflare client\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\", \"routerURL\": \"router-default.apps.hub.euw.container.mom\", \"apiTokenProvided\": true}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tVerifying Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tSuccessfully verified Cloudflare configuration\t{\"zoneID\": \"5485880624d63a6fdf003b8e994f0dd8\"}\n2025-05-19T18:13:22Z\tINFO\tcloudflare\tEnsuring CNAME record exists\t{\"hostname\": \"sweet-love-maven.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:13:22Z\tDEBUG\tcloudflare\tGetting existing DNS records\t{\"url\": \"https://api.cloudflare.com/client/v4/zones/5485880624d63a6fdf003b8e994f0dd8/dns_records?type=CNAME&name=sweet-love-maven.container.mom\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:23Z\tINFO\tFound resources in namespace\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-7d3a4770\", \"resourceType\": \"services\"}\n2025-05-19T18:13:23Z\tINFO\tSkipping namespace with active workloads\t{\"namespace\": \"wkl-wordpress-site-wordpress-site-7d3a4770\"}\n2025-05-19T18:13:23Z\tINFO\tCompleted dangling namespace cleanup\t{\"found\": 6, \"protected\": 3, \"skipped\": 6, \"deleted\": 0}\n2025-05-19T18:13:23Z\tINFO\tCompleted dangling namespaces cleanup\n2025-05-19T18:13:23Z\tDEBUG\tcloudflare\tRetrieved DNS records from Cloudflare\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordCount\": 1}\n2025-05-19T18:13:23Z\tINFO\tcloudflare\tFound matching DNS record\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordID\": \"9a8dc418c13ae1aa07016b12606335ea\"}\n2025-05-19T18:13:23Z\tINFO\tcloudflare\tExisting DNS record found, updating\t{\"hostname\": \"sweet-love-maven.container.mom\", \"recordID\": \"9a8dc418c13ae1aa07016b12606335ea\"}\n2025-05-19T18:13:24Z\tINFO\tcloudflare\tUpdated CNAME record in Cloudflare\t{\"hostname\": \"sweet-love-maven.container.mom\", \"target\": \"router-default.apps.hub.euw.container.mom\"}\n2025-05-19T18:13:24Z\tINFO\tSuccessfully configured Cloudflare CNAME record\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"hostname\": \"sweet-love-maven.container.mom\"}\n2025-05-19T18:13:24Z\tINFO\tProcessing additional components\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"count\": 1}\n2025-05-19T18:13:24Z\tINFO\tCreating additional component\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"componentName\": \"wordpress-site-mariadb\", \"componentType\": \"statefulset\"}\n2025-05-19T18:13:25Z\tINFO\tCreating secret for component environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb-env\"}\n2025-05-19T18:13:26Z\tINFO\thandling readiness check\n2025-05-19T18:13:26Z\tINFO\thandling health check\n2025-05-19T18:13:27Z\tINFO\tCreated secret for component environment variables\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb-env\"}\n2025-05-19T18:13:27Z\tINFO\tStatefulSet already exists, updating if needed\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb\"}\n2025-05-19T18:13:28Z\tINFO\tTriggered StatefulSet rollout to apply changes\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"wkl-wordpress-site-wordpress-site-a9cb5ea3\", \"name\": \"wordpress-site-mariadb\"}\n2025-05-19T18:13:29Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"0c46abe7-0cce-4de9-9617-9b42cdf31c37\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"afb9bd40-0b3d-4ae7-96b8-880f358270fc\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:30Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"e6b838ca-9b15-4ff9-91a4-c066202ab3e7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:31Z\tINFO\tSuccessfully deployed to local cluster using operator client\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"namespace\": \"container-mom-system\"}\n2025-05-19T18:13:31Z\tINFO\tUpdated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"name\": \"wordpress-site\", \"phase\": \"Succeeded\"}\n2025-05-19T18:13:31Z\tINFO\tSuccessfully updated deployment status\t{\"controller\": \"containermomdeployment\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"ContainerMomDeployment\", \"ContainerMomDeployment\": {\"name\":\"wordpress-site\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress-site\", \"reconcileID\": \"000f2b6d-70d5-45e4-9aac-54b795e70f4e\", \"deployment\": \"wordpress-site\", \"phase\": \"Succeeded\", \"clusters\": \"local\"}\n2025-05-19T18:13:36Z\tINFO\thandling readiness check\n2025-05-19T18:13:36Z\tINFO\thandling health check\n2025-05-19T18:13:39Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"f5e82477-9449-4dac-8e4c-b27aa38df1bb\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:39Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"8614976e-d068-4877-9be3-e5e6d72a3832\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:46Z\tINFO\thandling health check\n2025-05-19T18:13:46Z\tINFO\thandling readiness check\n2025-05-19T18:13:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"fb401d6c-9046-43a9-aa96-f3423a2f4ded\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:49Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"bdf8fde5-1290-4f0e-bd7d-a15851c67f61\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:56Z\tINFO\thandling health check\n2025-05-19T18:13:56Z\tINFO\thandling readiness check\n2025-05-19T18:13:58Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"d78ff3ed-eb33-4713-95df-9ac7be8bbe3b\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:13:58Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"c5babef1-3e52-4dee-91ec-26f81fd241e3\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:06Z\tINFO\thandling readiness check\n2025-05-19T18:14:06Z\tINFO\thandling health check\n2025-05-19T18:14:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"7fb7ce6f-04cc-4869-a45c-fbf4eb1d6ae7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:08Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"46f674a0-6af0-493e-8d0a-10ed58fb7912\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:16Z\tINFO\thandling readiness check\n2025-05-19T18:14:16Z\tINFO\thandling health check\n2025-05-19T18:14:17Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"3e4007f0-0a28-4222-80eb-4a12a6fe3fe7\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"2bdf0613-e9c8-4468-acb5-da72655a9fb8\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n2025-05-19T18:14:18Z\tINFO\tReconciling Template\t{\"controller\": \"template\", \"controllerGroup\": \"container.mom\", \"controllerKind\": \"Template\", \"Template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}, \"namespace\": \"container-mom-system\", \"name\": \"wordpress\", \"reconcileID\": \"78aa00fb-283d-4d71-93a1-e8108ea0aa67\", \"template\": {\"name\":\"wordpress\",\"namespace\":\"container-mom-system\"}}\n","commandType":4},{"text":"could we refactor @deployment.go into multiple files/helpers?","commandType":4},{"text":"nothing in @customer or @Commit (Diff of Working State) ","commandType":4},{"text":"nothing in @customer or /home/josie/development/container-mom-go/pkg/controllers/deployment is used right?","commandType":4},{"text":"remove the redundant, unused stuff from the operator","commandType":4},{"text":"run tests","commandType":4},{"text":"what do we do about the other dirs in controllers?","commandType":4},{"text":"what baout common and template","commandType":4}]


key: workbench.editor.languageDetectionOpenedLanguages.workspace
value:
  [["log",true],["github-actions-workflow",true],["properties",true],["dockerfile",true],["javascriptreact",true],["html",true],["javascript",true],["markdown",true],["shellscript",true],["yaml",true],["go",true],["plaintext",true]]


key: workbench.auxiliarybar.viewContainersWorkspaceState
value:
  [{"id":"workbench.panel.aichat","visible":true},{"id":"workbench.panel.composerViewPane2","visible":false},{"id":"workbench.panel.aipaneaaaiBugFinder","visible":false},{"id":"workbench.panel.chat","visible":false},{"id":"workbench.panel.chatEditing","visible":false}]


key: terminal.integrated.layoutInfo
value:
  {"workspaceId":"150461f339435ba56ca5bf38ea1440df","tabs":[{"isActive":true,"activePersistentProcessId":6,"terminals":[{"relativeSize":1,"terminal":6}]}]}


key: workbench.panel.viewContainersWorkspaceState
value:
  [{"id":"workbench.panel.markers","visible":true},{"id":"workbench.panel.output","visible":true},{"id":"workbench.panel.repl","visible":true},{"id":"terminal","visible":true},{"id":"workbench.panel.testResults","visible":false},{"id":"~remote.forwardedPortsContainer","visible":true},{"id":"refactorPreview","visible":false}]


key: terminal.integrated.environmentVariableCollectionsV2
value:
  [{"extensionIdentifier":"vscode.git","collection":[["GIT_ASKPASS",{"variable":"GIT_ASKPASS","value":"/tmp/.mount_Cursor9f6WTR/usr/share/cursor/resources/app/extensions/git/dist/askpass.sh","type":1,"options":{"applyAtProcessCreation":true,"applyAtShellIntegration":false}}],["VSCODE_GIT_ASKPASS_NODE",{"variable":"VSCODE_GIT_ASKPASS_NODE","value":"/tmp/.mount_Cursor9f6WTR/usr/share/cursor/cursor","type":1,"options":{"applyAtProcessCreation":true,"applyAtShellIntegration":false}}],["VSCODE_GIT_ASKPASS_EXTRA_ARGS",{"variable":"VSCODE_GIT_ASKPASS_EXTRA_ARGS","value":"","type":1,"options":{"applyAtProcessCreation":true,"applyAtShellIntegration":false}}],["VSCODE_GIT_ASKPASS_MAIN",{"variable":"VSCODE_GIT_ASKPASS_MAIN","value":"/tmp/.mount_Cursor9f6WTR/usr/share/cursor/resources/app/extensions/git/dist/askpass-main.js","type":1,"options":{"applyAtProcessCreation":true,"applyAtShellIntegration":false}}],["VSCODE_GIT_IPC_HANDLE",{"variable":"VSCODE_GIT_IPC_HANDLE","value":"/run/user/1000/vscode-git-b6c4763ab5.sock","type":1,"options":{"applyAtProcessCreation":true,"applyAtShellIntegration":false}}]],"description":[["",{"description":"Enables the following features: git auth provider"}]]}]


key: memento/workbench.parts.editor
value:
  {"editorpart.state":{"serializedGrid":{"root":{"type":"branch","data":[{"type":"leaf","data":{"id":0,"editors":[{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/middleware/basicAuth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/middleware/basicAuth.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/middleware/basicAuth.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/README.md\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/README.md\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/README.md\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/defaults/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_management/defaults/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/defaults/main.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/deployment/controller.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/deployment/controller.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/deployment/controller.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/types.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/types.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/types.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/template/controller.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/template/controller.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/template/controller.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/cluster_deploy_roles.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/cluster_deploy_roles.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/cluster_deploy_roles.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/setup_roles.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/setup_roles.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/setup_roles.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/30-landing/templates/route.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/30-landing/templates/route.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/30-landing/templates/route.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/30-landing/templates/www-route.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/30-landing/templates/www-route.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/30-landing/templates/www-route.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/main.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/api_server_cert.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/api_server_cert.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_management/tasks/api_server_cert.yml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/deploy_portal.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/deploy_portal.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/deploy_portal.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/manage_portal_secrets.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/manage_portal_secrets.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/manage_portal_secrets.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/namespace_setup/tasks/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/namespace_setup/tasks/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/namespace_setup/tasks/main.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/defaults/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/defaults/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/defaults/main.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/image.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/image.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/image.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/tasks/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/tasks/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/cert_manager_deployment/tasks/main.yml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/tasks/portal_secrets.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/tasks/portal_secrets.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/tasks/portal_secrets.yml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/secrets-template.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/secrets-template.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/secrets-template.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/package.json\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/package.json\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/package.json\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/docs/BASIC_AUTH.md\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/docs/BASIC_AUTH.md\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/docs/BASIC_AUTH.md\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-route.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/backend-route.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-route.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-route.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-route.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-route.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/values-staging.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/values-staging.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/values-staging.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/values-dev.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/values-dev.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/values-dev.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/values.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/values.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/values.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/container_mom_operator/tasks/main.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/container_mom_operator/tasks/main.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/container_mom_operator/tasks/main.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/image-pull-secret.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/image-pull-secret.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/image-pull-secret.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/image-pull-secret.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/image-pull-secret.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/image-pull-secret.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/serviceaccount.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/serviceaccount.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/serviceaccount.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/serviceaccount.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/serviceaccount.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/serviceaccount.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-service.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-service.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-service.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-configmap.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-configmap.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-configmap.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/routes/deployments.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/routes/deployments.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/routes/deployments.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/services/k8sClient.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/services/k8sClient.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/services/k8sClient.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/.env\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/.env\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/.env\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-secret.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/backend-secret.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-secret.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-configmap.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/backend-configmap.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/backend-configmap.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-rolebinding.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-rolebinding.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-rolebinding.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-deployment.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-deployment.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/frontend-deployment.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/package.json\",\"external\":\"file:///home/josie/development/container-mom-go/portal/package.json\",\"path\":\"/home/josie/development/container-mom-go/portal/package.json\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/Dockerfile\",\"external\":\"file:///home/josie/development/container-mom-go/portal/Dockerfile\",\"path\":\"/home/josie/development/container-mom-go/portal/Dockerfile\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/Deployments.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/Deployments.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/Deployments.jsx\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/public/wordpress-debug.html\",\"external\":\"file:///home/josie/development/container-mom-go/portal/public/wordpress-debug.html\",\"path\":\"/home/josie/development/container-mom-go/portal/public/wordpress-debug.html\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/operator/operator.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/operator/operator.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/operator/operator.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/lifecycle.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/lifecycle.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/lifecycle.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/controller.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/controller.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/controller.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/deployment.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/deployment.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/deployment.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/deployment/controller_test.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/deployment/controller_test.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/deployment/controller_test.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/README.md\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/README.md\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/README.md\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/Makefile\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/Makefile\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/Makefile\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/reconciler.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/reconciler.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/reconciler.go\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/component.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/component.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/component.go\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/route.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/route.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/route.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/statefulset.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/statefulset.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/statefulset.go\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/util.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/util.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/util.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/service.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/service.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/service.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/volume.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/volume.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/volume.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/clusterrole.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/clusterrole.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/clusterrole.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/NewDeploymentDebug.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/NewDeploymentDebug.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/NewDeploymentDebug.jsx\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/LoginModal.css\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/LoginModal.css\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/LoginModal.css\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/LoginModal.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/LoginModal.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/LoginModal.jsx\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/Navigation.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/Navigation.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/Navigation.jsx\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/.github/workflows/portal.yml\",\"external\":\"file:///home/josie/development/container-mom-go/.github/workflows/portal.yml\",\"path\":\"/home/josie/development/container-mom-go/.github/workflows/portal.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/nginx.conf.template\",\"external\":\"file:///home/josie/development/container-mom-go/portal/nginx.conf.template\",\"path\":\"/home/josie/development/container-mom-go/portal/nginx.conf.template\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-role.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-role.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/20-portal/templates/containermom-crd-role.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/.env\",\"external\":\"file:///home/josie/development/container-mom-go/portal/.env\",\"path\":\"/home/josie/development/container-mom-go/portal/.env\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/services/auth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/services/auth.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/services/auth.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/30-landing/values.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/30-landing/values.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/30-landing/values.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/playbooks/tasks/root_domain_cert.yml\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/playbooks/tasks/root_domain_cert.yml\",\"path\":\"/home/josie/development/container-mom-go/ansible/playbooks/tasks/root_domain_cert.yml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/temp-manifests/container-mom-cert.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/temp-manifests/container-mom-cert.yaml\",\"path\":\"/home/josie/development/container-mom-go/temp-manifests/container-mom-cert.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/index.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/index.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/index.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/contexts/AuthContext.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/contexts/AuthContext.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/contexts/AuthContext.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/App.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/App.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/App.jsx\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/docker-entrypoint.sh\",\"external\":\"file:///home/josie/development/container-mom-go/portal/docker-entrypoint.sh\",\"path\":\"/home/josie/development/container-mom-go/portal/docker-entrypoint.sh\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/middleware/auth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/middleware/auth.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/middleware/auth.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/middleware/secureAuth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/middleware/secureAuth.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/middleware/secureAuth.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/auth0-config.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/auth0-config.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/auth0-config.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/.env.example\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/.env.example\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/.env.example\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/ansible/roles/container_mom_operator/README.md\",\"external\":\"file:///home/josie/development/container-mom-go/ansible/roles/container_mom_operator/README.md\",\"path\":\"/home/josie/development/container-mom-go/ansible/roles/container_mom_operator/README.md\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/deployment-operator.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/deployment-operator.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/deployment-operator.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/routes.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/controllers/workload/routes.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/controllers/workload/routes.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/server.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/server.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/server.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/config.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/config.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/config.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/constants.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/constants.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/constants.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/wordpress-template.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/wordpress-template.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/wordpress-template.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/tmp/customer-storage-class.yaml\",\"external\":\"file:///tmp/customer-storage-class.yaml\",\"path\":\"/tmp/customer-storage-class.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/customer-storage-class.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/customer-storage-class.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/customer-storage-class.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/examples/wp-instance.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/examples/wp-instance.yaml\",\"path\":\"/home/josie/development/container-mom-go/examples/wp-instance.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/template_types.go\",\"external\":\"file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/template_types.go\",\"path\":\"/home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/template_types.go\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/container.mom_deployments.yaml\",\"external\":\"file:///home/josie/development/container-mom-go/manifests/10-operator/templates/container.mom_deployments.yaml\",\"path\":\"/home/josie/development/container-mom-go/manifests/10-operator/templates/container.mom_deployments.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/tmp/wordpress-template-updated.yaml\",\"external\":\"file:///tmp/wordpress-template-updated.yaml\",\"path\":\"/tmp/wordpress-template-updated.yaml\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/tmp/mariadb-pv.yaml\",\"external\":\"file:///tmp/mariadb-pv.yaml\",\"path\":\"/tmp/mariadb-pv.yaml\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/utils/auth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/utils/auth.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/utils/auth.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/services/api.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/services/api.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/services/api.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/services/templateService.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/services/templateService.js\",\"path\":\"/home/josie/development/container-mom-go/portal/src/services/templateService.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/DebugPanel.jsx\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/DebugPanel.jsx\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/DebugPanel.jsx\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/routes/templates.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/routes/templates.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/routes/templates.js\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/build/Dockerfile.portal\",\"external\":\"file:///home/josie/development/container-mom-go/build/Dockerfile.portal\",\"path\":\"/home/josie/development/container-mom-go/build/Dockerfile.portal\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal/src/components/Deployments.css\",\"external\":\"file:///home/josie/development/container-mom-go/portal/src/components/Deployments.css\",\"path\":\"/home/josie/development/container-mom-go/portal/src/components/Deployments.css\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/routes/auth.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/routes/auth.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/routes/auth.js\",\"scheme\":\"file\"}}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/josie/development/container-mom-go/portal-backend/config/index.js\",\"external\":\"file:///home/josie/development/container-mom-go/portal-backend/config/index.js\",\"path\":\"/home/josie/development/container-mom-go/portal-backend/config/index.js\",\"scheme\":\"file\"}}"}],"mru":[47,5,54,16,48,82,57,56,58,3,49,50,51,52,53,55,59,88,87,86,92,91,93,90,89,4,2,6,10,7,81,27,26,15,17,14,19,80,79,35,36,46,45,44,43,60,96,97,98,99,100,94,95,85,84,83,101,76,77,0,75,40,78,68,69,8,9,23,70,71,72,73,74,42,61,62,65,63,64,41,39,66,38,33,34,32,29,31,25,28,30,24,11,1,13,12,18,20,21,22,37,67,102],"preview":49},"size":807}],"size":1260},"orientation":0,"width":1260,"height":807},"activeGroup":0,"mostRecentActiveGroups":[0]}}


