# 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.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: anysphere.cursor-retrieval
value:
  {"cursor-retrieval-state-version":1,"map/e09087f15141c3cb12b0f2bf0a45e4e9712b9479c057389e8774d8ff66464195-container-mom-go/repoKeys":{"repoName":"9746c9be-e753-4c48-9c0d-6425b38787f2","orthogonalTransformationSeed":1123394716920995,"pathEncryptionKey":"6tLt16Bs8Eui0gBQSWy2oINCjq5u0Fyvmf9469Lz5UQ"}}


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


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: scm:view:visibleRepositories
value:
  {"all":["git:Git:file:///home/josie/development/container-mom-go"],"sortKey":"discoveryTime","visible":[0]}


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: 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.extensions.state
value:
  {"workbench.views.extensions.installed":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchOutdated":{"collapsed":false,"isHidden":true},"workbench.views.extensions.workspaceRecommendations":{"collapsed":false,"isHidden":true},"workbench.views.extensions.popular":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchRecentlyUpdated":{"collapsed":false,"isHidden":true},"workbench.views.extensions.otherRecommendations":{"collapsed":false,"isHidden":true},"extensions.recommendedList":{"collapsed":false,"isHidden":true},"workbench.views.extensions.enabled":{"collapsed":false,"isHidden":true},"workbench.views.extensions.disabled":{"collapsed":false,"isHidden":true},"workbench.views.extensions.marketplace":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchInstalled":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchEnabled":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchDisabled":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchBuiltin":{"collapsed":false,"isHidden":true},"workbench.views.extensions.searchWorkspaceUnsupported":{"collapsed":false,"isHidden":true},"workbench.views.extensions.builtinFeatureExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.builtinThemeExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.builtinProgrammingLanguageExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.untrustedUnsupportedExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.untrustedPartiallySupportedExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.virtualUnsupportedExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.virtualPartiallySupportedExtensions":{"collapsed":false,"isHidden":true},"workbench.views.extensions.deprecatedExtensions":{"collapsed":false,"isHidden":true}}


key: memento/workbench.view.search
value:
  {"query.queryDetailsExpanded":true,"query.contentPattern":"localhost","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:
  {"outline":{"collapsed":true,"isHidden":true,"size":22},"timeline":{"collapsed":true,"isHidden":true,"size":22},"notepad":{"collapsed":true,"isHidden":true,"size":22},"workbench.explorer.openEditorsView":{"collapsed":false,"isHidden":true},"workbench.explorer.fileView":{"collapsed":false,"isHidden":true,"size":998},"npm":{"collapsed":true,"isHidden":true},"go.explorer":{"collapsed":true,"isHidden":true,"size":22}}


key: aiService.generations
value:
  [{"unixMs":1739045554531,"generationUUID":"246ef94a-7102-4e42-89c6-38687263b443","type":"apply","textDescription":"deployment_controller_test.go"},{"unixMs":1739094097572,"generationUUID":"14c853b3-f6d1-4813-b420-ab08b3f3943e","type":"composer","textDescription":"{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:16Z\",\"msg\":\"handling readiness check\"}\n\n"},{"unixMs":1739094111716,"generationUUID":"efa10b40-6509-4f0b-84ae-62f28cee3a71","type":"apply","textDescription":"deployment_controller.go"},{"unixMs":1739094115313,"generationUUID":"fed66c5e-ae24-4057-ba23-1805880ca231","type":"apply","textDescription":"deployment_reconciler.go"},{"unixMs":1739095507740,"generationUUID":"1c8cb1c3-0f59-4742-8924-b582b2648058","type":"composer","textDescription":"{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"deployment controller started successfully\"}\n"},{"unixMs":1739095523301,"generationUUID":"201c25a6-c053-487c-a90a-efd9901dfc38","type":"apply","textDescription":"deployment_controller.go"},{"unixMs":1739115252980,"generationUUID":"cab2f590-a235-4603-b7a6-2254882947e1"},{"unixMs":1739115269084,"generationUUID":"e0cf47c5-c99c-445d-a915-04c23f319074","type":"composer","textDescription":"how does the logic work that actually deploys workloads based on the containermomdpeloyment crs?"},{"unixMs":1739115293327,"generationUUID":"57a5333f-c861-4b4c-8870-43e2ef2631b8","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739115296671,"generationUUID":"63b1c3c5-0966-4aa6-8f6b-401bf0ecf294","type":"apply","textDescription":"operator.go"},{"unixMs":1739115349283,"generationUUID":"2404e0f3-ea54-4486-91a5-945d760bdca2"},{"unixMs":1739115356248,"generationUUID":"fdb6b1b1-6ec2-47a6-be75-2c0ea74773ea","type":"composer","textDescription":"how does the contoller determine the target cluster?"},{"unixMs":1739115377788,"generationUUID":"8e1faa68-98b7-4d95-b644-120df0249f0e","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739115381396,"generationUUID":"615f5975-9f65-471e-ab01-1adf8603b461","type":"apply","textDescription":"operator.go"},{"unixMs":1739115440659,"generationUUID":"065b876c-1894-42f8-b0eb-8950ee8ee674"},{"unixMs":1739115527983,"generationUUID":"c33224d6-1e67-4169-81ec-f700acb1268b","type":"composer","textDescription":"the list of available target clusters and associated tokens to access them should be controlled through env vars so we can set up secrets and configmaps for them\n\nthe list of clusters should have a short name (e.g. euw, nae, eune etc.) and the api endpoint "},{"unixMs":1739115542499,"generationUUID":"8b0bf772-ffcd-49c9-bd37-f00b2be3d7c3","type":"apply","textDescription":"config.go"},{"unixMs":1739115545751,"generationUUID":"1e9093a4-0e0a-4b8d-b6d4-984f85e45a99","type":"apply","textDescription":"operator.go"},{"unixMs":1739115549263,"generationUUID":"ec2a9592-ce87-42d0-9de9-b308e4be51f4","type":"apply","textDescription":"clusters-config.yaml"},{"unixMs":1739115665287,"generationUUID":"f01ab31d-5c91-4fd7-bb21-616334660224"},{"unixMs":1739115675626,"generationUUID":"219fd9f1-e3fc-43aa-ba54-67f12e741cf1","type":"composer","textDescription":"for simplicity, add the new values to the exisitng operator secret and cm"},{"unixMs":1739115682136,"generationUUID":"ef9b104d-ee38-4efc-93a4-5f4de06fd7f2","type":"apply","textDescription":"configmap.yaml"},{"unixMs":1739115686553,"generationUUID":"62b79e94-5450-4d52-a6c7-9b985926506e","type":"apply","textDescription":"secret.yaml"},{"unixMs":1739115959937,"generationUUID":"4699b46b-0172-485b-a14e-42f8a895b91a"},{"unixMs":1739115961869,"generationUUID":"a698bf24-5373-4fa7-82ec-c8bbfc86155e","type":"composer","textDescription":"write tests for the workload controller"},{"unixMs":1739115989078,"generationUUID":"9d706d7e-4a1f-400a-bdc2-dca2d0ff999b","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739115992504,"generationUUID":"4010032f-f7b1-4d08-94cd-216481ce0d9f","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739115993625,"generationUUID":"f6266fba-6d93-4d50-9ca7-3f6291241bc9","type":"apply","textDescription":"types.go"},{"unixMs":1739116948368,"generationUUID":"7f023be8-0857-4261-b8c9-c4efb74a6a85","type":"composer","textDescription":"pls"},{"unixMs":1739116974269,"generationUUID":"eb7d0eaf-f633-4e3b-bdb9-f6b765bc900b","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739117058898,"generationUUID":"57229e8e-f1cd-48b7-913a-41d390c37763","type":"composer","textDescription":"pls"},{"unixMs":1739117070258,"generationUUID":"ea80f18a-45b3-46de-8fe3-95e5b71a1510","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739117073349,"generationUUID":"3012d59b-0993-40c2-a8ff-33a688a13482","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739117824177,"generationUUID":"04b01205-2bc8-4f02-94fd-67fe9754f9da","type":"composer","textDescription":"pls"},{"unixMs":1739117834794,"generationUUID":"501ddbcb-eadb-44e0-adae-c2c5fcdfdbb0","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739117840009,"generationUUID":"c0984321-dfb9-42fa-9485-deab234c2978","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739118055584,"generationUUID":"fb72723b-f20a-454e-8b0f-b0afbe59f680","type":"composer","textDescription":"pls"},{"unixMs":1739118063792,"generationUUID":"f3581e52-cc4e-4d0a-9c07-76e88967691d","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739118065250,"generationUUID":"9cda8727-dca5-445b-9eb5-12b4cbf9a661","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739118067059,"generationUUID":"ed680214-608f-42a5-922d-fc9de2f36e7f","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739118218373,"generationUUID":"81c581d3-c4f8-4af2-9d20-4a731c9c26bc","type":"composer","textDescription":"pls"},{"unixMs":1739118226928,"generationUUID":"40985b46-f703-4f9d-9817-20f2683aec78","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739118230381,"generationUUID":"3d222024-fcc5-4320-b96f-54b21cd540b0","type":"apply","textDescription":"workload_controller_test.go"},{"unixMs":1739118297704,"generationUUID":"136cc1cf-b65d-41dc-a2e3-a3418a957d53"},{"unixMs":1739118299529,"generationUUID":"56b9b5a5-0219-46f8-80f3-5dc6482c65cc","type":"composer","textDescription":"fix this\n\n\n"},{"unixMs":1739118308177,"generationUUID":"13e5f895-57b1-42a4-a5a3-5d3429af9d52","type":"apply","textDescription":"workload_controller.go"},{"unixMs":1739118686980,"generationUUID":"8252ef61-250c-42aa-86ff-d0814caf3692","type":"composer","textDescription":"pls"},{"unixMs":1739118692046,"generationUUID":"f990856e-72dd-4e5b-aef4-bdc845468019","type":"apply","textDescription":"operator.go"},{"unixMs":1739119311355,"generationUUID":"a8f07b9f-9c27-4a67-8faa-dc5dd6fe18de","type":"composer","textDescription":"pls"},{"unixMs":1739119316539,"generationUUID":"86f37151-db0c-4e01-b9f4-01db0cc4c2d7","type":"apply","textDescription":"operator.go"},{"unixMs":1739896344705,"generationUUID":"069d6c5e-b40a-4706-aeeb-5a7475f3bf5a"},{"unixMs":1739896360332,"generationUUID":"c6a15d65-3d64-4add-ac71-9f26ac600830","type":"composer","textDescription":"add a prereq task for these\n\n\nObtaining the installation program\n\nBefore you install OKD, download the installation file on the host you are using for installation.\nPrerequisites\n\n    You have a computer that runs Linux or macOS, with 500 MB of local disk space.\n\nProcedure\n\n    Download the installation program from https://github.com/openshift/okd/releases.\n    \t\n\n        The installation program creates several files on the computer that you use to install your cluster. You must keep the installation program and the files that the installation program creates after you finish installing the cluster. Both of the files are required to delete the cluster.\n\n        Deleting the files created by the installation program does not remove your cluster, even if the cluster failed during installation. To remove your cluster, complete the OKD uninstallation procedures for your specific cloud provider.\n\n    Extract the installation program. For example, on a computer that uses a Linux operating system, run the following command:\n\n    $ tar -xvf openshift-install-linux.tar.gz\n\n    Download your installation pull secret from Red Hat OpenShift Cluster Manager. This pull secret allows you to authenticate with the services that are provided by the included authorities, including Quay.io, which serves the container images for OKD components.\n\n    Using a pull secret from Red Hat OpenShift Cluster Manager is not required. You can use a pull secret for another private registry. Or, if you do not need the cluster to pull images from a private registry, you can use {\"auths\":{\"fake\":{\"auth\":\"aWQ6cGFzcwo=\"}}} as the pull secret when prompted during the installation.\n\n    If you do not use the pull secret from Red Hat OpenShift Cluster Manager:\n\n        Red Hat Operators are not available.\n\n        The Telemetry and Insights operators do not send data to Red Hat.\n\n        Content from the Red Hat Ecosystem Catalog Container images registry, such as image streams and Operators, are not available.\n\nInstalling the OpenShift CLI\n\nYou can install the OpenShift CLI (oc) to interact with OKD from a command-line interface. You can install oc on Linux, Windows, or macOS.\n\t\n\nIf you installed an earlier version of oc, you cannot use it to complete all of the commands in OKD 4. Download and install the new version of oc.\nInstalling the OpenShift CLI on Linux\n\nYou can install the OpenShift CLI (oc) binary on Linux by using the following procedure.\nProcedure\n\n    Navigate to https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/ and choose the folder for your operating system and architecture.\n\n    Download oc.tar.gz.\n\n    Unpack the archive:\n\n    $ tar xvf <file>\n\n    Place the oc binary in a directory that is on your PATH.\n\n    To check your PATH, execute the following command:\n\n    $ echo $PATH\n\nVerification\n\n    After you install the OpenShift CLI, it is available using the oc command:\n\n    $ oc <command>\n\n"},{"unixMs":1739896376491,"generationUUID":"2a361f6b-a851-4337-807d-f26d8e375b11","type":"apply","textDescription":"main.yml"},{"unixMs":1739896377642,"generationUUID":"8598b390-70b9-4d53-ab83-befcc7326fd1","type":"apply","textDescription":"main.yml"},{"unixMs":1739896601349,"generationUUID":"bc4ee0e5-6197-433b-8889-8ba235b37dd3","type":"composer","textDescription":"Creating the Kubernetes manifest and Ignition config files\n\nBecause you must modify some cluster definition files and manually start the cluster machines, you must generate the Kubernetes manifest and Ignition config files that the cluster needs to configure the machines.\n\nThe installation configuration file transforms into the Kubernetes manifests. The manifests wrap into the Ignition configuration files, which are later used to configure the cluster machines.\n\t\n\n    The Ignition config files that the OKD installation program generates contain certificates that expire after 24 hours, which are then renewed at that time. If the cluster is shut down before renewing the certificates and the cluster is later restarted after the 24 hours have elapsed, the cluster automatically recovers the expired certificates. The exception is that you must manually approve the pending node-bootstrapper certificate signing requests (CSRs) to recover kubelet certificates. See the documentation for Recovering from expired control plane certificates for more information.\n\n    It is recommended that you use Ignition config files within 12 hours after they are generated because the 24-hour certificate rotates from 16 to 22 hours after the cluster is installed. By using the Ignition config files within 12 hours, you can avoid installation failure if the certificate update runs during installation.\n\nPrerequisites\n\n    You obtained the OKD installation program.\n\n    You created the install-config.yaml installation configuration file.\n\nProcedure\n\n    Change to the directory that contains the OKD installation program and generate the Kubernetes manifests for the cluster:\n\n    $ ./openshift-install create manifests --dir <installation_directory> \n\n    \tFor <installation_directory>, specify the installation directory that contains the install-config.yaml file you created.\n    \t\n\n    If you are installing a three-node cluster, skip the following step to allow the control plane nodes to be schedulable.\n    \t\n\n    When you configure control plane nodes from the default unschedulable to schedulable, additional subscriptions are required. This is because control plane nodes then become compute nodes.\n\n    Check that the mastersSchedulable parameter in the <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes manifest file is set to false. This setting prevents pods from being scheduled on the control plane machines:\n\n        Open the <installation_directory>/manifests/cluster-scheduler-02-config.yml file.\n\n        Locate the mastersSchedulable parameter and ensure that it is set to false.\n\n        Save and exit the file.\n\n    To create the Ignition configuration files, run the following command from the directory that contains the installation program:\n\n    $ ./openshift-install create ignition-configs --dir <installation_directory> \n\n    \tFor <installation_directory>, specify the same installation directory.\n\n    Ignition config files are created for the bootstrap, control plane, and compute nodes in the installation directory. The kubeadmin-password and kubeconfig files are created in the ./<installation_directory>/auth directory:\n\n    .\n    ├── auth\n    │   ├── kubeadmin-password\n    │   └── kubeconfig\n    ├── bootstrap.ign\n    ├── master.ign\n    ├── metadata.json\n    └── worker.ign\n\nAdditional resources\n\n    See Recovering from expired control plane certificates for more information about recovering kubelet certificates.\n\nInstalling FCOS and starting the OKD bootstrap process\n\nTo install OKD on bare metal infrastructure that you provision, you must install Fedora CoreOS (FCOS) on the machines. When you install FCOS, you must provide the Ignition config file that was generated by the OKD installation program for the type of machine you are installing. If you have configured suitable networking, DNS, and load balancing infrastructure, the OKD bootstrap process begins automatically after the FCOS machines have rebooted.\n\nTo install FCOS on the machines, follow either the steps to use an ISO image or network PXE booting.\n\t\n\nThe compute node deployment steps included in this installation document are FCOS-specific. If you choose instead to deploy Fedora-based compute nodes, you take responsibility for all operating system life cycle management and maintenance, including performing system updates, applying patches, and completing all other required tasks. Only Fedora 8 compute machines are supported.\n\nYou can configure FCOS during ISO and PXE installations by using the following methods:\n\n    Kernel arguments: You can use kernel arguments to provide installation-specific information. For example, you can specify the locations of the FCOS installation files that you uploaded to your HTTP server and the location of the Ignition config file for the type of node you are installing. For a PXE installation, you can use the APPEND parameter to pass the arguments to the kernel of the live installer. For an ISO installation, you can interrupt the live installation boot process to add the kernel arguments. In both installation cases, you can use special coreos.inst.* arguments to direct the live installer, as well as standard installation boot arguments for turning standard kernel services on or off.\n\n    Ignition configs: OKD Ignition config files (*.ign) are specific to the type of node you are installing. You pass the location of a bootstrap, control plane, or compute node Ignition config file during the FCOS installation so that it takes effect on first boot. In special cases, you can create a separate, limited Ignition config to pass to the live system. That Ignition config could do a certain set of tasks, such as reporting success to a provisioning system after completing installation. This special Ignition config is consumed by the coreos-installer to be applied on first boot of the installed system. Do not provide the standard control plane and compute node Ignition configs to the live ISO directly.\n\n    coreos-installer: You can boot the live ISO installer to a shell prompt, which allows you to prepare the permanent system in a variety of ways before first boot. In particular, you can run the coreos-installer command to identify various artifacts to include, work with disk partitions, and set up networking. In some cases, you can configure features on the live system and copy them to the installed system.\n\nWhether to use an ISO or PXE install depends on your situation. A PXE install requires an available DHCP service and more preparation, but can make the installation process more automated. An ISO install is a more manual process and can be inconvenient if you are setting up more than a few machines.\nInstalling FCOS by using an ISO image\n\nYou can use an ISO image to install FCOS on the machines.\nPrerequisites\n\n    You have created the Ignition config files for your cluster.\n\n    You have configured suitable network, DNS and load balancing infrastructure.\n\n    You have an HTTP server that can be accessed from your computer, and from the machines that you create.\n\n    You have reviewed the Advanced FCOS installation configuration section for different ways to configure features, such as networking and disk partitioning.\n\nProcedure\n\n    Obtain the SHA512 digest for each of your Ignition config files. For example, you can use the following on a system running Linux to get the SHA512 digest for your bootstrap.ign Ignition config file:\n\n    $ sha512sum <installation_directory>/bootstrap.ign\n\n    The digests are provided to the coreos-installer in a later step to validate the authenticity of the Ignition config files on the cluster nodes.\n\n    Upload the bootstrap, control plane, and compute node Ignition config files that the installation program created to your HTTP server. Note the URLs of these files.\n    \t\n\n    You can add or change configuration settings in your Ignition configs before saving them to your HTTP server. If you plan to add more compute machines to your cluster after you finish installation, do not delete these files.\n\n    From the installation host, validate that the Ignition config files are available on the URLs. The following example gets the Ignition config file for the bootstrap node:\n\n    $ curl -k http://<HTTP_server>/bootstrap.ign \n\n    Example output\n\n      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                     Dload  Upload   Total   Spent    Left  Speed\n      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{\"ignition\":{\"version\":\"3.2.0\"},\"passwd\":{\"users\":[{\"name\":\"core\",\"sshAuthorizedKeys\":[\"ssh-rsa...\n\n    Replace bootstrap.ign with master.ign or worker.ign in the command to validate that the Ignition config files for the control plane and compute nodes are also available.\n\n    Although it is possible to obtain the FCOS images that are required for your preferred method of installing operating system instances from the FCOS page, the recommended way to obtain the correct version of your FCOS images are from the output of openshift-install command:\n\n    $ openshift-install coreos print-stream-json | grep '\\.iso[^.]'\n\n    Example output\n\n    \"location\": \"<url>/prod/streams/stable/builds/<release>/x86_64/fedora-coreos-<release>-live.x86_64.iso\",\n\n    \t\n\n    The FCOS images might not change with every release of OKD. You must download images with the highest version that is less than or equal to the OKD version that you install. Use the image versions that match your OKD version if they are available. Use only ISO images for this procedure. FCOS qcow2 images are not supported for this installation type.\n\n    ISO file names resemble the following example:\n\n    fedora-coreos-<version>-live.<architecture>.iso\n\n    Use the ISO to start the FCOS installation. Use one of the following installation options:\n\n        Burn the ISO image to a disk and boot it directly.\n\n        Use ISO redirection by using a lights-out management (LOM) interface.\n\n    Boot the FCOS ISO image without specifying any options or interrupting the live boot sequence. Wait for the installer to boot into a shell prompt in the FCOS live environment.\n    \t\n\n    It is possible to interrupt the FCOS installation boot process to add kernel arguments. However, for this ISO procedure you should use the coreos-installer command as outlined in the following steps, instead of adding kernel arguments.\n\n    Run the coreos-installer command and specify the options that meet your installation requirements. At a minimum, you must specify the URL that points to the Ignition config file for the node type, and the device that you are installing to:\n\n    $ sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest>  \n\n    \tYou must run the coreos-installer command by using sudo, because the core user does not have the required root privileges to perform the installation.\n    \tThe --ignition-hash option is required when the Ignition config file is obtained through an HTTP URL to validate the authenticity of the Ignition config file on the cluster node. <digest> is the Ignition config file SHA512 digest obtained in a preceding step.\n    \t\n\n    If you want to provide your Ignition config files through an HTTPS server that uses TLS, you can add the internal certificate authority (CA) to the system trust store before running coreos-installer.\n\n    The following example initializes a bootstrap node installation to the /dev/sda device. The Ignition config file for the bootstrap node is obtained from an HTTP web server with the IP address 192.168.1.2:\n\n    $ sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b\n\n    Monitor the progress of the FCOS installation on the console of the machine.\n    \t\n\n    Be sure that the installation is successful on each node before commencing with the OKD installation. Observing the installation process can also help to determine the cause of FCOS installation issues that might arise.\n\n    After FCOS installs, you must reboot the system. During the system reboot, it applies the Ignition config file that you specified.\n\n    Check the console output to verify that Ignition ran.\n    Example command\n\n    Ignition: ran on 2022/03/14 14:48:33 UTC (this boot)\n    Ignition: user-provided config was applied\n\n    Continue to create the other machines for your cluster.\n    \t\n\n    You must create the bootstrap and control plane machines at this time. If the control plane machines are not made schedulable, also create at least two compute machines before you install OKD.\n\n    If the required network, DNS, and load balancer infrastructure are in place, the OKD bootstrap process begins automatically after the FCOS nodes have rebooted.\n    \t\n\n    FCOS nodes do not include a default password for the core user. You can access the nodes by running ssh core@<node>.<cluster_name>.<base_domain> as a user with access to the SSH private key that is paired to the public key that you specified in your install_config.yaml file. OKD 4 cluster nodes running FCOS are immutable and rely on Operators to apply cluster changes. Accessing cluster nodes by using SSH is not recommended. However, when investigating installation issues, if the OKD API is not available, or the kubelet is not properly functioning on a target node, SSH access might be required for debugging or disaster recovery.\n"},{"unixMs":1739896610740,"generationUUID":"f27c470d-5ef2-495c-94b3-ba7f7db7b8e5","type":"apply","textDescription":"main.yml"},{"unixMs":1739896753101,"generationUUID":"eea62ac8-abe5-4eae-ada0-350b6a4fa0fe"},{"unixMs":1739896774836,"generationUUID":"c87aa07e-3f80-4883-a5e9-53e340bc042e","type":"composer","textDescription":"populate to vars in the inventory and rename ocp preficed vars to okd"},{"unixMs":1739896785243,"generationUUID":"ca47a694-a8d9-46a9-8b41-71ef4d419666","type":"apply","textDescription":"okd_cluster.yml"},{"unixMs":1739896789722,"generationUUID":"f8ee3702-95e2-4309-9cbc-686fcc80845a","type":"apply","textDescription":"main.yml"},{"unixMs":1739896793957,"generationUUID":"38efd294-b11b-4bb8-b49a-63557a070f19","type":"apply","textDescription":"install-config.yaml.j2"},{"unixMs":1739897135721,"generationUUID":"ab49a335-c058-42d1-b22d-a805f552a928"},{"unixMs":1739897206090,"generationUUID":"aa50b224-2337-43c0-aad4-299ee154c935","type":"composer","textDescription":"the hub cluster should run on these machines using hybrid master, workers\n\nNode Role\n\nMAC\n\nIP\n\nDC\n\nmaster0\n\t\n\n \n\t\n\n188.244.117.200\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster1\n\t\n\n \n\t\n\n188.244.117.223\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster2\n\t\n\n \n\t\n\n188.244.117.142\n\t\n\nHatch ZRH (Bare Metal)"},{"unixMs":1739897216403,"generationUUID":"022c4d83-74b3-4671-a1ba-1a1590bc50ac","type":"apply","textDescription":"okd_cluster.yml"},{"unixMs":1739897219216,"generationUUID":"a8becec8-290e-4555-a017-fc4e88f1385b","type":"apply","textDescription":"main.yml"},{"unixMs":1739897550458,"generationUUID":"cd46cd5c-10ca-49c4-aba9-f5bc1d7cc308","type":"composer","textDescription":"use this release @https://github.com/okd-project/okd/releases/tag/4.17.0-okd-scos.0 "},{"unixMs":1739897558265,"generationUUID":"d061dc46-b10a-4e6f-a8f3-d3b4ad20d5f8","type":"apply","textDescription":"okd_cluster.yml"},{"unixMs":1739897561464,"generationUUID":"255c2835-927e-48f3-b8b0-fed2b3d8e903","type":"apply","textDescription":"main.yml"},{"unixMs":1739899637963,"generationUUID":"41799c02-c16f-4162-b799-bfc915a5b0b7"},{"unixMs":1739899672743,"generationUUID":"e5274866-8fd2-4615-b6d1-42afad454f13","type":"composer","textDescription":"add a readme to the ansible dir to documentthe automation"},{"unixMs":1739899677680,"generationUUID":"dcb67440-832a-4f80-8a0b-ffcc39fa9123","type":"apply","textDescription":"README.md"},{"unixMs":1739899701542,"generationUUID":"aa39a9ae-db94-4b14-9a69-3c08cdedbeb1"},{"unixMs":1739899708327,"generationUUID":"7c44e977-7774-4717-b0cb-b77ada897db1","type":"composer","textDescription":"you only added the first paragraph to the readme"},{"unixMs":1739899712162,"generationUUID":"5a8812c9-19d1-4bf8-8915-3a6156af34ed","type":"apply","textDescription":"README.md"},{"unixMs":1739899753463,"generationUUID":"9f2ee0dc-090c-4716-a25d-262226511789"},{"unixMs":1739899757717,"generationUUID":"e5860b52-c5e5-4351-ad12-f84919b57c9e","type":"composer","textDescription":"nigga u stiull haven't written the content into the file"},{"unixMs":1739899764840,"generationUUID":"7b252e8d-590d-43aa-b6e1-13b2db7078e6","type":"apply","textDescription":"README.md"},{"unixMs":1739899861196,"generationUUID":"2e156152-bed3-4a77-ad02-c4d94bfce8a2","type":"apply","textDescription":"README.md"},{"unixMs":1739899881770,"generationUUID":"0d6703e1-971a-44dc-bf3d-a04e56559151","type":"apply","textDescription":"README.md"},{"unixMs":1739899895516,"generationUUID":"6494b9f3-fd1e-476e-9f9d-fb6e1f5e0ef1","type":"apply","textDescription":"README.md"},{"unixMs":1739899904226,"generationUUID":"c98e1eee-a6bb-4646-929b-7c07f3babf42","type":"apply","textDescription":"README.md"},{"unixMs":1739900043108,"generationUUID":"06920a18-54e7-4dc9-9e10-89dd411d23b8","type":"composer","textDescription":"pls"},{"unixMs":1739900061623,"generationUUID":"9e6ec0dd-7080-48d1-abed-2f57eb1ba43b","type":"apply","textDescription":"README.md"},{"unixMs":1739900062452,"generationUUID":"ce13aec4-7250-4d4f-ac75-5b5b0481258d","type":"apply","textDescription":"ansible.cfg"},{"unixMs":1739900156882,"generationUUID":"d48f87a1-fa4f-42e9-b113-d1407b864f73","type":"composer","textDescription":"fix the hosts.yml"},{"unixMs":1739900162317,"generationUUID":"65d5d004-c645-4cf9-8cf3-3865943e5dc0","type":"apply","textDescription":"hosts.yml"},{"unixMs":1739900186085,"generationUUID":"29c81a66-ecf4-4dd6-aa38-1963fb7be613"},{"unixMs":1739900227107,"generationUUID":"78c14c86-1e66-4591-bf0c-b7f195d1c9bc","type":"composer","textDescription":"structure it so we can add more clusters later: e.g.\n\n- hub\n- eu-north\n- eu-west\n- us-east\n- us-west"},{"unixMs":1739900233994,"generationUUID":"d875dd4b-2b0e-4a85-99c6-337317a13eef","type":"apply","textDescription":"hosts.yml"},{"unixMs":1739900279115,"generationUUID":"d154c0d2-c071-406c-bfa1-d4116ae3130e"},{"unixMs":1739900298344,"generationUUID":"6805f473-e769-4296-9580-08608c87ad8b","type":"composer","textDescription":"I think  the cluster name gets prepended to the domain so the base domain can stay the same"},{"unixMs":1739900305507,"generationUUID":"ad1ccc36-6a7e-47c5-bd44-5b049a36fc23","type":"apply","textDescription":"hosts.yml"},{"unixMs":1739900361509,"generationUUID":"8f0f76cd-78df-4fe8-bdec-b84508f16ead","type":"composer","textDescription":"add a test cluster"},{"unixMs":1739900369173,"generationUUID":"613e7451-59ad-4041-b31d-7b661e648318","type":"apply","textDescription":"hosts.yml"},{"unixMs":1739900471581,"generationUUID":"f7b34628-5a56-4b28-824f-befc7d108b30","type":"composer","textDescription":"pls"},{"unixMs":1739900479553,"generationUUID":"e780564d-21d2-4374-afff-cc1245329087","type":"apply","textDescription":"hosts.yml"},{"unixMs":1739900480837,"generationUUID":"7e6fc809-7d8b-458e-a118-a069ebc8aa77","type":"apply","textDescription":"ansible.cfg"},{"unixMs":1739900543037,"generationUUID":"e5475be0-7575-4c1f-a308-773cbc4875b0"},{"unixMs":1739900544118,"generationUUID":"273bd97a-e843-4716-9cfc-f9d903bc6170","type":"composer","textDescription":"fatal: [master2]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Warning: Permanently added '188.244.117.142' (ED25519) to the list of known hosts.\\r\\nno such identity: /home/josie/.ssh/id_ed25519: No such file or directory\\r\\nroot@188.244.117.142: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\", \"unreachable\": true}"},{"unixMs":1739900551725,"generationUUID":"d27b3fcb-f58d-4729-ab50-43a10c63fedd","type":"apply","textDescription":"hosts.yml"}]


key: composer.composerData
value:
  {"allComposers":[{"type":"head","composerId":"2d8daaa9-a078-48c8-879e-80edb8e61b9c","name":"Prerequisite Tasks for OKD Installation","lastUpdatedAt":1739900544119,"createdAt":1739896231646,"unifiedMode":"edit","forceMode":"edit"},{"type":"head","composerId":"7791532a-c9c6-48f6-acfe-51ffc161cea9","name":"Fixing Linter Errors in Go Code","lastUpdatedAt":1739119311355,"createdAt":1739118675176,"unifiedMode":"edit","forceMode":"edit"},{"type":"head","composerId":"4feb6d7b-6da7-40d0-b8ad-d02fc715fd53","name":"Fixing Kubernetes Deployment Namespace Errors","lastUpdatedAt":1739118299529,"createdAt":1739045645263,"unifiedMode":"edit","forceMode":"edit"},{"type":"head","composerId":"0b4da34c-8951-4598-a0ba-1ecb47aa398e","name":"Fixing DomainSpec Structure for Deployment","lastUpdatedAt":1739045543763,"createdAt":1739029625186,"unifiedMode":"edit","forceMode":"edit"},{"type":"head","composerId":"bdf5644b-e80b-49e4-a55d-6825bc7f94ab","name":"Fixing Go Test Compilation Errors","lastUpdatedAt":1739029589896,"createdAt":1736707269628,"forceMode":"edit","unifiedMode":"edit"},{"type":"head","composerId":"0ae8c7e6-5164-4c98-b238-25cda15ed122","createdAt":1736353849323,"forceMode":"edit","unifiedMode":"edit"},{"type":"head","composerId":"8f2c18be-1fd2-483b-86a5-3908be7073af","createdAt":1736353849323,"forceMode":"chat","unifiedMode":"chat"}],"selectedComposerId":"2d8daaa9-a078-48c8-879e-80edb8e61b9c","selectedChatId":"8f2c18be-1fd2-483b-86a5-3908be7073af","hasMigratedChatData":false,"hasMigratedUseAutoContext":true,"hasMigratedComposerData":true}


key: aiService.prompts
value:
  [{"text":"Run go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/operator\nError: pkg/operator/operator.go:36:3: unknown field Name in struct literal of type v1alpha1.Customer\nError: pkg/operator/operator.go:47:90: undefined: momv1.BillingRecord\nError: pkg/operator/operator.go:49:18: undefined: momv1.BillingRecord\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/mom [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n# github.com/pfeifferj/container-mom-go/pkg/controller\nError: pkg/controller/deployment_controller.go:52:21: customer.Status.BillingStatus undefined (type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".CustomerStatus has no field or method BillingStatus)\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web/portal [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"please fix","commandType":4},{"text":"\n1m 5s\nRun golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions --timeout=5m] in [] ...\n  pkg/operator/operator.go:1: : # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/operator.go:36:3: unknown field Name in struct literal of type v1alpha1.Customer\n  Error: pkg/operator/operator.go:47:90: undefined: momv1.BillingRecord\n  Error: pkg/operator/operator.go:49:18: undefined: momv1.BillingRecord (typecheck)\n  package operator\n  Error: pkg/web/portal/portal.go:11:2: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/operator.go:36:3: unknown field Name in struct literal of type v1alpha1.Customer\n  Error: pkg/operator/operator.go:47:90: undefined: momv1.BillingRecord\n  Error: pkg/operator/operator.go:49:18: undefined: momv1.BillingRecord) (typecheck)\n  \t\"github.com/pfeifferj/container-mom-go/pkg/operator\"\n  \t^\n  Error: pkg/web/portal/handlers.go:209:11: usage.Deployments undefined (type v1alpha1.ResourceUsage has no field or method Deployments) (typecheck)\n  \tif usage.Deployments > limits.Deployments {\n  \t         ^\n  Error: pkg/web/portal/handlers.go:213:34: usage.CPU undefined (type v1alpha1.ResourceUsage has no field or method CPU) (typecheck)\n  \tcpuUsage, err := parseCPU(usage.CPU)\n  \t                                ^\n  Error: pkg/web/portal/handlers.go:228:37: usage.Memory undefined (type v1alpha1.ResourceUsage has no field or method Memory) (typecheck)\n  \tmemUsage, err := parseMemory(usage.Memory)\n  \t                                   ^\n  Error: pkg/web/portal/handlers.go:243:11: usage.Clusters undefined (type v1alpha1.ResourceUsage has no field or method Clusters) (typecheck)\n  \tif usage.Clusters > limits.Clusters {\n  \t         ^\n  Error: cmd/mom/main.go:12:2: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/operator.go:36:3: unknown field Name in struct literal of type v1alpha1.Customer\n  Error: pkg/operator/operator.go:47:90: undefined: momv1.BillingRecord\n  Error: pkg/operator/operator.go:49:18: undefined: momv1.BillingRecord) (typecheck)\n  \t\"github.com/pfeifferj/container-mom-go/pkg/operator\"\n  \t^\n  Error: cmd/mom/main.go:22:21: undefined: config.LoadConfig (typecheck)\n  \tcfg, err := config.LoadConfig(configPath)\n  \t                   ^\n  pkg/controller/customer_controller.go:1: : # github.com/pfeifferj/container-mom-go/pkg/controller\n  Error: pkg/controller/deployment_controller.go:52:21: customer.Status.BillingStatus undefined (type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".CustomerStatus has no field or method BillingStatus) (typecheck)\n  package controller\n  Error: pkg/web/server.go:11:2: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/operator.go:36:3: unknown field Name in struct literal of type v1alpha1.Customer\n  Error: pkg/operator/operator.go:47:90: undefined: momv1.BillingRecord\n  Error: pkg/operator/operator.go:49:18: undefined: momv1.BillingRecord) (typecheck)\n  \t\"github.com/pfeifferj/container-mom-go/pkg/operator\"\n  \t^\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The configuration option `output.format` is deprecated, please use `output.formats`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 64376ms","commandType":4},{"text":"Run go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\nError: pkg/apis/containermom/v1alpha1/types.go:359:6: Customer redeclared in this block\nError: \tpkg/apis/containermom/v1alpha1/customer_types.go:11:6: other declaration of Customer\nError: pkg/apis/containermom/v1alpha1/types.go:368:6: CustomerSpec redeclared in this block\nError: \tpkg/apis/containermom/v1alpha1/customer_types.go:20:6: other declaration of CustomerSpec\nError: pkg/apis/containermom/v1alpha1/types.go:375:6: CustomerStatus redeclared in this block\nError: \tpkg/apis/containermom/v1alpha1/customer_types.go:32:6: other declaration of CustomerStatus\nError: pkg/apis/containermom/v1alpha1/types.go:411:6: ResourceUsage redeclared in this block\nError: \tpkg/apis/containermom/v1alpha1/customer_types.go:51:6: other declaration of ResourceUsage\nError: pkg/apis/containermom/v1alpha1/types.go:420:6: CustomerList redeclared in this block\nError: \tpkg/apis/containermom/v1alpha1/customer_types.go:59:6: other declaration of CustomerList\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/mom [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1 [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web/portal [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/domain [build failed]\nFAIL\nError: Process completed with exit code 1.\n","commandType":4},{"text":"Run go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/operator\nError: pkg/operator/operator.go:36:15: undefined: metav1\nError: pkg/operator/operator.go:46:3: unknown field CPU in struct literal of type v1alpha1.ResourceUsage\nError: pkg/operator/operator.go:47:3: unknown field Memory in struct literal of type v1alpha1.ResourceUsage\nError: pkg/operator/operator.go:48:3: unknown field Deployments in struct literal of type v1alpha1.ResourceUsage\nError: pkg/operator/operator.go:49:3: unknown field Clusters in struct literal of type v1alpha1.ResourceUsage\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/mom [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n# github.com/pfeifferj/container-mom-go/pkg/controller\nError: pkg/controller/deployment_controller.go:52:21: customer.Status.BillingStatus undefined (type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".CustomerStatus has no field or method BillingStatus)\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web/portal [build failed]\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"Run go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/web/portal\nError: pkg/web/portal/handlers.go:168:19: cannot use history (variable of type []*v1alpha1.BillingRecord) as []billing.Invoice value in struct literal\nError: pkg/web/portal/handlers.go:209:11: usage.Deployments undefined (type v1alpha1.ResourceUsage has no field or method Deployments)\nError: pkg/web/portal/handlers.go:243:11: usage.Clusters undefined (type v1alpha1.ResourceUsage has no field or method Clusters)\nError: pkg/web/portal/handlers.go:328:35: limits.CPU undefined (type v1alpha1.ResourceQuota has no field or method CPU)\nError: pkg/web/portal/handlers.go:341:38: limits.Memory undefined (type v1alpha1.ResourceQuota has no field or method Memory)\nError: pkg/web/portal/handlers.go:353:31: usage.Deployments undefined (type *v1alpha1.ResourceUsage has no field or method Deployments)\nError: pkg/web/portal/handlers.go:354:39: usage.Deployments undefined (type *v1alpha1.ResourceUsage has no field or method Deployments)\nError: pkg/web/portal/handlers.go:354:69: limits.MaxDeployments undefined (type v1alpha1.ResourceQuota has no field or method MaxDeployments)\nError: pkg/web/portal/handlers.go:355:31: usage.Clusters undefined (type *v1alpha1.ResourceUsage has no field or method Clusters)\nError: pkg/web/portal/handlers.go:356:39: usage.Clusters undefined (type *v1alpha1.ResourceUsage has no field or method Clusters)\nError: pkg/web/portal/handlers.go:356:39: too many errors\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/mom [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n# github.com/pfeifferj/container-mom-go/pkg/controller\nError: pkg/controller/customer_controller.go:38:34: cannot use usage (variable of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".ResourceUsage) as \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".ResourceRequirements value in assignment\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/web\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/web/portal [build failed]\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":" Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions --timeout=5m] in [] ...\n  pkg/apis/containermom/v1alpha1/customer_types.go:1: : # github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\n  Error: pkg/apis/containermom/v1alpha1/types.go:88:6: ResourceRequirements redeclared in this block\n  Error: \tpkg/apis/containermom/v1alpha1/customer_types.go:60:6: other declaration of ResourceRequirements (typecheck)\n  // +k8s:deepcopy-gen=true\n  Error: pkg/operator/operator.go:6:11: could not import github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1 (-: # github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\n  Error: pkg/apis/containermom/v1alpha1/types.go:88:6: ResourceRequirements redeclared in this block\n  Error: \tpkg/apis/containermom/v1alpha1/customer_types.go:60:6: other declaration of ResourceRequirements) (typecheck)\n  \tv1alpha1 \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\"\n  \t         ^\n  Error: pkg/web/portal/handlers.go:12:2: could not import github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1 (-: # github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\n  Error: pkg/apis/containermom/v1alpha1/types.go:88:6: ResourceRequirements redeclared in this block\n  Error: \tpkg/apis/containermom/v1alpha1/customer_types.go:60:6: other declaration of ResourceRequirements) (typecheck)\n  \t\"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\"\n  \t^\n  Error: pkg/web/portal/handlers.go:134:4: unknown field CustomerName in struct literal of type billing.Invoice (typecheck)\n  \t\t\tCustomerName: record.CustomerName,\n  \t\t\t^\n  Error: cmd/mom/main.go:22:21: undefined: config.LoadConfig (typecheck)\n  \tcfg, err := config.LoadConfig(configPath)\n  \t                   ^\n  Error: pkg/domain/manager.go:14:8: could not import github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1 (-: # github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\n  Error: pkg/apis/containermom/v1alpha1/types.go:88:6: ResourceRequirements redeclared in this block\n  Error: \tpkg/apis/containermom/v1alpha1/customer_types.go:60:6: other declaration of ResourceRequirements) (typecheck)\n  \tmomv1 \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\"\n  \t      ^\n  Error: pkg/controller/customer_controller.go:11:2: could not import github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1 (-: # github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\n  Error: pkg/apis/containermom/v1alpha1/types.go:88:6: ResourceRequirements redeclared in this block\n  Error: \tpkg/apis/containermom/v1alpha1/customer_types.go:60:6: other declaration of ResourceRequirements) (typecheck)\n  \t\"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\"\n  \t^\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The configuration option `output.format` is deprecated, please use `output.formats`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 64614ms","commandType":4},{"text":"pls fix","commandType":4},{"text":"pla fix","commandType":4},{"text":"pls fix","commandType":4},{"text":"I don't think it's necessary","commandType":4},{"text":"create a makefile that will let us run the different components like the web portal, landing page etc locally \n\ne.g. make dev web-portal","commandType":4},{"text":"the web portal has a node backend and frontend; the landing page is also node","commandType":4},{"text":"❯ make dev-all\nStarting all components in development mode...\nmake dev-operator & make dev-portal & make dev-landing\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\nStarting landing page in development mode...\nStarting web portal backend in development mode...\nStarting operator in development mode...\ncd web/landing && npm run dev\ncd web/portal/backend && npm run dev\ngo run cmd/operator/main.go\n/bin/sh: line 1: cd: web/landing: No such file or directory\n/bin/sh: line 1: cd: web/portal/backend: No such file or directory\nmake[1]: *** [Makefile:71: dev-landing] Error 1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\nmake[1]: *** [Makefile:64: dev-portal-backend] Error 1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\nmake: *** [Makefile:137: dev-all] Error 2\ngo: inconsistent vendoring in /home/josie/development/container-mom-go:\n        github.com/lib/pq@v1.10.9: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\n        To ignore the vendor directory, use -mod=readonly or -mod=mod.\n        To sync the vendor directory, run:\n                go mod vendor\nmake[1]: *** [Makefile:56: dev-operator] Error 1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\n","commandType":4},{"text":"use the exisitng dirs portal, portal-backend, landing-page for web. don't run the operator locally for now","commandType":4},{"text":"❯ make dev-all\nStarting all web components in development mode...\nmake dev-portal & make dev-landing\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\nStarting web portal backend in development mode...\nStarting landing page in development mode...\ncd portal-backend && npm run dev\ncd landing-page && npm run dev\n\n> container-mom-api@1.0.0 dev /home/josie/development/container-mom-go/portal-backend\n> nodemon server.js\n\nnpm ERR! missing script: dev\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR!     /home/josie/.npm/_logs/2025-01-23T09_21_42_014Z-debug.log\nmake[1]: *** [Makefile:50: dev-landing] Error 1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\nmake: *** [Makefile:95: dev-all] Error 2\n ~/development/container-mom-go  main !2 ?2  [nodemon] 2.0.22                                                                                                                                                                     2 х  10:21:42 AM\n[nodemon] to restart at any time, enter `rs`\n[nodemon] watching path(s): *.*\n[nodemon] watching extensions: js,mjs,json\n[nodemon] starting `node server.js`\nUsing 'form_post' for response_mode may cause issues for you logging in over http, see https://github.com/auth0/express-openid-connect/blob/master/FAQ.md\nServer running on port 3001\nConnected to MongoDB\n\n\n","commandType":4},{"text":"I want you to review everything in the manifests dir and point out any reduncancies or illogical things","commandType":4},{"text":"here","commandType":4},{"text":"make names consistent","commandType":4},{"text":"Run go test -v ./...\ngo: inconsistent vendoring in /home/runner/work/container-mom-go/container-mom-go:\n\tgithub.com/lib/pq@v1.10.9: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\n\tTo ignore the vendor directory, use -mod=readonly or -mod=mod.\n\tTo sync the vendor directory, run:\n\t\tgo mod vendor\nError: Process completed with exit code 1.","commandType":4},{"text":"check wahy things failed and ask me before chosing a way to fix\n\n","commandType":4},{"text":"what is the purpose of the mongodeployment?","commandType":4},{"text":"ah I remember. the web portal stores deployment info in mongodb which is the source of truth for the operator","commandType":4},{"text":"1","commandType":4},{"text":"pls fix","commandType":4},{"text":"2","commandType":4},{"text":"pls\n\n","commandType":4},{"text":"dp both","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: pkg/operator/deployment_controller.go:92:20: Error return value of `cursor.Close` is not checked (errcheck)\n  \tdefer cursor.Close(ctx)\n  \t                  ^\n  Error: pkg/operator/deployment_reconciler.go:13:6: exported: exported type DeploymentReconciler should have comment or be unexported (revive)\n  type DeploymentReconciler struct {\n       ^\n  Error: pkg/operator/deployment_reconciler.go:17:1: exported: exported function NewDeploymentReconciler should have comment or be unexported (revive)\n  func NewDeploymentReconciler(client client.Client) *DeploymentReconciler {\n  ^\n  Error: pkg/operator/operator.go:102:1: exported: exported method Operator.TriggerDeploymentReconcile should have comment or be unexported (revive)\n  func (o *Operator) TriggerDeploymentReconcile(ctx context.Context, deploymentID string) error {\n  ^\n  Error: pkg/operator/deployment_controller.go:16:6: exported: exported type DeploymentController should have comment or be unexported (revive)\n  type DeploymentController struct {\n       ^\n  Error: pkg/operator/deployment_controller.go:23:1: exported: exported function NewDeploymentController should have comment or be unexported (revive)\n  func NewDeploymentController(mongodb *mongo.Client, reconciler *DeploymentReconciler) *DeploymentController {\n  ^\n  Error: pkg/operator/deployment_controller.go:32:1: exported: exported method DeploymentController.Start should have comment or be unexported (revive)\n  func (c *DeploymentController) Start(ctx context.Context) error {\n  ^\n  Error: pkg/server/server.go:10:6: exported: exported type Server should have comment or be unexported (revive)\n  type Server struct {\n       ^\n  Error: pkg/server/server.go:11:2: field `router` is unused (unused)\n  \trouter   *chi.Mux\n  \t^\n  Error: pkg/server/server.go:12:2: field `operator` is unused (unused)\n  \toperator *operator.Operator\n  \t^\n  Error: pkg/server/server.go:15:18: func `(*Server).setupRoutes` is unused (unused)\n  func (s *Server) setupRoutes() {\n                   ^\n  Error: pkg/server/server.go:35:18: func `(*Server).handleCreateDeployment` is unused (unused)\n  func (s *Server) handleCreateDeployment(w http.ResponseWriter, r *http.Request) {\n                   ^\n  Error: pkg/server/server.go:20:18: func `(*Server).handleReconcileDeployment` is unused (unused)\n  func (s *Server) handleReconcileDeployment(w http.ResponseWriter, r *http.Request) {\n                   ^\n  Error: pkg/operator/deployment_controller.go:19:14: SA1019: workqueue.RateLimitingInterface is deprecated: Use TypedRateLimitingInterface instead. (staticcheck)\n  \tqueue       workqueue.RateLimitingInterface\n  \t            ^\n  Error: pkg/operator/deployment_controller.go:27:16: SA1019: workqueue.NewRateLimitingQueue is deprecated: Use NewTypedRateLimitingQueue instead. (staticcheck)\n  \t\tqueue:       workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()),\n  \t\t             ^\n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The configuration option `output.format` is deprecated, please use `output.formats`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  Error: issues found\n  Ran golangci-lint in 66523ms","commandType":4},{"text":"Run go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/operator\nError: pkg/operator/deployment_controller.go:29:60: cannot use workqueue.DefaultControllerRateLimiter() (value of type workqueue.RateLimiter) as workqueue.TypedRateLimiter[string] value in argument to workqueue.NewTypedRateLimitingQueue[string]: workqueue.RateLimiter does not implement workqueue.TypedRateLimiter[string] (wrong type for method Forget)\n\t\thave Forget(any)\n\t\twant Forget(string)\nError: pkg/operator/deployment_controller.go:55:24: invalid operation: obj (variable of type string) is not an interface\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/operator [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/controller\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/server [build failed]\nFAIL\nError: Process completed with exit code 1.\n","commandType":4},{"text":"\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: pkg/operator/deployment_controller.go:20:14: SA1019: workqueue.RateLimitingInterface is deprecated: Use TypedRateLimitingInterface instead. (staticcheck)\n  \tqueue       workqueue.RateLimitingInterface\n  \t            ^\n  Error: pkg/operator/deployment_controller.go:29:16: SA1019: workqueue.NewRateLimitingQueue is deprecated: Use NewTypedRateLimitingQueue instead. (staticcheck)\n  \t\tqueue:       workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()),\n  \t\t             ^\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The configuration option `output.format` is deprecated, please use `output.formats`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 3504ms","commandType":4},{"text":"Run go test -v ./...\n  go test -v ./...\n  shell: /usr/bin/bash -e {0}\nError: pkg/operator/deployment_controller.go:12:2: cannot find module providing package k8s.io/client-go/util/workqueue/v2: import lookup disabled by -mod=vendor\n\t(Go version in go.mod is at least 1.14 and vendor directory exists.)\nError: Process completed with exit code 1.\n","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\n  Checking for go.mod: go.mod\n  Received 205520896 of 559676997 (36.7%), 196.0 MBs/sec\n  Received 461373440 of 559676997 (82.4%), 219.7 MBs/sec\n  Cache Size: ~534 MB (559676997 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/e309d7e5-e28c-484a-97f0-473dac035565/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 559676997 of 559676997 (100.0%), 177.6 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists","commandType":4},{"text":"Run go test -v ./...\n  go test -v ./...\n  shell: /usr/bin/bash -e {0}\nError: pkg/operator/deployment_controller.go:13:2: cannot find module providing package sigs.k8s.io/controller-runtime/pkg/queue: import lookup disabled by -mod=vendor\n\t(Go version in go.mod is at least 1.14 and vendor directory exists.)\nError: Process completed with exit code 1.","commandType":4},{"text":"check the manifests. how do we roll everything out?","commandType":4},{"text":"we have no overlays","commandType":4},{"text":"pls","commandType":4},{"text":"does the main operator really need the billing secret?","commandType":4},{"text":"Error: secret \"container-mom-mongodb\" not found","commandType":4},{"text":"MONGODB_URI=mongodb+srv://pfeifferj:4971AkAr80oxoQL7@dev.47yp0.mongodb.net/container-mom?retryWrites=true&w=majority ","commandType":4},{"text":"the operator is not reconciling deployments from mongodb","commandType":4},{"text":"pls","commandType":4},{"text":"Run go test -v ./...\n  go test -v ./...\n  shell: /usr/bin/bash -e {0}\n# github.com/pfeifferj/container-mom-go/pkg/operator\nError: pkg/operator/operator.go:40:66: cfg.MongoURI undefined (type *\"github.com/pfeifferj/container-mom-go/pkg/config\".Config has no field or method MongoURI)\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/operator [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/controller\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/server [build failed]\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"container-mom-operator-56cdd9fd4c-dzwwpNamespaceNScontainer-mom-system\nJan 26, 2025, 10:04 AM\nGenerated from kubelet on worker2\n11 times in the last 1 minute\nReadiness probe failed: Get \"http://10.130.2.55:8080/readyz\": dial tcp 10.130.2.55:8080: connect: connection refused\nPodPcontainer-mom-operator-56cdd9fd4c-dzwwpNamespaceNScontainer-mom-system\nJan 26, 2025, 10:04 AM\nGenerated from kubelet on worker2\n5 times in the last 1 minute\nLiveness probe failed: Get \"http://10.130.2.55:8080/healthz\": dial tcp 10.130.2.55:8080: connect: connection refused","commandType":4},{"text":"\nRun go test -v ./...\n# github.com/pfeifferj/container-mom-go/pkg/operator\nError: pkg/operator/operator.go:73:13: undefined: healthHandler\nFAIL\tgithub.com/pfeifferj/container-mom-go/cmd/operator [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/controller\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/server [build failed]\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"pls","commandType":4},{"text":"Run go test -v ./...\nError: pkg/operator/operator.go:11:2: cannot find module providing package github.com/pfeifferj/container-mom-go/pkg/interfaces: import lookup disabled by -mod=vendor\n\t(Go version in go.mod is at least 1.14 and vendor directory exists.)\nError: pkg/operator/operator.go:12:2: cannot find module providing package github.com/pfeifferj/container-mom-go/pkg/operator/health: import lookup disabled by -mod=vendor\n\t(Go version in go.mod is at least 1.14 and vendor directory exists.)\nError: Process completed with exit code 1.","commandType":4},{"text":" with:\n    version: latest\n    github-token: ***\n    only-new-issues: false\n    skip-cache: false\n    skip-pkg-cache: false\n    skip-build-cache: false\n    install-mode: binary\nprepare environment\n  Checking for go.mod: go.mod\n  Received 180355072 of 559676997 (32.2%), 171.8 MBs/sec\n  Received 385875968 of 559676997 (68.9%), 183.4 MBs/sec\n  Received 555482693 of 559676997 (99.3%), 176.2 MBs/sec\n  Cache Size: ~534 MB (559676997 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/f367d98a-eb52-477c-8e0d-e6381149ef81/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 559676997 of 559676997 (100.0%), 133.2 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_struct.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_types.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/operation_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_case.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_map.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_document.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_results.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/build-oss-fuzz-corpus/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testoidcauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testentauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/parse-api-report/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testkms/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/godriver-benchmark/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testaws/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testatlas/atlas_test.go: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/vendor/modules.txt: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/.gitmodules: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/.evergreen/run-deployed-lambda-aws-tests.sh: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/.evergreen/krb5.config: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/.evergreen/run-mongodb-aws-test.sh: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/.evergreen/run-mongodb-aws-ecs-test.sh: Cannot open: File exists","commandType":4},{"text":"the error is related to the go code not manifests lol","commandType":4},{"text":"the linter's still fucked\n\nRun golangci/golangci-lint-action@v3\nprepare environment\n  Checking for go.mod: go.mod\n  Received 0 of 559676997 (0.0%), 0.0 MBs/sec\n  Received 75497472 of 559676997 (13.5%), 36.0 MBs/sec\n  Received 218103808 of 559676997 (39.0%), 69.3 MBs/sec\n  Received 339738624 of 559676997 (60.7%), 81.0 MBs/sec\n  Received 486539264 of 559676997 (86.9%), 92.8 MBs/sec\n  Cache Size: ~534 MB (559676997 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/e5c691dd-9953-4562-a065-1bd8c6531847/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 559676997 of 559676997 (100.0%), 88.9 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_struct.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_types.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/operation_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_case.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_map.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_document.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_results.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/build-oss-fuzz-corpus/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testoidcauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testentauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/parse-api-report/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testkms/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/godriver-benchmark/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testaws/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testatlas/atlas_test.go: Cannot open: File exists","commandType":4},{"text":"pls","commandType":4},{"text":"pls ","commandType":4},{"text":"pls fix\n\n","commandType":4},{"text":"pls fix","commandType":4},{"text":"pls","commandType":4},{"text":"the ci linter is still fucked\n\nRun golangci/golangci-lint-action@v3\nprepare environment\n  Checking for go.mod: go.mod\n  Received 192937984 of 561429633 (34.4%), 182.9 MBs/sec\n  Received 448790528 of 561429633 (79.9%), 213.3 MBs/sec\n  Cache Size: ~535 MB (561429633 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/c86866f1-9a02-4c36-b69d-cc0ffb1fd846/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 561429633 of 561429633 (100.0%), 178.0 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_struct.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_types.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/operation_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_case.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_map.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_document.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_results.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/build-oss-fuzz-corpus/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testoidcauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testentauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/parse-api-report/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testkms/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/godriver-benchmark/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testaws/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testatlas/atlas_test.go: Cannot open: File exists","commandType":4},{"text":"csn the linter just ignore external modules?","commandType":4},{"text":"this is still not working\n\n\nPodPcontainer-mom-operator-56cdd9fd4c-fbwgbNamespaceNScontainer-mom-system\nJan 26, 2025, 10:54 AM\nGenerated from kubelet on worker2\n5 times in the last 1 minute\nLiveness probe failed: Get \"http://10.130.2.59:8080/healthz\": dial tcp 10.130.2.59:8080: connect: connection refused\nPodPcontainer-mom-operator-56cdd9fd4c-fbwgbNamespaceNScontainer-mom-system\nJan 26, 2025, 10:54 AM\nGenerated from kubelet on worker2\n11 times in the last 1 minute\nReadiness probe failed: Get \"http://10.130.2.59:8080/readyz\": dial tcp 10.130.2.59:8080: connect: connection refused","commandType":4},{"text":"the endpoints are still not working and nothing is getting logged","commandType":4},{"text":"pls","commandType":4},{"text":"[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed.\nDetected at:\n> goroutine 1 [running]:\n> runtime/debug.Stack()\n> /usr/local/go/src/runtime/debug/stack.go:24 +0x5e\n> sigs.k8s.io/controller-runtime/pkg/log.eventuallyFulfillRoot()\n> /app/vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:60 +0xcd\n> sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Error(0xc000205a00, {0x1bf8180, 0xc0007177a0}, {0x192d4ce, 0x16}, {0x0, 0x0, 0x0})\n> /app/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:139 +0x5d\n> github.com/go-logr/logr.Logger.Error({{0x1c12ff0?, 0xc000205a00?}, 0x40?}, {0x1bf8180, 0xc0007177a0}, {0x192d4ce, 0x16}, {0x0, 0x0, 0x0})\n> /app/vendor/github.com/go-logr/logr/logr.go:301 +0xec\n> github.com/pfeifferj/container-mom-go/pkg/operator.New(0xc0001b0f00, 0xc0005409e0)\n> /app/pkg/operator/operator.go:58 +0x1ad\n> main.main()\n> /app/cmd/operator/main.go:28 +0x13c\n2025/01/26 11:14:22 Starting HTTP server on :8080\n2025/01/26 11:14:22 Starting operator\npanic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x15eebe5]\ngoroutine 1981 [running]:\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run(0x0, {0x1c0f290, 0xc0000fd6d0})\n/app/pkg/operator/operator.go:84 +0xe5\nmain.main.func4()\n/app/cmd/operator/main.go:54 +0x9b\ncreated by main.main in goroutine 1\n/app/cmd/operator/main.go:52 +0x25f","commandType":4},{"text":"pls","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T11:44:02Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:68\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T11:44:02Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T13:00:40Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: context deadline exceeded, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error:  connection(dev-shard-00-01.47yp0.mongodb.net:27017[-26]) socket was unexpectedly closed: EOF: connection(dev-shard-00-01.47yp0.mongodb.net:27017[-26]) socket was unexpectedly closed: EOF }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error:  connection(dev-shard-00-00.47yp0.mongodb.net:27017[-29]) socket was unexpectedly closed: EOF: connection(dev-shard-00-00.47yp0.mongodb.net:27017[-29]) socket was unexpectedly closed: EOF }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error:  connection(dev-shard-00-02.47yp0.mongodb.net:27017[-28]) socket was unexpectedly closed: EOF: connection(dev-shard-00-02.47yp0.mongodb.net:27017[-28]) socket was unexpectedly closed: EOF }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:73\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:00:40Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\npls","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T13:25:55Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:84\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:25:55Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n\n\nstill lokks the same","commandType":4},{"text":"still:\n\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:37:25Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:78\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:37:25Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T13:41:02Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:78\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:41:02Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n\n\npls","commandType":4},{"text":"connecting to mongodb should be erelatively straight forward?\n\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:51:54Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:82\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T13:51:54Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n\n\n","commandType":4},{"text":"check the docs\n\n// Connects to MongoDB and sets a Stable API version\npackage main\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"go.mongodb.org/mongo-driver/v2/bson\"\n\t\"go.mongodb.org/mongo-driver/v2/mongo\"\n\t\"go.mongodb.org/mongo-driver/v2/mongo/options\"\n)\nfunc main() {\n\tvar uri string\n\tif uri = os.Getenv(\"MONGODB_URI\"); uri == \"\" {\n\t\tlog.Fatal(\"You must set your 'MONGODB_URI' environment variable. See\\n\\t https://docs.mongodb.com/drivers/go/current/usage-examples/\")\n\t}\n\t// Use the SetServerAPIOptions() method to set the Stable API version to 1\n\tserverAPI := options.ServerAPI(options.ServerAPIVersion1)\n\topts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI)\n\t// Create a new client and connect to the server\n\tclient, err := mongo.Connect(opts)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer func() {\n\t\tif err = client.Disconnect(context.TODO()); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}()\n\t// Send a ping to confirm a successful connection\n\tvar result bson.M\n\tif err := client.Database(\"admin\").RunCommand(context.TODO(), bson.D{{\"ping\", 1}}).Decode(&result); err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(\"Pinged your deployment. You successfully connected to MongoDB!\")\n}\n\n@https://www.mongodb.com/docs/drivers/go/current/fundamentals/connections/connection-guide/ ","commandType":4},{"text":"pls","commandType":4},{"text":"do smth like this","commandType":4},{"text":"\n\n\nimport (\n  \"context\"\n  \"fmt\"\n\n  \"go.mongodb.org/mongo-driver/bson\"\n  \"go.mongodb.org/mongo-driver/mongo\"\n  \"go.mongodb.org/mongo-driver/mongo/options\"\n)\n\nfunc main() {\n  // Use the SetServerAPIOptions() method to set the version of the Stable API on the client\n  serverAPI := options.ServerAPI(options.ServerAPIVersion1)\n  opts := options.Client().ApplyURI(\"mongodb+srv://pfeifferj:<db_password>@dev.47yp0.mongodb.net/?retryWrites=true&w=majority&appName=dev\").SetServerAPIOptions(serverAPI)\n\n  // Create a new client and connect to the server\n  client, err := mongo.Connect(context.TODO(), opts)\n  if err != nil {\n    panic(err)\n  }\n\n  defer func() {\n    if err = client.Disconnect(context.TODO()); err != nil {\n      panic(err)\n    }\n  }()\n\n  // Send a ping to confirm a successful connection\n  if err := client.Database(\"admin\").RunCommand(context.TODO(), bson.D{{\"ping\", 1}}).Err(); err != nil {\n    panic(err)\n  }\n  fmt.Println(\"Pinged your deployment. You successfully connected to MongoDB!\")\n}\n","commandType":4},{"text":"pls","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T16:00:26Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:81\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T16:00:26Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T17:34:05Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:83\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T17:34:05Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"your tls issue could be bc of how you're initializing the mongo client in your go code vs how your node app does it. here's what stands out:\n\n    InsecureSkipVerify: true: this disables cert validation. maybe your nodejs app uses the proper certs or trusts the ca, while the go app doesn't. avoid using InsecureSkipVerify in prod. instead:\n        supply a valid ca bundle.\n        ensure your app trusts mongodb's tls cert.\n\n    tls version mismatch: node may negotiate tls1.3, but your go app is pinned to tls1.2 (MinVersion: tls.VersionTLS12). let mongodb and the client auto-negotiate versions.\n\n    srv records: if your MONGODB_URI uses mongodb+srv://, confirm you're using a dns-compatible uri and your env properly resolves those srv records.\n\n    server api options: node's mongo driver may default to server api v1; your go app sets it explicitly. confirm both apps target the same api version.\n\nquick fix attempt\n\n    remove SetTLSConfig entirely and let ApplyURI handle tls.\n    ensure cfg.MongoURI works w/ srv or includes all replica set hosts explicitly.\n\nalternate debugging\n\n    log cfg.MongoURI and manually test w/ mongosh or a gui.\n    compare how node and go resolve replica set members. log what the go driver discovers using mongoClient.Options().","commandType":4},{"text":"pls","commandType":4},{"text":"why is my atals shit still not working? the portal backend seems to work fine\n\n\n{\"level\":\"error\",\"ts\":\"2025-01-26T18:58:17Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:81\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T18:58:17Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-01-26T19:10:37Z\",\"msg\":\"connecting to MongoDB\",\"uri\":\"mongodb+srv://[masked]@dev.47yp0.mongodb.net/container-mom\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T19:10:47Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:93\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T19:10:47Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"look how simple it is in node","commandType":4},{"text":"Connect to dev\n\nSet up connection security\n\n    Choose a connection method\n    3\n    Connect\n\nConnecting with MongoDB Driver\n1. Select your driver and version\n\nWe recommend installing and using the latest driver version.\nDriver\nVersion\n2. Install your driver\nRun the following on the command line\n\ngo get go.mongodb.org/mongo-driver/mongo\n\nView MongoDB Go Driver installation instructions.\n3. Add your connection string into your application code\n\nUse this connection string in your application\n\nView full code sample\n\nimport (\n  \"context\"\n  \"fmt\"\n  \"go.mongodb.org/mongo-driver/bson\"\n  \"go.mongodb.org/mongo-driver/mongo\"\n  \"go.mongodb.org/mongo-driver/mongo/options\"\n)\nfunc main() {\n  // Use the SetServerAPIOptions() method to set the version of the Stable API on the client\n  serverAPI := options.ServerAPI(options.ServerAPIVersion1)\n  opts := options.Client().ApplyURI(\"mongodb+srv://pfeifferj:<db_password>@dev.47yp0.mongodb.net/?retryWrites=true&w=majority&appName=dev\").SetServerAPIOptions(serverAPI)\n  // Create a new client and connect to the server\n  client, err := mongo.Connect(context.TODO(), opts)\n  if err != nil {\n    panic(err)\n  }\n  defer func() {\n    if err = client.Disconnect(context.TODO()); err != nil {\n      panic(err)\n    }\n  }()\n  // Send a ping to confirm a successful connection\n  if err := client.Database(\"admin\").RunCommand(context.TODO(), bson.D{{\"ping\", 1}}).Err(); err != nil {\n    panic(err)\n  }\n  fmt.Println(\"Pinged your deployment. You successfully connected to MongoDB!\")\n}\n\nReplace <db_password> with the password for the pfeifferj database user. Ensure any option params are URL encoded.","commandType":4},{"text":"the initial connect is still broken\n\n\n{\"level\":\"error\",\"ts\":\"2025-01-26T19:45:10Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:80\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T19:45:10Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","commandType":4},{"text":"{\"level\":\"error\",\"ts\":\"2025-01-26T20:00:17Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:74\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-26T20:00:17Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n\n\ncan we just ignore the tls bs","commandType":4},{"text":"pls","commandType":4},{"text":"Successfully connected to Atlas\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8080\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8080\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"deployment controller started successfully\"}\n{\"level\":\"error\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"HTTP server failed\",\"error\":\"listen tcp :8080: bind: address already in use\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run.func2\\n\\t/app/pkg/operator/operator.go:133\"}\n{\"level\":\"error\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"failed to disconnect from MongoDB\",\"error\":\"client is disconnected\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run.func1\\n\\t/app/pkg/operator/operator.go:104\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:158\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n","commandType":4},{"text":"multiple parts of the operator are tyring to use the same port it seems","commandType":4},{"text":"\n\nSuccessfully connected to Atlas\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8080\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8080\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"deployment controller started successfully\"}\n{\"level\":\"error\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"HTTP server failed\",\"error\":\"listen tcp :8080: bind: address already in use\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run.func2\\n\\t/app/pkg/operator/operator.go:133\"}\n{\"level\":\"error\",\"ts\":\"2025-01-27T09:16:32Z\",\"msg\":\"failed to disconnect from MongoDB\",\"error\":\"client is disconnected\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run.func1\\n\\t/app/pkg/operator/operator.go:104\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:158\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n","commandType":4},{"text":"somehow this seems to have broken the mogodb connection again\n\n{\"level\":\"error\",\"ts\":\"2025-01-27T19:11:34Z\",\"msg\":\"failed to ping MongoDB\",\"error\":\"server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: dev-shard-00-01.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-02.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, { Addr: dev-shard-00-00.47yp0.mongodb.net:27017, Type: Unknown, Last error: remote error: tls: internal error }, ] }\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.New\\n\\t/app/pkg/operator/operator.go:67\\nmain.main\\n\\t/app/cmd/operator/main.go:34\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n{\"level\":\"error\",\"ts\":\"2025-01-27T19:11:34Z\",\"logger\":\"setup\",\"msg\":\"Failed to create operator\",\"stacktrace\":\"main.main\\n\\t/app/cmd/operator/main.go:36\\nruntime.main\\n\\t/usr/local/go/src/runtime/proc.go:271\"}\n","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/01/27 19:50:04 [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/01/27 19:50:04 [emerg] 1#1: mkdir() \"/var/cache/nginx/client_temp\" failed (13: Permission denied)\nnginx: [emerg] mkdir() \"/var/cache/nginx/client_temp\" failed (13: Permission denied)","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/01/27 20:05:12 [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/01/27 20:05:12 [emerg] 1#1: mkdir() \"/var/cache/nginx/client_temp\" failed (13: Permission denied)\nnginx: [emerg] mkdir() \"/var/cache/nginx/client_temp\" failed (13: Permission denied)","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/01/27 20:24:00 [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/01/27 20:24:00 [emerg] 1#1: bind() to 0.0.0.0:80 failed (13: Permission denied)\nnginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)\n\n\nI'm running this on openshift btw. make changes for this to be as straigh forward as possible and simplify the dockerfile as much as possible","commandType":4},{"text":"it's coming up now but nothing is served on the route\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/01/27 20:42:10 [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/01/27 20:42:10 [notice] 1#1: using the \"epoll\" event method\n2025/01/27 20:42:10 [notice] 1#1: nginx/1.27.3\n2025/01/27 20:42:10 [notice] 1#1: built by gcc 13.2.1 20240309 (Alpine 13.2.1_git20240309)\n2025/01/27 20:42:10 [notice] 1#1: OS: Linux 5.14.0-427.40.1.el9_4.x86_64\n2025/01/27 20:42:10 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576\n2025/01/27 20:42:10 [notice] 1#1: start worker processes\n2025/01/27 20:42:10 [notice] 1#1: start worker process 21\n2025/01/27 20:42:10 [notice] 1#1: start worker process 22\n2025/01/27 20:42:10 [notice] 1#1: start worker process 23\n2025/01/27 20:42:10 [notice] 1#1: start worker process 24\n2025/01/27 20:42:10 [notice] 1#1: start worker process 25\n2025/01/27 20:42:10 [notice] 1#1: start worker process 26\n2025/01/27 20:42:10 [notice] 1#1: start worker process 27\n2025/01/27 20:42:10 [notice] 1#1: start worker process 28\n2025/01/27 20:42:10 [notice] 1#1: start worker process 29\n2025/01/27 20:42:10 [notice] 1#1: start worker process 30","commandType":4},{"text":"still the same\n\n~ $ lsof\n1       /usr/sbin/nginx 0       /dev/null\n1       /usr/sbin/nginx 1       pipe:[741381445]\n1       /usr/sbin/nginx 2       pipe:[741381446]\n1       /usr/sbin/nginx 3       socket:[741380694]\n1       /usr/sbin/nginx 4       pipe:[741381446]\n1       /usr/sbin/nginx 5       pipe:[741381445]\n1       /usr/sbin/nginx 6       pipe:[741381445]\n1       /usr/sbin/nginx 7       socket:[741380693]\n1       /usr/sbin/nginx 8       socket:[741380695]\n1       /usr/sbin/nginx 9       socket:[741380696]\n1       /usr/sbin/nginx 10      socket:[741380697]\n1       /usr/sbin/nginx 11      socket:[741380698]\n1       /usr/sbin/nginx 12      socket:[741380699]\n1       /usr/sbin/nginx 13      socket:[741380700]\n1       /usr/sbin/nginx 14      socket:[741380701]\n1       /usr/sbin/nginx 15      socket:[741380702]\n1       /usr/sbin/nginx 16      socket:[741380703]\n1       /usr/sbin/nginx 17      socket:[741380704]\n1       /usr/sbin/nginx 18      socket:[741380705]\n1       /usr/sbin/nginx 19      socket:[741380706]\n1       /usr/sbin/nginx 20      socket:[741380707]\n1       /usr/sbin/nginx 21      socket:[741380708]\n1       /usr/sbin/nginx 22      socket:[741380709]\n1       /usr/sbin/nginx 23      socket:[741380710]\n1       /usr/sbin/nginx 24      socket:[741380711]\n1       /usr/sbin/nginx 25      socket:[741380712]\n1       /usr/sbin/nginx 26      socket:[741380713]\n21      /usr/sbin/nginx 0       /dev/null\n21      /usr/sbin/nginx 1       pipe:[741381445]\n21      /usr/sbin/nginx 2       pipe:[741381446]\n21      /usr/sbin/nginx 3       socket:[741380696]\n21      /usr/sbin/nginx 4       pipe:[741381446]\n21      /usr/sbin/nginx 5       pipe:[741381445]\n21      /usr/sbin/nginx 6       pipe:[741381445]\n21      /usr/sbin/nginx 7       socket:[741380693]\n21      /usr/sbin/nginx 8       socket:[741380695]\n21      /usr/sbin/nginx 9       anon_inode:[eventpoll]\n21      /usr/sbin/nginx 10      anon_inode:[eventfd]\n21      /usr/sbin/nginx 11      anon_inode:[eventfd]\n21      /usr/sbin/nginx 12      socket:[741380698]\n21      /usr/sbin/nginx 13      socket:[741380700]\n21      /usr/sbin/nginx 14      socket:[741380702]\n21      /usr/sbin/nginx 15      socket:[741380704]\n21      /usr/sbin/nginx 16      socket:[741380706]\n21      /usr/sbin/nginx 17      socket:[741380708]\n21      /usr/sbin/nginx 18      socket:[741380710]\n21      /usr/sbin/nginx 19      socket:[741380712]\n22      /usr/sbin/nginx 0       /dev/null\n22      /usr/sbin/nginx 1       pipe:[741381445]\n22      /usr/sbin/nginx 2       pipe:[741381446]\n22      /usr/sbin/nginx 3       socket:[741380694]\n22      /usr/sbin/nginx 4       pipe:[741381446]\n22      /usr/sbin/nginx 5       pipe:[741381445]\n22      /usr/sbin/nginx 6       pipe:[741381445]\n22      /usr/sbin/nginx 7       socket:[741380693]\n22      /usr/sbin/nginx 8       socket:[741380698]\n22      /usr/sbin/nginx 9       socket:[741380700]\n22      /usr/sbin/nginx 10      socket:[741380697]\n22      /usr/sbin/nginx 11      anon_inode:[eventpoll]\n22      /usr/sbin/nginx 12      anon_inode:[eventfd]\n22      /usr/sbin/nginx 13      anon_inode:[eventfd]\n22      /usr/sbin/nginx 14      socket:[741380702]\n22      /usr/sbin/nginx 15      socket:[741380704]\n22      /usr/sbin/nginx 16      socket:[741380706]\n22      /usr/sbin/nginx 17      socket:[741380708]\n22      /usr/sbin/nginx 18      socket:[741380710]\n22      /usr/sbin/nginx 19      socket:[741380712]\n23      /usr/sbin/nginx 0       /dev/null\n23      /usr/sbin/nginx 1       pipe:[741381445]\n23      /usr/sbin/nginx 2       pipe:[741381446]\n23      /usr/sbin/nginx 3       socket:[741380694]\n23      /usr/sbin/nginx 4       pipe:[741381446]\n23      /usr/sbin/nginx 5       pipe:[741381445]\n23      /usr/sbin/nginx 6       pipe:[741381445]\n23      /usr/sbin/nginx 7       socket:[741380693]\n23      /usr/sbin/nginx 8       socket:[741380700]\n23      /usr/sbin/nginx 9       socket:[741380696]\n23      /usr/sbin/nginx 10      socket:[741380702]\n23      /usr/sbin/nginx 11      socket:[741380704]\n23      /usr/sbin/nginx 12      socket:[741380699]\n23      /usr/sbin/nginx 13      anon_inode:[eventpoll]\n23      /usr/sbin/nginx 14      anon_inode:[eventfd]\n23      /usr/sbin/nginx 15      anon_inode:[eventfd]\n23      /usr/sbin/nginx 16      socket:[741380706]\n23      /usr/sbin/nginx 17      socket:[741380708]\n23      /usr/sbin/nginx 18      socket:[741380710]\n23      /usr/sbin/nginx 19      socket:[741380712]\n24      /usr/sbin/nginx 0       /dev/null\n24      /usr/sbin/nginx 1       pipe:[741381445]\n24      /usr/sbin/nginx 2       pipe:[741381446]\n24      /usr/sbin/nginx 3       socket:[741380694]\n24      /usr/sbin/nginx 4       pipe:[741381446]\n24      /usr/sbin/nginx 5       pipe:[741381445]\n24      /usr/sbin/nginx 6       pipe:[741381445]\n24      /usr/sbin/nginx 7       socket:[741380693]\n24      /usr/sbin/nginx 8       socket:[741380702]\n24      /usr/sbin/nginx 9       socket:[741380696]\n24      /usr/sbin/nginx 10      socket:[741380704]\n24      /usr/sbin/nginx 11      socket:[741380698]\n24      /usr/sbin/nginx 12      socket:[741380706]\n24      /usr/sbin/nginx 13      socket:[741380708]\n24      /usr/sbin/nginx 14      socket:[741380701]\n24      /usr/sbin/nginx 15      anon_inode:[eventpoll]\n24      /usr/sbin/nginx 16      anon_inode:[eventfd]\n24      /usr/sbin/nginx 17      anon_inode:[eventfd]\n24      /usr/sbin/nginx 18      socket:[741380710]\n24      /usr/sbin/nginx 19      socket:[741380712]\n25      /usr/sbin/nginx 0       /dev/null\n25      /usr/sbin/nginx 1       pipe:[741381445]\n25      /usr/sbin/nginx 2       pipe:[741381446]\n25      /usr/sbin/nginx 3       socket:[741380694]\n25      /usr/sbin/nginx 4       pipe:[741381446]\n25      /usr/sbin/nginx 5       pipe:[741381445]\n25      /usr/sbin/nginx 6       pipe:[741381445]\n25      /usr/sbin/nginx 7       socket:[741380693]\n25      /usr/sbin/nginx 8       socket:[741380704]\n25      /usr/sbin/nginx 9       socket:[741380696]\n25      /usr/sbin/nginx 10      socket:[741380706]\n25      /usr/sbin/nginx 11      socket:[741380698]\n25      /usr/sbin/nginx 12      socket:[741380708]\n25      /usr/sbin/nginx 13      socket:[741380700]\n25      /usr/sbin/nginx 14      socket:[741380710]\n25      /usr/sbin/nginx 15      socket:[741380712]\n25      /usr/sbin/nginx 16      socket:[741380703]\n25      /usr/sbin/nginx 17      anon_inode:[eventpoll]\n25      /usr/sbin/nginx 18      anon_inode:[eventfd]\n25      /usr/sbin/nginx 19      anon_inode:[eventfd]\n26      /usr/sbin/nginx 0       /dev/null\n26      /usr/sbin/nginx 1       pipe:[741381445]\n26      /usr/sbin/nginx 2       pipe:[741381446]\n26      /usr/sbin/nginx 3       socket:[741380694]\n26      /usr/sbin/nginx 4       pipe:[741381446]\n26      /usr/sbin/nginx 5       pipe:[741381445]\n26      /usr/sbin/nginx 6       pipe:[741381445]\n26      /usr/sbin/nginx 7       socket:[741380693]\n26      /usr/sbin/nginx 8       socket:[741380706]\n26      /usr/sbin/nginx 9       socket:[741380696]\n26      /usr/sbin/nginx 10      socket:[741380708]\n26      /usr/sbin/nginx 11      socket:[741380698]\n26      /usr/sbin/nginx 12      socket:[741380710]\n26      /usr/sbin/nginx 13      socket:[741380700]\n26      /usr/sbin/nginx 14      socket:[741380712]\n26      /usr/sbin/nginx 15      socket:[741380702]\n26      /usr/sbin/nginx 18      socket:[741380705]\n26      /usr/sbin/nginx 19      anon_inode:[eventpoll]\n26      /usr/sbin/nginx 20      anon_inode:[eventfd]\n26      /usr/sbin/nginx 21      anon_inode:[eventfd]\n27      /usr/sbin/nginx 0       /dev/null\n27      /usr/sbin/nginx 1       pipe:[741381445]\n27      /usr/sbin/nginx 2       pipe:[741381446]\n27      /usr/sbin/nginx 3       socket:[741380694]\n27      /usr/sbin/nginx 4       pipe:[741381446]\n27      /usr/sbin/nginx 5       pipe:[741381445]\n27      /usr/sbin/nginx 6       pipe:[741381445]\n27      /usr/sbin/nginx 7       socket:[741380693]\n27      /usr/sbin/nginx 8       socket:[741380708]\n27      /usr/sbin/nginx 9       socket:[741380696]\n27      /usr/sbin/nginx 10      socket:[741380710]\n27      /usr/sbin/nginx 11      socket:[741380698]\n27      /usr/sbin/nginx 12      socket:[741380712]\n27      /usr/sbin/nginx 13      socket:[741380700]\n27      /usr/sbin/nginx 15      socket:[741380702]\n27      /usr/sbin/nginx 17      socket:[741380704]\n27      /usr/sbin/nginx 20      socket:[741380707]\n27      /usr/sbin/nginx 21      anon_inode:[eventpoll]\n27      /usr/sbin/nginx 22      anon_inode:[eventfd]\n27      /usr/sbin/nginx 23      anon_inode:[eventfd]\n28      /usr/sbin/nginx 0       /dev/null\n28      /usr/sbin/nginx 1       pipe:[741381445]\n28      /usr/sbin/nginx 2       pipe:[741381446]\n28      /usr/sbin/nginx 3       socket:[741380694]\n28      /usr/sbin/nginx 4       pipe:[741381446]\n28      /usr/sbin/nginx 5       pipe:[741381445]\n28      /usr/sbin/nginx 6       pipe:[741381445]\n28      /usr/sbin/nginx 7       socket:[741380693]\n28      /usr/sbin/nginx 8       socket:[741380710]\n28      /usr/sbin/nginx 9       socket:[741380696]\n28      /usr/sbin/nginx 10      socket:[741380712]\n28      /usr/sbin/nginx 11      socket:[741380698]\n28      /usr/sbin/nginx 13      socket:[741380700]\n28      /usr/sbin/nginx 15      socket:[741380702]\n28      /usr/sbin/nginx 17      socket:[741380704]\n28      /usr/sbin/nginx 19      socket:[741380706]\n28      /usr/sbin/nginx 22      socket:[741380709]\n28      /usr/sbin/nginx 23      anon_inode:[eventpoll]\n28      /usr/sbin/nginx 24      anon_inode:[eventfd]\n28      /usr/sbin/nginx 25      anon_inode:[eventfd]\n29      /usr/sbin/nginx 0       /dev/null\n29      /usr/sbin/nginx 1       pipe:[741381445]\n29      /usr/sbin/nginx 2       pipe:[741381446]\n29      /usr/sbin/nginx 3       socket:[741380694]\n29      /usr/sbin/nginx 4       pipe:[741381446]\n29      /usr/sbin/nginx 5       pipe:[741381445]\n29      /usr/sbin/nginx 6       pipe:[741381445]\n29      /usr/sbin/nginx 7       socket:[741380693]\n29      /usr/sbin/nginx 8       socket:[741380712]\n29      /usr/sbin/nginx 9       socket:[741380696]\n29      /usr/sbin/nginx 11      socket:[741380698]\n29      /usr/sbin/nginx 13      socket:[741380700]\n29      /usr/sbin/nginx 15      socket:[741380702]\n29      /usr/sbin/nginx 17      socket:[741380704]\n29      /usr/sbin/nginx 19      socket:[741380706]\n29      /usr/sbin/nginx 21      socket:[741380708]\n29      /usr/sbin/nginx 24      socket:[741380711]\n29      /usr/sbin/nginx 25      anon_inode:[eventpoll]\n29      /usr/sbin/nginx 26      anon_inode:[eventfd]\n29      /usr/sbin/nginx 27      anon_inode:[eventfd]\n30      /usr/sbin/nginx 0       /dev/null\n30      /usr/sbin/nginx 1       pipe:[741381445]\n30      /usr/sbin/nginx 2       pipe:[741381446]\n30      /usr/sbin/nginx 3       socket:[741380694]\n30      /usr/sbin/nginx 4       pipe:[741381446]\n30      /usr/sbin/nginx 5       pipe:[741381445]\n30      /usr/sbin/nginx 6       pipe:[741381445]\n30      /usr/sbin/nginx 7       socket:[741380693]\n30      /usr/sbin/nginx 9       socket:[741380696]\n30      /usr/sbin/nginx 11      socket:[741380698]\n30      /usr/sbin/nginx 13      socket:[741380700]\n30      /usr/sbin/nginx 15      socket:[741380702]\n30      /usr/sbin/nginx 17      socket:[741380704]\n30      /usr/sbin/nginx 19      socket:[741380706]\n30      /usr/sbin/nginx 21      socket:[741380708]\n30      /usr/sbin/nginx 23      socket:[741380710]\n30      /usr/sbin/nginx 26      socket:[741380713]\n30      /usr/sbin/nginx 27      anon_inode:[eventpoll]\n30      /usr/sbin/nginx 28      anon_inode:[eventfd]\n30      /usr/sbin/nginx 29      anon_inode:[eventfd]\n31      /bin/busybox    0       /dev/pts/0\n31      /bin/busybox    1       /dev/pts/0\n31      /bin/busybox    2       /dev/pts/0\n31      /bin/busybox    10      /dev/tty","commandType":4},{"text":"~ $ cat /etc/nginx/conf.d/default.conf\nserver {\n    listen 8080;\n    server_name localhost;\n    root /usr/share/nginx/html;\n    index index.html;\n\n    # Debug logging\n    error_log /dev/stdout debug;\n    access_log /dev/stdout;\n\n    # Support client-side routing\n    location / {\n        # Debug info\n        add_header X-Debug-Path $uri;\n        add_header X-Debug-Root $document_root;\n\n        try_files $uri $uri/ /index.html;\n    }\n\n    # Optional: Add security headers\n    add_header X-Frame-Options \"SAMEORIGIN\";\n    add_header X-XSS-Protection \"1; mode=block\";\n    add_header X-Content-Type-Options \"nosniff\";\n\n    # Optional: Configure CORS\n    add_header 'Access-Control-Allow-Origin' '*';\n    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';\n    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';\n\n    # Optional: Enable gzip compression\n    gzip on;\n    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n~ $ ls -la /usr/share/nginx/html/\ntotal 16\ndrwxr-xr-x    1 root     root            86 Jan 27 20:51 .\ndrwxr-xr-x    1 root     root            18 Jan  8 17:59 ..\n-rw-r--r--    1 root     root           497 Nov 26 17:22 50x.html\n-rw-r--r--    1 root     root           369 Jan 27 20:51 asset-manifest.json\n-rw-r--r--    1 root     root           673 Jan 27 20:51 index.html\n-rw-r--r--    1 root     root           307 Jan 27 20:51 manifest.json\ndrwxr-xr-x    4 root     root            27 Jan 27 20:51 static","commandType":4},{"text":"Here’s a simplified version of a Dockerfile:\n\n# Step 1: Build the React application\nFROM node:14 AS build\nWORKDIR /app\nCOPY package*.json ./\nRUN npm install\nCOPY . .\nRUN npm run build\n\n# Step 2: Serve the app using NGINX\nFROM nginx:stable-alpine\nCOPY --from=build /app/build /usr/share/nginx/html\nEXPOSE 80\nCMD [\"nginx\", \"-g\", \"daemon off;\"]\n\n    Step 2: Building and Running the Docker Image\n\n\n\nPart 2: Adapting for OpenShift\n\nOpenShift has specific security requirements that might affect the way our container runs. Specifically, OpenShift runs containers with a random user ID for security reasons.\n\nHere’s how we can modify our Dockerfile to be compatible with OpenShift:\n\n# Step 1: Build as before...\n\n# Step 2: Serve with NGINX, but with adjusted permissions\nFROM nginx:stable-alpine\nRUN chmod -R g+rwx /var/cache/nginx /var/run /var/log/nginx\nRUN chown -R nginx:0 /usr/share/nginx/html && \\\n    chmod -R g+rwX /usr/share/nginx/html\nCOPY --from=build /app/build /usr/share/nginx/html\nEXPOSE 80\nCMD [\"nginx\", \"-g\", \"daemon off;\"]","commandType":4},{"text":"the deployment uses port 80 not 8080","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/01/27 21:27:22 [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/01/27 21:27:22 [emerg] 1#1: bind() to 0.0.0.0:80 failed (13: Permission denied)\nnginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)","commandType":4},{"text":"80 might not be allowed. we should probably just use 8080 consistently","commandType":4},{"text":"configure cert manager in the manifests dir so we can use custom domains for our routes using the container.mom domain","commandType":4},{"text":"our dns service is cloudflare","commandType":4},{"text":"what perms does the token need?","commandType":4},{"text":"let's update the roytes to use container.mom domains","commandType":4},{"text":"what do I point my dns records at?\n\nNode Role\n\nMAC\n\nIP\n\nDC\n\nmaster0\n\t\n\n \n\t\n\n188.244.117.200\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster1\n\t\n\n \n\t\n\n188.244.117.223\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster2\n\t\n\n \n\t\n\n188.244.117.142\n\t\n\nHatch ZRH (Bare Metal)\n\n(proxmox host)\n\t\n\nF8:DB:88:0C:74:A9 \n\t\n\n193.176.244.127\n\t\n\nStaniel AMS (Bare Metal)\n\nworker0\n\t\n\nbc:24:11:4c:8f:69\n\t\n\n193.176.244.50\n\t\n\nStaniel AMS (VM)\n\nworker1\n\t\n\nbc:24:11:0b:02:7d\n\t\n\n193.176.244.51\n\t\n\nStaniel AMS (VM)\n\nworker2\n\t\n\nbc:24:11:4a:c2:20\n\t\n\n193.176.244.52\n\t\n\nStaniel AMS (VM)\n\nworker3\n\t\n\nBC:24:11:76:04:9C\n\t\n\n193.176.244.53\n\t\n\nStaniel AMS (VM)\n","commandType":4},{"text":"shouldn't we route traffic through masters and have some kind of load balancer?","commandType":4},{"text":"pls","commandType":4},{"text":"we have two portal ingress resources it seems","commandType":4},{"text":"check the files I added","commandType":4},{"text":"is this ok?","commandType":4},{"text":"add th routes to the ocrresposning components' directory","commandType":4},{"text":"what does the operator need a public route for again?","commandType":4},{"text":"i have an openshift cluster where the default apps domain is apps.ocp4-prd.josie.cloud. right now, my openshift Route manifests define host: portal.container.mom, but this isn't working because container.mom is an external domain managed by cloudflare. the current dns setup has portal.container.mom as a CNAME pointing to apps.ocp4-prd.josie.cloud, but cloudflare doesn't resolve cnames to wildcards.\n\ni need to update my route manifests so that they use the correct hostname that will work with my cluster’s ingress and dns setup. specifically:\n\n    change the host field in the Route manifests from portal.container.mom to portal-container-mom.apps.ocp4-prd.josie.cloud\n    ensure that cloudflare is pointing portal.container.mom to portal-container-mom.apps.ocp4-prd.josie.cloud, either as a cname or an a record\n    make sure openshift is actually handling traffic for portal-container-mom.apps.ocp4-prd.josie.cloud\n\ngiven this, generate the correct Route manifest changes.","commandType":4},{"text":"add a dir for the landing page as well and add necessary resources","commandType":4},{"text":"we probably need to add a containerfile and a workflow .github/workflows for landing-page\n","commandType":4},{"text":"check this for configuring custom app domains\n\n@https://docs.openshift.com/container-platform/4.16/networking/networking_operators/ingress-operator.html#nw-ingress-configuring-application-domain_configuring-ingress ","commandType":4},{"text":"pls","commandType":4},{"text":"the landing page deployment needs to use the pull secrets like the other deployments do","commandType":4},{"text":"update the dockerconfg json to use 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","commandType":4},{"text":"the current data decoded is\n\n.dockerconfigjson\n\n{\"auths\":{\"ghcr.io\":{\"auth\":\"cGZlaWZmZXJqOmdocF92REFGeUhYaDBwcTVDTmdPM25nMEVWWDdQT3JZSVUwcjYzOGc=\"}}}","commandType":4},{"text":"remove the username","commandType":4},{"text":"let's add the vault secrets operator for secrets management","commandType":4},{"text":"we're using vault secrets from hashicorp cloud","commandType":4},{"text":"check the docs @https://developer.hashicorp.com/hcp/tutorials/get-started-hcp-vault-secrets/hcp-vault-secrets-kubernetes-vso ","commandType":4},{"text":"add a public route for the backend portal\n\n","commandType":4},{"text":"replace references to localhost with the correct env var","commandType":4},{"text":"is auth set up correctly?","commandType":4},{"text":"10.130.2.2 - - [05/Feb/2025:12:56:01 +0000] \"GET / HTTP/1.1\" 200 673 \"-\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:56:01 +0000] \"GET /env-config.js HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:56:01 +0000] \"GET /static/css/main.c9913dd7.css HTTP/1.1\" 200 23157 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:56:01 +0000] \"GET /static/js/main.ce1ba878.js HTTP/1.1\" 200 249361 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n2025/02/05 12:56:06 [info] 22#22: *2 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n2025/02/05 12:56:06 [info] 21#21: *1 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n10.130.2.2 - - [05/Feb/2025:12:58:10 +0000] \"GET /?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=RTUzeUI5c2tSNmhPUXhpVjBOUWdFeGQ1Z1JRZUFvTnpTeWY3djVOcGlGTw%3D%3D HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:58:10 +0000] \"GET /env-config.js HTTP/1.1\" 304 0 \"https://portal.container.mom/?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=RTUzeUI5c2tSNmhPUXhpVjBOUWdFeGQ1Z1JRZUFvTnpTeWY3djVOcGlGTw%3D%3D\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:58:10 +0000] \"GET /static/css/main.c9913dd7.css HTTP/1.1\" 304 0 \"https://portal.container.mom/?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=RTUzeUI5c2tSNmhPUXhpVjBOUWdFeGQ1Z1JRZUFvTnpTeWY3djVOcGlGTw%3D%3D\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:58:10 +0000] \"GET /static/js/main.ce1ba878.js HTTP/1.1\" 304 0 \"https://portal.container.mom/?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=RTUzeUI5c2tSNmhPUXhpVjBOUWdFeGQ1Z1JRZUFvTnpTeWY3djVOcGlGTw%3D%3D\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:58:13 +0000] \"GET /?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=bTc1RmFZcEguMnVMUWRFNFMuU2FtdmxCRmt1aThsSzI4b05xVE9VTUo3Rw%3D%3D HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n2025/02/05 12:58:15 [info] 24#24: *3 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n2025/02/05 12:58:15 [info] 23#23: *4 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n10.130.2.2 - - [05/Feb/2025:12:58:20 +0000] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:12:58:21 +0000] \"GET /?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=dU9tTjBXTHBNWlZlSGRub0JYRXlJZ042YmJjVkVHcH5zTHpTQ2wwM19YTw%3D%3D HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n2025/02/05 12:58:35 [info] 28#28: *5 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET /env-config.js HTTP/1.1\" 304 0 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET /static/js/main.ce1ba878.js HTTP/1.1\" 304 0 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET /static/css/main.c9913dd7.css HTTP/1.1\" 304 0 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET /logo192.png HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:29 +0000] \"GET /favicon.ico HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n10.130.2.2 - - [05/Feb/2025:13:01:31 +0000] \"GET /?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=dHNfQnhwcWZtSC5zZHNoWEUzb3FEM3lWfkRXbGJnNUh3UUcydHN0bldBSQ%3D%3D HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n2025/02/05 13:01:31 [info] 27#27: *8 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n10.130.2.2 - - [05/Feb/2025:13:01:41 +0000] \"GET /?error=access_denied&error_description=Service%20not%20found%3A%20https%3A%2F%2Fcontainer-mom.com%2Fapi&state=QW1BbjhLQlFRY1JnN1B5T1FHR2xKY0llWHVRWXRTVHp3ajR5RnlmT2pafg%3D%3D HTTP/1.1\" 200 673 \"https://portal.container.mom/\" \"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0\"\n2025/02/05 13:01:44 [info] 26#26: *7 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)\n2025/02/05 13:01:44 [info] 25#25: *6 client 10.130.2.2 closed keepalive connection (104: Connection reset by peer)","commandType":4},{"text":"fix the localhost reference in auth.js but don't make any other changes","commandType":4},{"text":"try again","commandType":4},{"text":"shouldn't it be REACT_APP_API_URL","commandType":4},{"text":"th elogin/signup nav still goes to localhost in prod","commandType":4},{"text":"extend the domain manager to also use the cloudflare api to create cname records for custom domain names under the container.mom domain that point at a router url that can be defined using a config map/env var","commandType":4},{"text":"the nav still points to local host also these errors:\n\nUncaught SyntaxError: expected expression, got '<' env-config.js:1:1\nThe script from “https://portal.container.mom/env-config.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type. portal.container.mom\nThe Components object is deprecated. It will soon be removed. portal.container.mom\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.3ce5d42a.js:2:208349\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.3ce5d42a.js:2:208349\nCross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3001/api/auth/user. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘http://localhost:3000’).\nGet user error: TypeError: NetworkError when attempting to fetch resource. main.3ce5d42a.js:2:215419\n    on auth.js:50\nUnknown property ‘-moz-osx-font-smoothing’.  Declaration dropped. main.c9913dd7.css:1:285\n","commandType":4},{"text":"this is terrible we already have a config map","commandType":4},{"text":"nogga no we need to justr update the code references","commandType":4},{"text":"let's add tests to the operator","commandType":4},{"text":"let's try running the tests","commandType":4},{"text":"❯ make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\ndocker-compose -f docker-compose.test.yml up -d\nmake[1]: docker-compose: No such file or directory\nmake[1]: *** [Makefile:142: test-deps] Error 127\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\nmake: *** [Makefile:148: test-operator] Error 2\n","commandType":4},{"text":"I want to use podman instead","commandType":4},{"text":"we should just mokc mongodb stuff for the sake of the tests","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator/mongodb\npkg/operator/mongodb/interface.go:11:50: undefined: MongoDeployment\npkg/operator/mongodb/interface.go:12:42: undefined: MongoDeployment\npkg/operator/mongodb/interface.go:13:52: undefined: MongoDeployment\npkg/operator/mongodb/interface.go:14:52: undefined: MongoDeployment\npkg/operator/mongodb/interface.go:25:9: cannot use &Client{…} (value of type *Client) as Interface value in return statement: *Client does not implement Interface (missing method CreateDeployment)\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\npkg/operator/operator.go:110:24: o.mongodb.Disconnect undefined (type mongodb.Interface has no field or method Disconnect)\npkg/operator/operator.go:121:41: cannot use o.mongodb (variable of type mongodb.Interface) as *mongo.Client value in argument to NewDeploymentController\npkg/operator/operator.go:211:26: o.mongodb.Database undefined (type mongodb.Interface has no field or method Database)\npkg/operator/operator.go:227:19: o.mongodb.GetClient undefined (type mongodb.Interface has no field or method GetClient)\npkg/operator/deployment_controller_test.go:46:40: cannot use mockMongo (variable of type *mock.MockMongoDB) as *mongo.Client value in argument to NewDeploymentController\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ go mod tidy\ngo: finding module for package github.com/pfeifferj/container-mom-go/pkg/mongodb\ngo: github.com/pfeifferj/container-mom-go/pkg/operator imports\n        github.com/pfeifferj/container-mom-go/pkg/mongodb: no matching versions for query \"latest\"\n❯ go mod vendor\ngo: github.com/pfeifferj/container-mom-go/pkg/operator imports\n        github.com/pfeifferj/container-mom-go/pkg/mongodb: no required module provides package github.com/pfeifferj/container-mom-go/pkg/mongodb; to add it:\n        go get github.com/pfeifferj/container-mom-go/pkg/mongodb\n❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\npkg/operator/deployment_controller.go:10:2: cannot find module providing package github.com/pfeifferj/container-mom-go/pkg/mongodb: import lookup disabled by -mod=vendor\n        (Go version in go.mod is at least 1.14 and vendor directory exists.)\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ go mod tidy\n❯ go mod vendor\n❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\npkg/operator/deployment_controller_test.go:92:40: cannot use mongoClient (variable of type *mongo.Client) as mongodb.Interface value in argument\nto NewDeploymentController: *mongo.Client does not implement mongodb.Interface (missing method CreateDeployment)\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- FAIL: TestDeploymentController (0.00s)\npanic: runtime error: invalid memory address or nil pointer dereference [recovered]\n        panic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xbcf4ab]\n\ngoroutine 86 [running]:\ntesting.tRunner.func1.2({0x18b89c0, 0x2af8b90})\n        /usr/lib/go/src/testing/testing.go:1632 +0x230\ntesting.tRunner.func1()\n        /usr/lib/go/src/testing/testing.go:1635 +0x35e\npanic({0x18b89c0?, 0x2af8b90?})\n        /usr/lib/go/src/runtime/panic.go:785 +0x132\ngo.mongodb.org/mongo-driver/mongo.newCollection(0x0, {0x1addeb3, 0xb}, {0x0?, 0x0?, 0x0?})\n        /home/josie/development/container-mom-go/vendor/go.mongodb.org/mongo-driver/mongo/collection.go:74 +0xcb\ngo.mongodb.org/mongo-driver/mongo.(*Database).Collection(...)\n        /home/josie/development/container-mom-go/vendor/go.mongodb.org/mongo-driver/mongo/database.go:109\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).reconcileDeployment(0xc0005dd260, {0x1daad10, 0x2b51720}, {0x1ae2f91,\n0xf})\n        /home/josie/development/container-mom-go/pkg/operator/deployment_controller.go:152 +0x9d\ngithub.com/pfeifferj/container-mom-go/pkg/operator.TestDeploymentController(0xc0003269c0)\n        /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:49 +0x3f0\ntesting.tRunner(0xc0003269c0, 0x1beade8)\n        /usr/lib/go/src/testing/testing.go:1690 +0xf4\ncreated by testing.(*T).Run in goroutine 1\n        /usr/lib/go/src/testing/testing.go:1743 +0x390\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.016s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n    deployment_controller_test.go:98:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:98\n                Error:          An error is expected but got nil.\n                Test:           TestDeploymentDeletion\n--- FAIL: TestDeploymentDeletion (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.01s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 22.3% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.033s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n    deployment_controller_test.go:110:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:110\n                Error:          An error is expected but got nil.\n                Test:           TestDeploymentDeletion\n--- FAIL: TestDeploymentDeletion (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 22.3% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.021s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\npkg/operator/operator.go:120:52: not enough arguments in call to NewDeploymentController\n        have (mongodb.Interface, *DeploymentReconciler)\n        want (mongodb.Interface, *DeploymentReconciler, client.Client)\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n    deployment_controller_test.go:110:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:110\n                Error:          An error is expected but got nil.\n                Test:           TestDeploymentDeletion\n--- FAIL: TestDeploymentDeletion (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 25.2% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.024s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by 48f527936748b0c93d99bf96288d124987af4d8e0f88c0c5f0aeca997014e39a. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.01s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.01s)\nPASS\ncoverage: 25.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.031s  coverage: 25.5% of statements\ngo tool cover -func=operator-coverage.out\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:29:         NewDeploymentController         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:40:         Start                           0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:53:         worker                          0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:80:         periodicFullSync                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:96:         fullSync                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:136:        reconcileDeployment             81.8%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:162:        convertToK8sDeployment          100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:183:        EnqueueDeployment               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:19:         NewDeploymentReconciler         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:25:         reconcileDeployment             50.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:53:         deleteDeployment                50.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:81:         listExistingDeployments         0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:17:                 Healthz                         0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:23:                 Readyz                          0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:16:                GetDeployment                   75.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:31:                ListDeployments                 0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:48:                CreateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:55:                UpdateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:68:                DeleteDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:81:                GetClient                       100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:85:                Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:89:                Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/interface.go:27:             NewClient                       100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:17:             NewMockMongoDB                  100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:23:             GetDeployment                   100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:30:             ListDeployments                 0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:38:             CreateDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:43:             UpdateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:51:             DeleteDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:56:             GetClient                       0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:60:             Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:64:             Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:27:                      init                            100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:52:                      New                             52.6%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:96:                      Run                             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:168:                     GetCurrentCustomer              0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:178:                     GetResourceUsage                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:184:                     GetBillingHistory               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:190:                     UpdateBillingPlan               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:196:                     UpdateBillingStatus             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:202:                     GetContainers                   0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:208:                     TriggerDeploymentReconcile      60.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:220:                     GetMongoDB                      100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:17:                NewTestOperator                 0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:28:                NewFakeClient                   75.0%\ntotal:                                                                                  (statements)                    25.5%\ngo tool cover -html=operator-coverage.out -o operator-coverage.html\nmake test-cleanup\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml down\ncontainer-mom-go_mongodb_1\ncontainer-mom-go_mongodb_1\n48fb809e4d3902b9337c48442b4cf528ba18a6d2c8dfa7bdd07a208437ede849\ncontainer-mom-go_default\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\n62adea0a2c9107c4f62fc77199f9cdbb824281d9a7cd74b70a49d8a937e4b1bb\ncd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator/mongodb\npkg/operator/mongodb/client_test.go:8:2: cannot find module providing package go.mongodb.org/mongo-driver/mongo/integration/mtest: import lookup\ndisabled by -mod=vendor\n        (Go version in go.mod is at least 1.14 and vendor directory exists.)\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [setup failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n    deployment_controller_test.go:157:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:157\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-1\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:157:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:157\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-2\" not found\n                Test:           TestFullSync\n--- FAIL: TestFullSync (0.00s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 36.3% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.022s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by cd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator/mongodb\npkg/operator/mongodb/types.go:14:66: syntax error: unexpected EOF, expected }\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by cd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n    deployment_controller_test.go:159:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:159\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-1\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:159:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:159\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-2\" not found\n                Test:           TestFullSync\n--- FAIL: TestFullSync (0.00s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 36.3% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.022s\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\nPASS\ncoverage: 21.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.007s  coverage: 21.1% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by cd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n    deployment_controller_test.go:58:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:58\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"test-deployment\" not found\n                Test:           TestDeploymentController\n    deployment_controller_test.go:59:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:59\n                Error:          Not equal:\n                                expected: \"https://github.com/test/repo\"\n                                actual  : \"\"\n\n                                Diff:\n                                --- Expected\n                                +++ Actual\n                                @@ -1 +1 @@\n                                -https://github.com/test/repo\n                                +\n                Test:           TestDeploymentController\n--- FAIL: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n    deployment_controller_test.go:162:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:162\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-1\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:163:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:163\n                Error:          Not equal:\n                                expected: \"default\"\n                                actual  : \"\"\n\n                                Diff:\n                                --- Expected\n                                +++ Actual\n                                @@ -1 +1 @@\n                                -default\n                                +\n                Test:           TestFullSync\n    deployment_controller_test.go:162:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:162\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-2\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:163:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:163\n                Error:          Not equal:\n                                expected: \"default\"\n                                actual  : \"\"\n\n                                Diff:\n                                --- Expected\n                                +++ Actual\n                                @@ -1 +1 @@\n                                -default\n                                +\n                Test:           TestFullSync\n--- FAIL: TestFullSync (0.00s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 36.3% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.020s\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\nPASS\ncoverage: 21.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.007s  coverage: 21.1% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by cd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n    deployment_controller_test.go:166:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:166\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-1\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:167:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:167\n                Error:          Not equal:\n                                expected: \"default\"\n                                actual  : \"\"\n\n                                Diff:\n                                --- Expected\n                                +++ Actual\n                                @@ -1 +1 @@\n                                -default\n                                +\n                Test:           TestFullSync\n    deployment_controller_test.go:166:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:166\n                Error:          Received unexpected error:\n                                containermomdeployments.container.mom \"deployment-2\" not found\n                Test:           TestFullSync\n    deployment_controller_test.go:167:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go:167\n                Error:          Not equal:\n                                expected: \"default\"\n                                actual  : \"\"\n\n                                Diff:\n                                --- Expected\n                                +++ Actual\n                                @@ -1 +1 @@\n                                -default\n                                +\n                Test:           TestFullSync\n--- FAIL: TestFullSync (0.00s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nFAIL\ncoverage: 37.1% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator      0.021s\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\nPASS\ncoverage: 21.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.007s  coverage: 21.1% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nError: creating container storage: the container name \"container-mom-go_mongodb_1\" is already in use by cd638987a4ae31c298c087b83b57469745a435d4e1d8a87d207b90fc661449fd. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.\ncontainer-mom-go_mongodb_1\n\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/health               coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nPASS\ncoverage: 37.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.021s  coverage: 37.5% of statements\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\nPASS\ncoverage: 21.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.008s  coverage: 21.1% of statements\ngo tool cover -func=operator-coverage.out\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:29:         NewDeploymentController         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:40:         Start                           0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:53:         worker                          0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:80:         periodicFullSync                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:96:         fullSync                        63.6%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:142:        reconcileDeployment             81.8%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:171:        convertToK8sDeployment          100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:193:        EnqueueDeployment               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:19:         NewDeploymentReconciler         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:25:         reconcileDeployment             75.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:53:         deleteDeployment                50.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:81:         listExistingDeployments         75.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:17:                 Healthz                         0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:23:                 Readyz                          0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:16:                GetDeployment                   0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:31:                ListDeployments                 77.8%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:48:                CreateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:55:                UpdateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:68:                DeleteDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:81:                GetClient                       0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:85:                Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:89:                Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/interface.go:27:             NewClient                       100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:17:             NewMockMongoDB                  100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:23:             GetDeployment                   100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:30:             ListDeployments                 100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:38:             CreateDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:43:             UpdateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:51:             DeleteDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:56:             GetClient                       0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:60:             Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:64:             Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:27:                      init                            100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:52:                      New                             52.6%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:96:                      Run                             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:168:                     GetCurrentCustomer              0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:178:                     GetResourceUsage                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:184:                     GetBillingHistory               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:190:                     UpdateBillingPlan               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:196:                     UpdateBillingStatus             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:202:                     GetContainers                   0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:208:                     TriggerDeploymentReconcile      60.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:220:                     GetMongoDB                      100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:17:                NewTestOperator                 0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:28:                NewFakeClient                   75.0%\ntotal:                                                                                  (statements)                    35.5%\ngo tool cover -html=operator-coverage.out -o operator-coverage.html\nmake test-cleanup\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml down\ncontainer-mom-go_mongodb_1\ncontainer-mom-go_mongodb_1\n62adea0a2c9107c4f62fc77199f9cdbb824281d9a7cd74b70a49d8a937e4b1bb\ncontainer-mom-go_default\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\nbca082e59b9bbdf7775cd221b7be862f2eb99606aeb38a94a595bb2ad4797725\n492ead6a1370816b13052ab4cc8655db107d35cf349554ca57beaccdea66a959\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock         coverage: 0.0% of statements\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nPASS\ncoverage: 43.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.121s  coverage: 43.1% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- FAIL: TestHealthChecks (0.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- FAIL: TestHealthChecks/readyz (0.00s)\npanic: runtime error: invalid memory address or nil pointer dereference [recovered]\n        panic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x7d25aa]\n\ngoroutine 22 [running]:\ntesting.tRunner.func1.2({0x908440, 0xd93660})\n        /usr/lib/go/src/testing/testing.go:1632 +0x230\ntesting.tRunner.func1()\n        /usr/lib/go/src/testing/testing.go:1635 +0x35e\npanic({0x908440?, 0xd93660?})\n        /usr/lib/go/src/runtime/panic.go:785 +0x132\ngo.mongodb.org/mongo-driver/mongo.(*Client).Ping(0xa79db8?, {0xa78520?, 0xdcd880?}, 0x9b30fc?)\n        /home/josie/development/container-mom-go/vendor/go.mongodb.org/mongo-driver/mongo/client.go:371 +0x4a\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health.(*Handler).Readyz(0xc000288300, {0xa77178, 0xc00028a140}, 0xc0001ed400)\n        /home/josie/development/container-mom-go/pkg/operator/health/health.go:28 +0x105\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health.TestHealthChecks.func2(0xc0001f91e0)\n        /home/josie/development/container-mom-go/pkg/operator/health/health_test.go:42 +0xe5\ntesting.tRunner(0xc0001f91e0, 0xc0002883a0)\n        /usr/lib/go/src/testing/testing.go:1690 +0xf4\ncreated by testing.(*T).Run in goroutine 20\n        /usr/lib/go/src/testing/testing.go:1743 +0x390\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/health       0.005s\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\n=== RUN   TestMongoDBClient\n--- PASS: TestMongoDBClient (0.00s)\nPASS\ncoverage: 73.7% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.011s  coverage: 73.7% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\nPASS\ncoverage: 43.1% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.122s  coverage: 43.1% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.00s)\nPASS\ncoverage: 61.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/health       0.006s  coverage: 61.5% of statements\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\n=== RUN   TestMongoDBClient\n--- PASS: TestMongoDBClient (0.00s)\nPASS\ncoverage: 73.7% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.010s  coverage: 73.7% of statements\ngo tool cover -func=operator-coverage.out\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:29:         NewDeploymentController         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:40:         Start                           0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:53:         worker                          50.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:80:         periodicFullSync                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:96:         fullSync                        63.6%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:142:        reconcileDeployment             81.8%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:171:        convertToK8sDeployment          100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_controller.go:193:        EnqueueDeployment               100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:19:         NewDeploymentReconciler         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:25:         reconcileDeployment             75.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:53:         deleteDeployment                50.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/deployment_reconciler.go:81:         listExistingDeployments         75.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:17:                 Healthz                         100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/health/health.go:23:                 Readyz                          54.5%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:16:                GetDeployment                   87.5%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:31:                ListDeployments                 77.8%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:48:                CreateDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:55:                UpdateDeployment                71.4%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:68:                DeleteDeployment                71.4%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:81:                GetClient                       0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:85:                Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/client.go:89:                Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/interface.go:27:             NewClient                       100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:17:             NewMockMongoDB                  100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:23:             GetDeployment                   100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:30:             ListDeployments                 100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:38:             CreateDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:43:             UpdateDeployment                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:51:             DeleteDeployment                100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:56:             GetClient                       0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:60:             Disconnect                      0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock/mock.go:64:             Database                        0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:27:                      init                            100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:52:                      New                             52.6%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:96:                      Run                             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:168:                     GetCurrentCustomer              0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:178:                     GetResourceUsage                0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:184:                     GetBillingHistory               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:190:                     UpdateBillingPlan               0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:196:                     UpdateBillingStatus             0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:202:                     GetContainers                   0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:208:                     TriggerDeploymentReconcile      60.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/operator.go:220:                     GetMongoDB                      100.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:17:                NewTestOperator                 0.0%\ngithub.com/pfeifferj/container-mom-go/pkg/operator/testing/helper.go:28:                NewFakeClient                   75.0%\ntotal:                                                                                  (statements)                    50.4%\ngo tool cover -html=operator-coverage.out -o operator-coverage.html\nmake test-cleanup\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml down\ncontainer-mom-go_mongodb_1\ncontainer-mom-go_mongodb_1\nbca082e59b9bbdf7775cd221b7be862f2eb99606aeb38a94a595bb2ad4797725\ncontainer-mom-go_default\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\n8188887b51aabdb14adc1f8d910d73bad0f954fa3493c34a5c62bdc9c9bfb1ff\n18f278002d7553f5555037ebdf03e376cc0a8a72cb1276e4e713f046488bef9d\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock [github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock.test]\npkg/operator/mongodb/mock/mock_test.go:16:16: not enough arguments in call to mock.Database\n        have ()\n        want (string)\n# github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [github.com/pfeifferj/container-mom-go/pkg/operator/mongodb.test]\npkg/operator/mongodb/client_test.go:98:8: not enough arguments in call to mongoClient.Database\n        have ()\n        want (string)\n# github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\npkg/operator/operator_test.go:78:63: invalid composite literal type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".BillingStatus\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [build failed]\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.50s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.50s)\nPASS\ncoverage: 61.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/health       0.507s  coverage: 61.5% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"make[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestPeriodicFullSync\n--- PASS: TestPeriodicFullSync (0.15s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\n=== RUN   TestOperatorBilling\n=== RUN   TestOperatorBilling/GetCurrentCustomer\n=== RUN   TestOperatorBilling/GetResourceUsage\n=== RUN   TestOperatorBilling/GetBillingHistory\n=== RUN   TestOperatorBilling/UpdateBillingPlan\n=== RUN   TestOperatorBilling/UpdateBillingStatus\n--- PASS: TestOperatorBilling (0.00s)\n    --- PASS: TestOperatorBilling/GetCurrentCustomer (0.00s)\n    --- PASS: TestOperatorBilling/GetResourceUsage (0.00s)\n    --- PASS: TestOperatorBilling/GetBillingHistory (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingPlan (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingStatus (0.00s)\nPASS\ncoverage: 46.2% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.274s  coverage: 46.2% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.00s)\nPASS\ncoverage: 61.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/health       0.006s  coverage: 61.5% of statements\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\n=== RUN   TestMongoDBClient\n--- PASS: TestMongoDBClient (0.00s)\n=== RUN   TestMongoDBClientUtils\n--- PASS: TestMongoDBClientUtils (0.00s)\nPASS\ncoverage: 81.6% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.012s  coverage: 81.6% of statements\n=== RUN   TestMockMongoDBUtils\n--- FAIL: TestMockMongoDBUtils (0.00s)\npanic: runtime error: invalid memory address or nil pointer dereference [recovered]\n        panic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x8237b3]\n\ngoroutine 7 [running]:\ntesting.tRunner.func1.2({0x883140, 0xca2180})\n        /usr/lib/go/src/testing/testing.go:1632 +0x230\ntesting.tRunner.func1()\n        /usr/lib/go/src/testing/testing.go:1635 +0x35e\npanic({0x883140?, 0xca2180?})\n        /usr/lib/go/src/runtime/panic.go:785 +0x132\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock.(*MockMongoDB).UpdateDeployment(0xc000060e58, {0xc0001e1040?, 0x0?}, 0x0)\n        /home/josie/development/container-mom-go/pkg/operator/mongodb/mock/mock.go:44 +0x73\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock.TestMockMongoDBUtils(0xc0001e1040)\n        /home/josie/development/container-mom-go/pkg/operator/mongodb/mock/mock_test.go:22 +0x1a8\ntesting.tRunner(0xc0001e1040, 0x9560f0)\n        /usr/lib/go/src/testing/testing.go:1690 +0xf4\ncreated by testing.(*T).Run in goroutine 1\n        /usr/lib/go/src/testing/testing.go:1743 +0x390\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock 0.007s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"❯ sudo make test-operator\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\n6b8e0cdb74ffbd2ebe278a839a41b7d3bafc4dc932c01059c8f16e43451166d1\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestPeriodicFullSync\n--- PASS: TestPeriodicFullSync (0.15s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\n=== RUN   TestOperatorBilling\n=== RUN   TestOperatorBilling/GetCurrentCustomer\n=== RUN   TestOperatorBilling/GetResourceUsage\n=== RUN   TestOperatorBilling/GetBillingHistory\n=== RUN   TestOperatorBilling/UpdateBillingPlan\n=== RUN   TestOperatorBilling/UpdateBillingStatus\n--- PASS: TestOperatorBilling (0.00s)\n    --- PASS: TestOperatorBilling/GetCurrentCustomer (0.00s)\n    --- PASS: TestOperatorBilling/GetResourceUsage (0.00s)\n    --- PASS: TestOperatorBilling/GetBillingHistory (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingPlan (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingStatus (0.00s)\nPASS\ncoverage: 46.2% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator      0.273s  coverage: 46.2% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.00s)\nPASS\ncoverage: 61.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/health       0.007s  coverage: 61.5% of statements\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.00s)\n=== RUN   TestMongoDBClient\n--- PASS: TestMongoDBClient (0.00s)\n=== RUN   TestMongoDBClientUtils\n--- PASS: TestMongoDBClientUtils (0.00s)\nPASS\ncoverage: 81.6% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.011s  coverage: 81.6% of statements\n=== RUN   TestMockMongoDBUtils\n    mock_test.go:30:\n                Error Trace:    /home/josie/development/container-mom-go/pkg/operator/mongodb/mock/mock_test.go:30\n                Error:          Received unexpected error:\n                                deployment not found\n                Test:           TestMockMongoDBUtils\n--- FAIL: TestMockMongoDBUtils (0.00s)\nFAIL\ncoverage: 31.6% of statements\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock 0.004s\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"Run go test -v ./...\n?   \tgithub.com/pfeifferj/container-mom-go/cmd/operator\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n# github.com/pfeifferj/container-mom-go/pkg/domain\nError: pkg/domain/manager.go:179:39: cannot use c.zoneID (variable of type string) as *cloudflare.ResourceContainer value in argument to c.api.CreateDNSRecord\nError: pkg/domain/manager.go:179:49: cannot use record (variable of type cloudflare.DNSRecord) as cloudflare.CreateDNSRecordParams value in argument to c.api.CreateDNSRecord\nError: pkg/domain/manager.go:189:24: c.api.DNSRecords undefined (type *cloudflare.API has no field or method DNSRecords)\nError: pkg/domain/manager.go:198:37: cannot use c.zoneID (variable of type string) as *cloudflare.ResourceContainer value in argument to c.api.DeleteDNSRecord\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/domain [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/interfaces\t[no test files]\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestPeriodicFullSync\n--- PASS: TestPeriodicFullSync (0.15s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed.\nDetected at:\n\t>  goroutine 50 [running]:\n\t>  runtime/debug.Stack()\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/runtime/debug/stack.go:26 +0x5e\n\t>  sigs.k8s.io/controller-runtime/pkg/log.eventuallyFulfillRoot()\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:60 +0xcd\n\t>  sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Error(0xc0000a3cc0, {0x1d6d600, 0xc0004f8de0}, {0x1acd43a, 0x16}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:139 +0x5d\n\t>  github.com/go-logr/logr.Logger.Error({{0x1d8aef8?, 0xc0000a3cc0?}, 0x1df5152?}, {0x1d6d600, 0xc0004f8de0}, {0x1acd43a, 0x16}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/github.com/go-logr/logr/logr.go:301 +0xec\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator.New(0xc000374600, 0x0)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/operator.go:67 +0x2b3\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator.TestOperator(0xc0003e8b60)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/operator_test.go:21 +0x51\n\t>  testing.tRunner(0xc0003e8b60, 0x1bc9358)\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1690 +0xf4\n\t>  created by testing.(*T).Run in goroutine 1\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1743 +0x390\n    operator_test.go:22: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/operator_test.go:22\n        \tError:      \tExpected value not to be nil.\n        \tTest:       \tTestOperator\n--- FAIL: TestOperator (30.00s)\npanic: runtime error: invalid memory address or nil pointer dereference [recovered]\n\tpanic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x1741feb]\n\ngoroutine 50 [running]:\ntesting.tRunner.func1.2({0x189a8e0, 0x2ad5b30})\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1632 +0x230\ntesting.tRunner.func1()\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1635 +0x35e\npanic({0x189a8e0?, 0x2ad5b30?})\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/runtime/panic.go:785 +0x132\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).TriggerDeploymentReconcile(0x0, {0x1d86e90?, 0x2b2e6a0?}, {0x1ac23b4, 0xf})\n\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/operator.go:209 +0x2b\ngithub.com/pfeifferj/container-mom-go/pkg/operator.TestOperator(0xc0003e8b60)\n\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/operator_test.go:25 +0x9d\ntesting.tRunner(0xc0003e8b60, 0x1bc9358)\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1690 +0xf4\ncreated by testing.(*T).Run in goroutine 1\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1743 +0x390\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator\t30.275s\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed.\nDetected at:\n\t>  goroutine 26 [running]:\n\t>  runtime/debug.Stack()\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/runtime/debug/stack.go:26 +0x5e\n\t>  sigs.k8s.io/controller-runtime/pkg/log.eventuallyFulfillRoot()\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:60 +0xcd\n\t>  sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Error(0xc00012b4c0, {0x9ec740, 0xc00012d8c0}, {0x931cf2, 0x13}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:139 +0x5d\n\t>  github.com/go-logr/logr.Logger.Error({{0x9f0418?, 0xc00012b4c0?}, 0x0?}, {0x9ec740, 0xc00012d8c0}, {0x931cf2, 0x13}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/github.com/go-logr/logr/logr.go:301 +0xec\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator/health.(*Handler).Readyz(0xc0001c94f0, {0x9ee5a8, 0xc00012b480}, 0xc000187b80)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/health/health.go:35 +0x12d\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator/health.TestHealthChecks.func2(0xc0001ceea0)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/health/health_test.go:47 +0xe5\n\t>  testing.tRunner(0xc0001ceea0, 0xc0001c9590)\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1690 +0xf4\n\t>  created by testing.(*T).Run in goroutine 20\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1743 +0x390\n    health_test.go:49: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/health/health_test.go:49\n        \tError:      \tNot equal: \n        \t            \texpected: 200\n        \t            \tactual  : 503\n        \tTest:       \tTestHealthChecks/readyz\n--- FAIL: TestHealthChecks (30.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- FAIL: TestHealthChecks/readyz (30.00s)\nFAIL\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator/health\t30.005s\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator/testing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/server\t[no test files]\n=== RUN   TestListDeployments\n    client_test.go:28: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:28\n        \tError:      \tReceived unexpected error:\n        \t            \tserver selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments\n    client_test.go:32: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:32\n        \tError:      \tReceived unexpected error:\n        \t            \tserver selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments\n    client_test.go:33: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:33\n        \tError:      \t\"[]\" should have 2 item(s), but has 0\n        \tTest:       \tTestListDeployments\n--- FAIL: TestListDeployments (60.00s)\npanic: runtime error: index out of range [0] with length 0 [recovered]\n\tpanic: runtime error: index out of range [0] with length 0\n\ngoroutine 22 [running]:\ntesting.tRunner.func1.2({0x9ee800, 0xc000031ea8})\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1632 +0x230\ntesting.tRunner.func1()\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1635 +0x35e\npanic({0x9ee800?, 0xc000031ea8?})\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/runtime/panic.go:785 +0x132\ngithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb.TestListDeployments(0xc00016d520)\n\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:34 +0x499\ntesting.tRunner(0xc00016d520, 0xa7fe00)\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1690 +0xf4\ncreated by testing.(*T).Run in goroutine 1\n\t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1743 +0x390\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb\t60.009s\n=== RUN   TestMockMongoDBUtils\n--- PASS: TestMockMongoDBUtils (0.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock\t0.004s\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"❯ sudo podman rm -f container-mom-go_mongodb_1\nsudo make test-operator\n[sudo] password for josie:\nmake test-deps\nmake[1]: Entering directory '/home/josie/development/container-mom-go'\npodman-compose -f docker-compose.test.yml up -d\naf241e69648ad3d4e3a45877c5c3aed9f18129c868afc2ece3b20b2150e3f2d2\nec69750652baa357143c5466fba4438c534fa236f0c6749235ced5d88dffc588\ncontainer-mom-go_mongodb_1\nmake[1]: Leaving directory '/home/josie/development/container-mom-go'\ngo test -v ./pkg/operator/... -coverprofile=operator-coverage.out\n# github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\npkg/operator/operator_test.go:22:3: unknown field KubeConfig in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/config\".Config\npkg/operator/operator_test.go:30:12: op.Initialize undefined (type *Operator has no field or method Initialize)\nFAIL    github.com/pfeifferj/container-mom-go/pkg/operator [build failed]\n        github.com/pfeifferj/container-mom-go/pkg/operator/testing              coverage: 0.0% of statements\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.50s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.50s)\nPASS\ncoverage: 61.5% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/health       0.506s  coverage: 61.5% of statements\n=== RUN   TestListDeployments\n--- PASS: TestListDeployments (0.50s)\n=== RUN   TestMongoDBClient\n--- PASS: TestMongoDBClient (0.00s)\n=== RUN   TestMongoDBClientUtils\n--- PASS: TestMongoDBClientUtils (0.00s)\nPASS\ncoverage: 81.6% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb      0.512s  coverage: 81.6% of statements\n=== RUN   TestMockMongoDBUtils\n--- PASS: TestMockMongoDBUtils (0.00s)\nPASS\ncoverage: 57.9% of statements\nok      github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock 0.003s  coverage: 57.9% of statements\nFAIL\nmake: *** [Makefile:155: test-operator] Error 1\n","commandType":4},{"text":"Run go test -v ./...\n?   \tgithub.com/pfeifferj/container-mom-go/cmd/operator\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n# github.com/pfeifferj/container-mom-go/pkg/domain\nError: pkg/domain/manager.go:179:39: cannot use c.zoneID (variable of type string) as *cloudflare.ResourceContainer value in argument to c.api.CreateDNSRecord\nError: pkg/domain/manager.go:179:49: cannot use record (variable of type cloudflare.DNSRecord) as cloudflare.CreateDNSRecordParams value in argument to c.api.CreateDNSRecord\nError: pkg/domain/manager.go:189:24: c.api.DNSRecords undefined (type *cloudflare.API has no field or method DNSRecords)\nError: pkg/domain/manager.go:198:37: cannot use c.zoneID (variable of type string) as *cloudflare.ResourceContainer value in argument to c.api.DeleteDNSRecord\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/controller [build failed]\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/domain [build failed]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/interfaces\t[no test files]","commandType":4},{"text":"pls","commandType":4},{"text":"but shouldn't we just mock the mongodb shit for testing. because the actual operator uses the SaaS mongodb atalas","commandType":4},{"text":"pls","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: Error return value of `cursor.Close` is not checked (errcheck)\n  Error: Error return value of `client.Disconnect` is not checked (errcheck)\n  Error: Error return value of `client.Disconnect` is not checked (errcheck)\n  Error: Error return value of `client.Disconnect` is not checked (errcheck)\n  Warning: package-comments: should have a package comment (revive)\n  Warning: package-comments: should have a package comment (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: unused-parameter: parameter 'name' seems to be unused, consider removing or renaming it as _ (revive)\n  Warning: package-comments: should have a package comment (revive)\n  Error: composites: go.mongodb.org/mongo-driver/bson/primitive.E struct literal uses unkeyed fields (govet)\n  Error: composites: go.mongodb.org/mongo-driver/bson/primitive.E struct literal uses unkeyed fields (govet)\n  Error: SA1012: do not pass a nil Context, even if a function permits it; pass context.TODO if you are unsure about which Context to use (staticcheck)\n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  Error: issues found\n  Ran golangci-lint in 199123ms","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\n  Checking for go.mod: go.mod\n  Received 205520896 of 777073559 (26.4%), 195.6 MBs/sec\n  Received 461373440 of 777073559 (59.4%), 219.8 MBs/sec\n  Received 654311424 of 777073559 (84.2%), 206.4 MBs/sec\n  Cache Size: ~741 MB (777073559 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/c1934620-13bc-4c81-a6f6-45c846d2d360/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 777073559 of 777073559 (100.0%), 184.2 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_struct.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_types.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/operation_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_case.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_map.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_document.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_results.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/build-oss-fuzz-corpus/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testoidcauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testentauth/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/parse-api-report/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testkms/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/godriver-benchmark/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testaws/main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/cmd/testatlas/atlas_test.go: Cannot open: File exists","commandType":4},{"text":"aren't those just packagin issues?","commandType":4},{"text":"pls","commandType":4},{"text":"\nRun go test -v ./...\n  \n?   \tgithub.com/pfeifferj/container-mom-go/cmd/operator\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/controller\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/interfaces\t[no test files]\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n--- PASS: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestPeriodicFullSync\n--- PASS: TestPeriodicFullSync (0.15s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\n=== RUN   TestOperatorBilling\n=== RUN   TestOperatorBilling/GetCurrentCustomer\n=== RUN   TestOperatorBilling/GetResourceUsage\n=== RUN   TestOperatorBilling/GetBillingHistory\n=== RUN   TestOperatorBilling/UpdateBillingPlan\n=== RUN   TestOperatorBilling/UpdateBillingStatus\n--- PASS: TestOperatorBilling (0.00s)\n    --- PASS: TestOperatorBilling/GetCurrentCustomer (0.00s)\n    --- PASS: TestOperatorBilling/GetResourceUsage (0.00s)\n    --- PASS: TestOperatorBilling/GetBillingHistory (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingPlan (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingStatus (0.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator\t0.280s\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n--- PASS: TestHealthChecks (0.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (0.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/health\t0.006s\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator/testing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/server\t[no test files]\n=== RUN   TestListDeployments\n    client_test.go:31: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestListDeployments (5.00s)\n=== RUN   TestMongoDBClient\n    client_test.go:75: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestMongoDBClient (5.00s)\n=== RUN   TestMongoDBClientUtils\n    client_test.go:121: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:121\n        \t            \t\t\t\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:136\n        \tError:      \tReceived unexpected error:\n        \t            \tclient is disconnected\n        \tTest:       \tTestMongoDBClientUtils\n--- FAIL: TestMongoDBClientUtils (0.00s)\nFAIL\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb\t10.007s\n=== RUN   TestMockMongoDBUtils\n    mock_test.go:16: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/mock/mock_test.go:16\n        \tError:      \tExpected value not to be nil.\n        \tTest:       \tTestMockMongoDBUtils\n    mock_test.go:19: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/mock/mock_test.go:19\n        \tError:      \tExpected value not to be nil.\n        \tTest:       \tTestMockMongoDBUtils\n--- FAIL: TestMockMongoDBUtils (0.00s)\nFAIL\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock\t0.005s\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"do we clear the cache in ci?\n\nRun golangci/golangci-lint-action@v3\nprepare environment\n  Checking for go.mod: go.mod\n  Received 67108864 of 777073559 (8.6%), 64.0 MBs/sec\n  Received 243269632 of 777073559 (31.3%), 115.9 MBs/sec\n  Received 406847488 of 777073559 (52.4%), 129.3 MBs/sec\n  Received 578813952 of 777073559 (74.5%), 138.0 MBs/sec\n  Received 746586112 of 777073559 (96.1%), 142.4 MBs/sec\n  Cache Size: ~741 MB (777073559 B)\n  /usr/bin/tar -xf /home/runner/work/_temp/dd35ab95-c25e-44bc-9b23-02779caa1962/cache.tzst -P -C /home/runner/work/container-mom-go/container-mom-go --use-compress-program unzstd\n  Received 777073559 of 777073559 (100.0%), 123.5 MBs/sec\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/go.work.sum: Cannot open: File exists\n  /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/LICENSE: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/canary.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/single_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/multi.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_struct.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_types.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_main.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/operation_test.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/harness_case.go: Cannot open: File exists\n  Error: /usr/bin/tar: ../../../go/pkg/mod/go.mongodb.org/mongo-driver@v1.17.2/benchmark/bson_map.go: Cannot open: File exists","commandType":4},{"text":"check again","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: SA1019: mongo.NewClient is deprecated: Use [Connect] instead.  (staticcheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 229834ms","commandType":4},{"text":"consodildate the spread out config and secrets into one secret and one configmap. these should be mounted into the deployment for the operator","commandType":4},{"text":"why do we have 2 svc for the operator?","commandType":4},{"text":"the operator is running and connected to the mongodb but no ContainerMomDeployment CR instances get created based on the db entries ","commandType":4},{"text":"\nRun golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: func `(*DeploymentReconciler).listExistingDeployments` is unused (unused)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 223937ms","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T09:55:44Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:159\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:156\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T09:55:44Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T09:55:44Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T10:31:37Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:159\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:166\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T10:31:37Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:31:37Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"can we add a test for the things that was failing before?","commandType":4},{"text":"still gettin this on run in the cluster\n\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T10:52:22Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:161\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:156\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T10:52:22Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:26\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T10:52:22Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:06:48Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:25\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:161\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:162\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:06:48Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:25\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:06:48Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"\nRun golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: Error return value of `metav1.AddMetaToScheme` is not checked (errcheck)\n  Error: Error return value is not checked (errcheck)\n  Error: Error return value is not checked (errcheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 224178ms","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:29:02Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:25\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:162\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:163\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:29:02Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:25\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:29:02Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:43:32Z\",\"msg\":\"failed to list existing CRs\",\"error\":\"v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:27\\\"\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:162\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:45\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T11:43:32Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to list existing CRs: v1.ListOptions is not suitable for converting to \\\"container.mom/v1alpha1\\\" in scheme \\\"pkg/operator/operator.go:27\\\"\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T11:43:32Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"the sync succeeeds now but there are still no crs created","commandType":4},{"text":"fix the your project stsuff in github.com/your-project/log","commandType":4},{"text":"add tests for what we added","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [github.com/pfeifferj/container-mom-go/pkg/operator/mongodb.test]\n  Error: pkg/operator/mongodb/client_test.go:200:18: undefined: databaseName (typecheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 224462ms","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: Error return value of `cursor.Close` is not checked (errcheck)\n  Error: Error return value of `badClient.Disconnect` is not checked (errcheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 221711ms","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator/mongodb [github.com/pfeifferj/container-mom-go/pkg/operator/mongodb.test]\n  Error: pkg/operator/mongodb/client_test.go:209:18: method Client.ListDeployments already declared at pkg/operator/mongodb/client.go:33:18 (typecheck)\n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  Error: issues found\n  Ran golangci-lint in 233124ms","commandType":4},{"text":"=== RUN   TestListDeployments\n    client_test.go:39: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:39\n        \tError:      \tReceived unexpected error:\n        \t            \tserver selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments\n    client_test.go:39: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:39\n        \tError:      \tReceived unexpected error:\n        \t            \tserver selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments\n=== RUN   TestListDeployments/List_all_deployments\n    client_test.go:48: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:48\n        \tError:      \tReceived unexpected error:\n        \t            \tfailed to query deployments: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:49: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:49\n        \tError:      \t\"[]\" should have 2 item(s), but has 0\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:59: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:59\n        \tError:      \tShould be true\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:60: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:60\n        \tError:      \tNot equal: \n        \t            \texpected: \"test-1\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-test-1\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:61: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:61\n        \tError:      \tNot equal: \n        \t            \texpected: \"default\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-default\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:62: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:62\n        \tError:      \tNot equal: \n        \t            \texpected: \"https://github.com/test/repo-1\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-https://github.com/test/repo-1\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:59: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:59\n        \tError:      \tShould be true\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:60: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:60\n        \tError:      \tNot equal: \n        \t            \texpected: \"test-2\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-test-2\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:61: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:61\n        \tError:      \tNot equal: \n        \t            \texpected: \"container-mom-system\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-container-mom-system\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n    client_test.go:62: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:62\n        \tError:      \tNot equal: \n        \t            \texpected: \"https://github.com/test/repo-2\"\n        \t            \tactual  : \"\"\n        \t            \t\n        \t            \tDiff:\n        \t            \t--- Expected\n        \t            \t+++ Actual\n        \t            \t@@ -1 +1 @@\n        \t            \t-https://github.com/test/repo-2\n        \t            \t+\n        \tTest:       \tTestListDeployments/List_all_deployments\n=== RUN   TestListDeployments/List_empty_collection\n    client_test.go:69: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:69\n        \tError:      \tReceived unexpected error:\n        \t            \tserver selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments/List_empty_collection\n    client_test.go:72: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/mongodb/client_test.go:72\n        \tError:      \tReceived unexpected error:\n        \t            \tfailed to query deployments: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n        \tTest:       \tTestListDeployments/List_empty_collection\n=== RUN   TestListDeployments/Handle_database_error\n=== NAME  TestListDeployments\n    client_test.go:107: Failed to drop test database: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- FAIL: TestListDeployments (210.00s)\n    --- FAIL: TestListDeployments/List_all_deployments (30.00s)\n    --- FAIL: TestListDeployments/List_empty_collection (60.00s)\n    --- PASS: TestListDeployments/Handle_database_error (30.00s)\n=== RUN   TestMongoDBClient\n    client_test.go:136: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestMongoDBClient (5.00s)\n=== RUN   TestMongoDBClientUtils\n    client_test.go:194: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestMongoDBClientUtils (5.00s)\nFAIL\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb\t220.022s\n=== RUN   TestMockMongoDBUtils\n--- PASS: TestMockMongoDBUtils (0.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock\t0.015s\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"\nRun golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: `testing` redeclared in this block (typecheck)\n  Error: \tother declaration of testing (typecheck)\n  Error: undefined: testing.NewMockClient (typecheck)\n  Error: undefined: testing.NewErrorMockClient (typecheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 223505ms","commandType":4},{"text":"pls","commandType":4},{"text":"pls ","commandType":4},{"text":"pls","commandType":4},{"text":" pls","commandType":4},{"text":"shit keeps getting worse dude\n\n\n","commandType":4},{"text":"pls","commandType":4},{"text":"pls\n\n","commandType":4},{"text":"pls\n","commandType":4},{"text":"\nRun golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  level=warning msg=\"[runner] Can't run linter goanalysis_metalinter: buildir: failed to load package : could not load export data: no export data for \\\"github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/api\\\"\"\n  level=error msg=\"Running error: can't run linter goanalysis_metalinter\\nbuildir: failed to load package : could not load export data: no export data for \\\"github.com/pfeifferj/container-mom-go/pkg/operator/mongodb/api\\\"\"\n  Error: golangci-lint exit with code 3\n  Ran golangci-lint in 217879ms","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T14:24:36Z\",\"msg\":\"failed to fetch deployments from MongoDB\",\"error\":\"failed to decode deployments: error decoding key domain: cannot decode string into a v1alpha1.DomainSpec\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:109\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T14:24:36Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to fetch deployments: failed to decode deployments: error decoding key domain: cannot decode string into a v1alpha1.DomainSpec\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T14:24:36Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Name in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec) (typecheck)\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Name in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec) (typecheck)\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Name in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec (typecheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 222248ms","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Domain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec\n  Error: pkg/operator/deployment_controller.go:243:5: unknown field Subdomain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec) (typecheck)\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Domain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec\n  Error: pkg/operator/deployment_controller.go:243:5: unknown field Subdomain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec) (typecheck)\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\n  Error: pkg/operator/deployment_controller.go:241:5: unknown field Domain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec\n  Error: pkg/operator/deployment_controller.go:243:5: unknown field Subdomain in struct literal of type \"github.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\".DomainSpec (typecheck)\n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  Error: issues found\n  Ran golangci-lint in 223043ms","commandType":4},{"text":"pls","commandType":4},{"text":"check pls","commandType":4},{"text":"@types.go check","commandType":4},{"text":"@types.go ","commandType":4},{"text":"pls","commandType":4},{"text":"pls fix","commandType":4},{"text":"pls","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T16:21:36Z\",\"msg\":\"failed to fetch deployments from MongoDB\",\"error\":\"failed to decode deployments: error decoding key resources.cpu: cannot decode double into a string type\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:109\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T16:21:36Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to fetch deployments: failed to decode deployments: error decoding key resources.cpu: cannot decode double into a string type\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T16:21:36Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}\n","commandType":4},{"text":"I think float will be invalid because k8s can use e.g. 500m notation for milicores. the portal might use fractions instead. we need to harmonize that somehow. looping in @Deployments.jsx too","commandType":4},{"text":"let's make the portal stick to fraction to be user friendly and convert it on the operator side","commandType":4},{"text":"a record looks like this\n\n{\"_id\":{\"$oid\":\"67877a723e91f7e3da44b2a7\"},\"name\":\"josie-lol\",\"sourceType\":\"git\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\",\"containerImage\":\"\",\"template\":\"\",\"status\":\"deploying\",\"regions\":[\"eu-central\"],\"domain\":\"warm-kisses-queen.container.mom\",\"useWildcard\":true,\"subdomain\":\"warm-kisses-queen\",\"env\":[],\"resources\":{\"cpu\":{\"$numberDouble\":\"0.5\"},\"memory\":\"512Mi\"},\"createdBy\":\"google-oauth2|106704025519679639023\",\"createdAt\":{\"$date\":{\"$numberLong\":\"1736931954690\"}},\"__v\":{\"$numberInt\":\"0\"}}\n\n\nwe still get errors\n\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:17:25Z\",\"msg\":\"failed to fetch deployments from MongoDB\",\"error\":\"failed to decode deployments: error decoding key resources.cpu: cannot decode double into a string type\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:110\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:47\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:17:26Z\",\"logger\":\"setup\",\"msg\":\"Operator error\",\"error\":\"failed to start deployment controller: initial sync failed: failed to fetch deployments: failed to decode deployments: error decoding key resources.cpu: cannot decode double into a string type\",\"stacktrace\":\"main.main.func4\\n\\t/app/cmd/operator/main.go:65\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:26Z\",\"logger\":\"setup\",\"msg\":\"Context cancelled\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:17:26Z\",\"logger\":\"setup\",\"msg\":\"Shutting down\"}","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:249:36: cannot use mongoDeployment.Resources.CPU (variable of type string) as float64 value in argument to convertCPUToKubeFormat) (typecheck)\n  Error: could not import github.com/pfeifferj/container-mom-go/pkg/operator (-: # github.com/pfeifferj/container-mom-go/pkg/operator\n  Error: pkg/operator/deployment_controller.go:249:36: cannot use mongoDeployment.Resources.CPU (variable of type string) as float64 value in argument to convertCPUToKubeFormat) (typecheck)\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\n  Error: pkg/operator/deployment_controller.go:249:36: cannot use mongoDeployment.Resources.CPU (variable of type string) as float64 value in argument to convertCPUToKubeFormat (typecheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 221915ms","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:45:53Z\",\"msg\":\"deployment controller started successfully\"}\n\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-08T17:50:53Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:51:00Z\",\"msg\":\"handling health check\"}\n{\"level\":\"info\",\"ts\":\"2025-02-08T17:51:00Z\",\"msg\":\"handling readiness check\"}","commandType":4},{"text":"we should maybe just generate namespace names","commandType":4},{"text":"pls","commandType":4},{"text":"\n3m 15s\nRun go test -v ./...\n?   \tgithub.com/pfeifferj/container-mom-go/cmd/operator\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/apis/containermom/v1alpha1\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/billing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/builder\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/config\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/controller\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/domain\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/interfaces\t[no test files]\n=== RUN   TestDeploymentController\n--- PASS: TestDeploymentController (0.00s)\n=== RUN   TestDeploymentDeletion\n    deployment_controller_test.go:113: \n        \tError Trace:\t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/deployment_controller_test.go:113\n        \tError:      \tReceived unexpected error:\n        \t            \tfailed to list deployments: List on GroupVersionKind container.mom/v1alpha1, Kind=ContainerMomDeployment specifies selector on field metadata.name, but no index with name metadata.name has been registered for GroupVersionKind container.mom/v1alpha1, Kind=ContainerMomDeployment\n        \tTest:       \tTestDeploymentDeletion\n--- FAIL: TestDeploymentDeletion (0.00s)\n=== RUN   TestFullSync\n--- PASS: TestFullSync (0.00s)\n=== RUN   TestWorker\n--- PASS: TestWorker (0.10s)\n=== RUN   TestPeriodicFullSync\n--- PASS: TestPeriodicFullSync (0.15s)\n=== RUN   TestReconcilerUpdate\n--- PASS: TestReconcilerUpdate (0.00s)\n=== RUN   TestOperator\n--- PASS: TestOperator (0.00s)\n=== RUN   TestOperatorHealth\n--- PASS: TestOperatorHealth (0.00s)\n=== RUN   TestOperatorBilling\n=== RUN   TestOperatorBilling/GetCurrentCustomer\n=== RUN   TestOperatorBilling/GetResourceUsage\n=== RUN   TestOperatorBilling/GetBillingHistory\n=== RUN   TestOperatorBilling/UpdateBillingPlan\n=== RUN   TestOperatorBilling/UpdateBillingStatus\n--- PASS: TestOperatorBilling (0.00s)\n    --- PASS: TestOperatorBilling/GetCurrentCustomer (0.00s)\n    --- PASS: TestOperatorBilling/GetResourceUsage (0.00s)\n    --- PASS: TestOperatorBilling/GetBillingHistory (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingPlan (0.00s)\n    --- PASS: TestOperatorBilling/UpdateBillingStatus (0.00s)\n=== RUN   TestSchemeRegistration\n--- PASS: TestSchemeRegistration (0.00s)\nFAIL\nFAIL\tgithub.com/pfeifferj/container-mom-go/pkg/operator\t0.272s\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/api\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mongotest\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/operator/testing\t[no test files]\n?   \tgithub.com/pfeifferj/container-mom-go/pkg/server\t[no test files]\n=== RUN   TestHealthChecks\n=== RUN   TestHealthChecks/healthz\n=== RUN   TestHealthChecks/readyz\n[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed.\nDetected at:\n\t>  goroutine 22 [running]:\n\t>  runtime/debug.Stack()\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/runtime/debug/stack.go:26 +0x5e\n\t>  sigs.k8s.io/controller-runtime/pkg/log.eventuallyFulfillRoot()\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:60 +0xcd\n\t>  sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Error(0xc000204180, {0xaedb40, 0xc0000890e0}, {0xa1af3c, 0x13}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:139 +0x5d\n\t>  github.com/go-logr/logr.Logger.Error({{0xaf40b8?, 0xc000204180?}, 0x0?}, {0xaedb40, 0xc0000890e0}, {0xa1af3c, 0x13}, {0x0, 0x0, 0x0})\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/vendor/github.com/go-logr/logr/logr.go:301 +0xec\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator/health.(*Handler).Readyz(0xc0002022f0, {0xaf1298, 0xc000204140}, 0xc0001eb400)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/health/health.go:35 +0x12d\n\t>  github.com/pfeifferj/container-mom-go/pkg/operator/health.TestHealthChecks.func2(0xc0001e5520)\n\t>  \t/home/runner/work/container-mom-go/container-mom-go/pkg/operator/health/health_test.go:45 +0xe5\n\t>  testing.tRunner(0xc0001e5520, 0xc000202390)\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1690 +0xf4\n\t>  created by testing.(*T).Run in goroutine 20\n\t>  \t/home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.linux-amd64/src/testing/testing.go:1743 +0x390\n--- PASS: TestHealthChecks (30.00s)\n    --- PASS: TestHealthChecks/healthz (0.00s)\n    --- PASS: TestHealthChecks/readyz (30.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/health\t30.007s\n=== RUN   TestListDeployments\n=== RUN   TestListDeployments/List_all_deployments\n=== RUN   TestListDeployments/List_empty_collection\n=== RUN   TestListDeployments/Handle_database_error\n--- PASS: TestListDeployments (0.00s)\n    --- PASS: TestListDeployments/List_all_deployments (0.00s)\n    --- PASS: TestListDeployments/List_empty_collection (0.00s)\n    --- PASS: TestListDeployments/Handle_database_error (0.00s)\n=== RUN   TestMongoDBClient\n    client_test.go:99: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestMongoDBClient (5.00s)\n=== RUN   TestMongoDBClientUtils\n    client_test.go:157: MongoDB not available: server selection error: context deadline exceeded, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }\n--- SKIP: TestMongoDBClientUtils (5.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb\t10.018s\n=== RUN   TestMockMongoDBUtils\n--- PASS: TestMockMongoDBUtils (0.00s)\nPASS\nok  \tgithub.com/pfeifferj/container-mom-go/pkg/operator/mongodb/mock\t0.005s\nFAIL\nError: Process completed with exit code 1.","commandType":4},{"text":"Run golangci/golangci-lint-action@v3\nprepare environment\nrun golangci-lint\n  Running [/home/runner/golangci-lint-1.63.4-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...\n  Error: : # github.com/pfeifferj/container-mom-go/pkg/operator [github.com/pfeifferj/container-mom-go/pkg/operator.test]\n  Error: pkg/operator/deployment_controller_test.go:83:16: client.FieldIndexer undefined (type client.WithWatch has no field or method FieldIndexer)\n  Error: pkg/operator/deployment_controller_test.go:87:19: client.Object is not a type\n  Error: pkg/operator/deployment_controller_test.go:95:3: unknown field GetDeploymentFunc in struct literal of type mock.MockMongoDB\n  Error: pkg/operator/deployment_controller_test.go:102:3: unknown field Client in struct literal of type DeploymentReconciler, but does have client\n  Error: pkg/operator/deployment_controller_test.go:103:3: unknown field Scheme in struct literal of type DeploymentReconciler\n  Error: pkg/operator/deployment_controller_test.go:123:10: client.ObjectKey is not a type\n  Error: pkg/operator/deployment_controller_test.go:126:18: undefined: errors (typecheck)\n  \n  level=warning msg=\"[config_reader] The configuration option `run.skip-dirs` is deprecated, please use `issues.exclude-dirs`.\"\n  level=warning msg=\"[config_reader] The output format `github-actions` is deprecated, please use `colored-line-number`\"\n  level=warning msg=\"[lintersdb] The linter \\\"golint\\\" is deprecated (step 2) and deactivated. It should be removed from the list of disabled linters. https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle\"\n  \n  Error: issues found\n  Ran golangci-lint in 229104ms","commandType":4},{"text":"pls","commandType":4},{"text":"pls\\","commandType":4},{"text":"pls","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T09:38:14Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).periodicFullSync\\n\\t/app/pkg/operator/deployment_controller.go:97\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T09:38:16Z\",\"msg\":\"handling readiness check\"}\n\n","commandType":4},{"text":"{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"successfully connected to MongoDB\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"logger\":\"setup\",\"msg\":\"Starting HTTP server\",\"port\":\":8082\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"logger\":\"setup\",\"msg\":\"Starting operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"initializing operator\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting HTTP server\",\"addr\":\":8081\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"HTTP server is ready\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting deployment controller\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"starting MongoDB watch\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"performing full sync\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"listed deployments from MongoDB\",\"count\":5,\"collection\":\"deployments\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployments in MongoDB\",\"count\":5}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"josie-lol\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"foo\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"test\",\"namespace\":\"\",\"gitUrl\":\"https://github.com/pfeifferj/josie.lol\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"found deployment\",\"name\":\"wordpress\",\"namespace\":\"\",\"gitUrl\":\"\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"josie-lol\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"josie-lol\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"foo\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"foo\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"test\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"test\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"converting MongoDB deployment to CR\",\"name\":\"wordpress\",\"namespace\":\"\"}\n{\"level\":\"error\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"failed to check existing deployment\",\"deployment\":\"wordpress\",\"error\":\"an empty namespace may not be set when a resource name is provided\",\"stacktrace\":\"github.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).fullSync\\n\\t/app/pkg/operator/deployment_controller.go:144\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*DeploymentController).Start\\n\\t/app/pkg/operator/deployment_controller.go:46\\ngithub.com/pfeifferj/container-mom-go/pkg/operator.(*Operator).Run\\n\\t/app/pkg/operator/operator.go:165\\nmain.main.func4\\n\\t/app/cmd/operator/main.go:64\"}\n{\"level\":\"info\",\"ts\":\"2025-02-09T10:04:32Z\",\"msg\":\"deployment controller started successfully\"}\n","commandType":4},{"text":"how does the logic work that actually deploys workloads based on the containermomdpeloyment crs?","commandType":4},{"text":"how does the contoller determine the target cluster?","commandType":4},{"text":"the list of available target clusters and associated tokens to access them should be controlled through env vars so we can set up secrets and configmaps for them\n\nthe list of clusters should have a short name (e.g. euw, nae, eune etc.) and the api endpoint ","commandType":4},{"text":"for simplicity, add the new values to the exisitng operator secret and cm","commandType":4},{"text":"write tests for the workload controller","commandType":4},{"text":"pls","commandType":4},{"text":"fix this\n\n\n","commandType":4},{"text":"pls","commandType":4},{"text":"add a prereq task for these\n\n\nObtaining the installation program\n\nBefore you install OKD, download the installation file on the host you are using for installation.\nPrerequisites\n\n    You have a computer that runs Linux or macOS, with 500 MB of local disk space.\n\nProcedure\n\n    Download the installation program from https://github.com/openshift/okd/releases.\n    \t\n\n        The installation program creates several files on the computer that you use to install your cluster. You must keep the installation program and the files that the installation program creates after you finish installing the cluster. Both of the files are required to delete the cluster.\n\n        Deleting the files created by the installation program does not remove your cluster, even if the cluster failed during installation. To remove your cluster, complete the OKD uninstallation procedures for your specific cloud provider.\n\n    Extract the installation program. For example, on a computer that uses a Linux operating system, run the following command:\n\n    $ tar -xvf openshift-install-linux.tar.gz\n\n    Download your installation pull secret from Red Hat OpenShift Cluster Manager. This pull secret allows you to authenticate with the services that are provided by the included authorities, including Quay.io, which serves the container images for OKD components.\n\n    Using a pull secret from Red Hat OpenShift Cluster Manager is not required. You can use a pull secret for another private registry. Or, if you do not need the cluster to pull images from a private registry, you can use {\"auths\":{\"fake\":{\"auth\":\"aWQ6cGFzcwo=\"}}} as the pull secret when prompted during the installation.\n\n    If you do not use the pull secret from Red Hat OpenShift Cluster Manager:\n\n        Red Hat Operators are not available.\n\n        The Telemetry and Insights operators do not send data to Red Hat.\n\n        Content from the Red Hat Ecosystem Catalog Container images registry, such as image streams and Operators, are not available.\n\nInstalling the OpenShift CLI\n\nYou can install the OpenShift CLI (oc) to interact with OKD from a command-line interface. You can install oc on Linux, Windows, or macOS.\n\t\n\nIf you installed an earlier version of oc, you cannot use it to complete all of the commands in OKD 4. Download and install the new version of oc.\nInstalling the OpenShift CLI on Linux\n\nYou can install the OpenShift CLI (oc) binary on Linux by using the following procedure.\nProcedure\n\n    Navigate to https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/ and choose the folder for your operating system and architecture.\n\n    Download oc.tar.gz.\n\n    Unpack the archive:\n\n    $ tar xvf <file>\n\n    Place the oc binary in a directory that is on your PATH.\n\n    To check your PATH, execute the following command:\n\n    $ echo $PATH\n\nVerification\n\n    After you install the OpenShift CLI, it is available using the oc command:\n\n    $ oc <command>\n\n","commandType":4},{"text":"Creating the Kubernetes manifest and Ignition config files\n\nBecause you must modify some cluster definition files and manually start the cluster machines, you must generate the Kubernetes manifest and Ignition config files that the cluster needs to configure the machines.\n\nThe installation configuration file transforms into the Kubernetes manifests. The manifests wrap into the Ignition configuration files, which are later used to configure the cluster machines.\n\t\n\n    The Ignition config files that the OKD installation program generates contain certificates that expire after 24 hours, which are then renewed at that time. If the cluster is shut down before renewing the certificates and the cluster is later restarted after the 24 hours have elapsed, the cluster automatically recovers the expired certificates. The exception is that you must manually approve the pending node-bootstrapper certificate signing requests (CSRs) to recover kubelet certificates. See the documentation for Recovering from expired control plane certificates for more information.\n\n    It is recommended that you use Ignition config files within 12 hours after they are generated because the 24-hour certificate rotates from 16 to 22 hours after the cluster is installed. By using the Ignition config files within 12 hours, you can avoid installation failure if the certificate update runs during installation.\n\nPrerequisites\n\n    You obtained the OKD installation program.\n\n    You created the install-config.yaml installation configuration file.\n\nProcedure\n\n    Change to the directory that contains the OKD installation program and generate the Kubernetes manifests for the cluster:\n\n    $ ./openshift-install create manifests --dir <installation_directory> \n\n    \tFor <installation_directory>, specify the installation directory that contains the install-config.yaml file you created.\n    \t\n\n    If you are installing a three-node cluster, skip the following step to allow the control plane nodes to be schedulable.\n    \t\n\n    When you configure control plane nodes from the default unschedulable to schedulable, additional subscriptions are required. This is because control plane nodes then become compute nodes.\n\n    Check that the mastersSchedulable parameter in the <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes manifest file is set to false. This setting prevents pods from being scheduled on the control plane machines:\n\n        Open the <installation_directory>/manifests/cluster-scheduler-02-config.yml file.\n\n        Locate the mastersSchedulable parameter and ensure that it is set to false.\n\n        Save and exit the file.\n\n    To create the Ignition configuration files, run the following command from the directory that contains the installation program:\n\n    $ ./openshift-install create ignition-configs --dir <installation_directory> \n\n    \tFor <installation_directory>, specify the same installation directory.\n\n    Ignition config files are created for the bootstrap, control plane, and compute nodes in the installation directory. The kubeadmin-password and kubeconfig files are created in the ./<installation_directory>/auth directory:\n\n    .\n    ├── auth\n    │   ├── kubeadmin-password\n    │   └── kubeconfig\n    ├── bootstrap.ign\n    ├── master.ign\n    ├── metadata.json\n    └── worker.ign\n\nAdditional resources\n\n    See Recovering from expired control plane certificates for more information about recovering kubelet certificates.\n\nInstalling FCOS and starting the OKD bootstrap process\n\nTo install OKD on bare metal infrastructure that you provision, you must install Fedora CoreOS (FCOS) on the machines. When you install FCOS, you must provide the Ignition config file that was generated by the OKD installation program for the type of machine you are installing. If you have configured suitable networking, DNS, and load balancing infrastructure, the OKD bootstrap process begins automatically after the FCOS machines have rebooted.\n\nTo install FCOS on the machines, follow either the steps to use an ISO image or network PXE booting.\n\t\n\nThe compute node deployment steps included in this installation document are FCOS-specific. If you choose instead to deploy Fedora-based compute nodes, you take responsibility for all operating system life cycle management and maintenance, including performing system updates, applying patches, and completing all other required tasks. Only Fedora 8 compute machines are supported.\n\nYou can configure FCOS during ISO and PXE installations by using the following methods:\n\n    Kernel arguments: You can use kernel arguments to provide installation-specific information. For example, you can specify the locations of the FCOS installation files that you uploaded to your HTTP server and the location of the Ignition config file for the type of node you are installing. For a PXE installation, you can use the APPEND parameter to pass the arguments to the kernel of the live installer. For an ISO installation, you can interrupt the live installation boot process to add the kernel arguments. In both installation cases, you can use special coreos.inst.* arguments to direct the live installer, as well as standard installation boot arguments for turning standard kernel services on or off.\n\n    Ignition configs: OKD Ignition config files (*.ign) are specific to the type of node you are installing. You pass the location of a bootstrap, control plane, or compute node Ignition config file during the FCOS installation so that it takes effect on first boot. In special cases, you can create a separate, limited Ignition config to pass to the live system. That Ignition config could do a certain set of tasks, such as reporting success to a provisioning system after completing installation. This special Ignition config is consumed by the coreos-installer to be applied on first boot of the installed system. Do not provide the standard control plane and compute node Ignition configs to the live ISO directly.\n\n    coreos-installer: You can boot the live ISO installer to a shell prompt, which allows you to prepare the permanent system in a variety of ways before first boot. In particular, you can run the coreos-installer command to identify various artifacts to include, work with disk partitions, and set up networking. In some cases, you can configure features on the live system and copy them to the installed system.\n\nWhether to use an ISO or PXE install depends on your situation. A PXE install requires an available DHCP service and more preparation, but can make the installation process more automated. An ISO install is a more manual process and can be inconvenient if you are setting up more than a few machines.\nInstalling FCOS by using an ISO image\n\nYou can use an ISO image to install FCOS on the machines.\nPrerequisites\n\n    You have created the Ignition config files for your cluster.\n\n    You have configured suitable network, DNS and load balancing infrastructure.\n\n    You have an HTTP server that can be accessed from your computer, and from the machines that you create.\n\n    You have reviewed the Advanced FCOS installation configuration section for different ways to configure features, such as networking and disk partitioning.\n\nProcedure\n\n    Obtain the SHA512 digest for each of your Ignition config files. For example, you can use the following on a system running Linux to get the SHA512 digest for your bootstrap.ign Ignition config file:\n\n    $ sha512sum <installation_directory>/bootstrap.ign\n\n    The digests are provided to the coreos-installer in a later step to validate the authenticity of the Ignition config files on the cluster nodes.\n\n    Upload the bootstrap, control plane, and compute node Ignition config files that the installation program created to your HTTP server. Note the URLs of these files.\n    \t\n\n    You can add or change configuration settings in your Ignition configs before saving them to your HTTP server. If you plan to add more compute machines to your cluster after you finish installation, do not delete these files.\n\n    From the installation host, validate that the Ignition config files are available on the URLs. The following example gets the Ignition config file for the bootstrap node:\n\n    $ curl -k http://<HTTP_server>/bootstrap.ign \n\n    Example output\n\n      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                     Dload  Upload   Total   Spent    Left  Speed\n      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{\"ignition\":{\"version\":\"3.2.0\"},\"passwd\":{\"users\":[{\"name\":\"core\",\"sshAuthorizedKeys\":[\"ssh-rsa...\n\n    Replace bootstrap.ign with master.ign or worker.ign in the command to validate that the Ignition config files for the control plane and compute nodes are also available.\n\n    Although it is possible to obtain the FCOS images that are required for your preferred method of installing operating system instances from the FCOS page, the recommended way to obtain the correct version of your FCOS images are from the output of openshift-install command:\n\n    $ openshift-install coreos print-stream-json | grep '\\.iso[^.]'\n\n    Example output\n\n    \"location\": \"<url>/prod/streams/stable/builds/<release>/x86_64/fedora-coreos-<release>-live.x86_64.iso\",\n\n    \t\n\n    The FCOS images might not change with every release of OKD. You must download images with the highest version that is less than or equal to the OKD version that you install. Use the image versions that match your OKD version if they are available. Use only ISO images for this procedure. FCOS qcow2 images are not supported for this installation type.\n\n    ISO file names resemble the following example:\n\n    fedora-coreos-<version>-live.<architecture>.iso\n\n    Use the ISO to start the FCOS installation. Use one of the following installation options:\n\n        Burn the ISO image to a disk and boot it directly.\n\n        Use ISO redirection by using a lights-out management (LOM) interface.\n\n    Boot the FCOS ISO image without specifying any options or interrupting the live boot sequence. Wait for the installer to boot into a shell prompt in the FCOS live environment.\n    \t\n\n    It is possible to interrupt the FCOS installation boot process to add kernel arguments. However, for this ISO procedure you should use the coreos-installer command as outlined in the following steps, instead of adding kernel arguments.\n\n    Run the coreos-installer command and specify the options that meet your installation requirements. At a minimum, you must specify the URL that points to the Ignition config file for the node type, and the device that you are installing to:\n\n    $ sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest>  \n\n    \tYou must run the coreos-installer command by using sudo, because the core user does not have the required root privileges to perform the installation.\n    \tThe --ignition-hash option is required when the Ignition config file is obtained through an HTTP URL to validate the authenticity of the Ignition config file on the cluster node. <digest> is the Ignition config file SHA512 digest obtained in a preceding step.\n    \t\n\n    If you want to provide your Ignition config files through an HTTPS server that uses TLS, you can add the internal certificate authority (CA) to the system trust store before running coreos-installer.\n\n    The following example initializes a bootstrap node installation to the /dev/sda device. The Ignition config file for the bootstrap node is obtained from an HTTP web server with the IP address 192.168.1.2:\n\n    $ sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b\n\n    Monitor the progress of the FCOS installation on the console of the machine.\n    \t\n\n    Be sure that the installation is successful on each node before commencing with the OKD installation. Observing the installation process can also help to determine the cause of FCOS installation issues that might arise.\n\n    After FCOS installs, you must reboot the system. During the system reboot, it applies the Ignition config file that you specified.\n\n    Check the console output to verify that Ignition ran.\n    Example command\n\n    Ignition: ran on 2022/03/14 14:48:33 UTC (this boot)\n    Ignition: user-provided config was applied\n\n    Continue to create the other machines for your cluster.\n    \t\n\n    You must create the bootstrap and control plane machines at this time. If the control plane machines are not made schedulable, also create at least two compute machines before you install OKD.\n\n    If the required network, DNS, and load balancer infrastructure are in place, the OKD bootstrap process begins automatically after the FCOS nodes have rebooted.\n    \t\n\n    FCOS nodes do not include a default password for the core user. You can access the nodes by running ssh core@<node>.<cluster_name>.<base_domain> as a user with access to the SSH private key that is paired to the public key that you specified in your install_config.yaml file. OKD 4 cluster nodes running FCOS are immutable and rely on Operators to apply cluster changes. Accessing cluster nodes by using SSH is not recommended. However, when investigating installation issues, if the OKD API is not available, or the kubelet is not properly functioning on a target node, SSH access might be required for debugging or disaster recovery.\n","commandType":4},{"text":"populate to vars in the inventory and rename ocp preficed vars to okd","commandType":4},{"text":"the hub cluster should run on these machines using hybrid master, workers\n\nNode Role\n\nMAC\n\nIP\n\nDC\n\nmaster0\n\t\n\n \n\t\n\n188.244.117.200\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster1\n\t\n\n \n\t\n\n188.244.117.223\n\t\n\nHatch ZRH (Bare Metal)\n\nmaster2\n\t\n\n \n\t\n\n188.244.117.142\n\t\n\nHatch ZRH (Bare Metal)","commandType":4},{"text":"use this release @https://github.com/okd-project/okd/releases/tag/4.17.0-okd-scos.0 ","commandType":4},{"text":"add a readme to the ansible dir to documentthe automation","commandType":4},{"text":"you only added the first paragraph to the readme","commandType":4},{"text":"nigga u stiull haven't written the content into the file","commandType":4},{"text":"pls","commandType":4},{"text":"fix the hosts.yml","commandType":4},{"text":"structure it so we can add more clusters later: e.g.\n\n- hub\n- eu-north\n- eu-west\n- us-east\n- us-west","commandType":4},{"text":"I think  the cluster name gets prepended to the domain so the base domain can stay the same","commandType":4},{"text":"add a test cluster","commandType":4},{"text":"pls","commandType":4},{"text":"fatal: [master2]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Warning: Permanently added '188.244.117.142' (ED25519) to the list of known hosts.\\r\\nno such identity: /home/josie/.ssh/id_ed25519: No such file or directory\\r\\nroot@188.244.117.142: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\", \"unreachable\": true}","commandType":4}]


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


key: history.entries
value:
  [{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/inventories/hub/hosts.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/ansible.cfg","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/README.md","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/roles/okd_install/tasks/main.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/inventories/hub/group_vars/okd_cluster.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/roles/okd_install/defaults/main.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/roles/okd_install/templates/install-config.yaml.j2","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/operator.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/workload_controller.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/workload_controller_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/deployment_controller.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/controller/deployment_controller.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/cluster/config.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/types.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/types.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/config/index.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/components/Deployments.jsx","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/cmd/operator/main.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/types.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/crds/containermom.io_deployments.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/api/types.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/api/interface.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/mongotest/error_mock_client.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/mongotest/mock_client.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/testing/error_mock_client.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/testing/mock_client.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/clusterrole.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/secrets/registry-secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/service.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/kustomization.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/deployment-operator.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/route.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal/service.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal/route.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal/deployment.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal/configmap.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/service.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/deployment.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/configmap.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/common/.dockerconfigjson","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/common/serviceaccount.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/common/registry-secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/common/mongodb-secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/.github/workflows/operator.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/client.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/testing/mock_operator.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/testing/mongodb.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/mock/mock_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/health/health.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/health/health_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/client_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/deployment_reconciler_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/deployment_reconciler.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/mock/mock.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/interface.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/docker-compose.test.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/go.mod","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/Makefile","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/operator_test.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/operator/testing/helper.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/domain/manager.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/config.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/contexts/AuthContext.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/services/auth.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/public/index.html","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/App.jsx","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/nginx.conf","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/components/Navigation.jsx","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/components/Profile.jsx","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal-backend/kustomization.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-static-secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-connection.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-auth.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/landing/deployment.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/ingress/cluster-config.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/ingress/ingress-patch.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/landing/route.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/.github/workflows/landing-page.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/build/Dockerfile.portal","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/landing-page/nginx.conf","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/landing-page/Dockerfile","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/landing/kustomization.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/landing/service.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/portal/kustomization.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/kustomization.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/metallb/config.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/cert-manager/cloudflare-secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/cert-manager/cluster-issuer.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/cert-manager/wildcard-certificate.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/ansible/playbooks/provision_cluster.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/secret.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/configmap.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/operator/clusterrolebinding.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/base/common/namespace.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/index.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/package.json","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/package-lock.json","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/components/Navigation.css","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/src/constants.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal/.env","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/.github/workflows/portal.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/examples/deployment.yaml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal-backend/index.js","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/builder/builder.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/register.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/.golangci.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/controller/customer_controller.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/billing/service.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/interfaces/operator.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/manifests/README.md","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/server/server.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/customer_types.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/container-mom-go/.github/workflows/ci.yml","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/config/config.go","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/portal-backend/.env","forceFile":true,"options":{"override":"default"}}},{"editor":{"resource":"file:///home/josie/development/container-mom-go/pkg/web/portal/handlers.go","forceFile":true,"options":{"override":"default"}}}]


key: codelens/cache2
value:
  {"file:///home/josie/development/container-mom-go/portal/src/components/Navigation.css":{"lineCount":153,"lines":[]},"file:///home/josie/development/container-mom-go/portal/src/components/Navigation.jsx":{"lineCount":99,"lines":[]},"file:///home/josie/development/container-mom-go/portal/nginx.conf":{"lineCount":14,"lines":[]},"file:///home/josie/development/container-mom-go/portal/package-lock.json":{"lineCount":19044,"lines":[]},"file:///home/josie/development/container-mom-go/portal/package.json":{"lineCount":42,"lines":[17]},"file:///home/josie/development/container-mom-go/portal/src/index.js":{"lineCount":25,"lines":[]},"file:///home/josie/development/container-mom-go/portal/src/App.jsx":{"lineCount":73,"lines":[]},"file:///home/josie/development/container-mom-go/portal/src/services/auth.js":{"lineCount":55,"lines":[]},"file:///home/josie/development/container-mom-go/manifests/base/portal/configmap.yaml":{"lineCount":7,"lines":[]},"file:///home/josie/development/container-mom-go/portal/src/config.js":{"lineCount":8,"lines":[]},"file:///home/josie/development/container-mom-go/pkg/operator/mongodb/types.go":{"lineCount":33,"lines":[]},"file:///home/josie/development/container-mom-go/clusters-config.yaml":{"lineCount":30,"lines":[]},"file:///home/josie/development/container-mom-go/manifests/base/operator/configmap.yaml":{"lineCount":13,"lines":[]},"file:///home/josie/development/container-mom-go/manifests/base/operator/secret.yaml":{"lineCount":18,"lines":[]},"file:///home/josie/development/container-mom-go/pkg/controller/deployment_controller.go":{"lineCount":196,"lines":[]},"file:///home/josie/development/container-mom-go/pkg/operator/deployment_controller.go":{"lineCount":285,"lines":[]},"file:///home/josie/development/container-mom-go/pkg/operator/workload_controller.go":{"lineCount":249,"lines":[]},"file:///home/josie/development/container-mom-go/pkg/operator/operator.go":{"lineCount":260,"lines":[]},"file:///home/josie/development/container-mom-go/ansible/inventories/hub/hosts.yml":{"lineCount":50,"lines":[]}}


key: memento/workbench.editors.files.textFileEditor
value:
  {"textEditorViewState":[["file:///home/josie/development/container-mom-go/pkg/controller/customer_controller.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":75,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/pkg/web/portal/handlers.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":390,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/customer_types.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":67,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/Makefile",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":8,"column":12},"position":{"lineNumber":8,"column":12}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":122,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/README.md",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":13,"column":23},"position":{"lineNumber":13,"column":23}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal-backend/.env",{"0":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":11,"column":1},"position":{"lineNumber":11,"column":118}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/.golangci.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":3,"column":1},"position":{"lineNumber":3,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":25,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":53,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/health/health.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":8,"column":1},"position":{"lineNumber":8,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":35,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/register.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":37,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/builder/builder.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":177,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal-backend/index.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":13,"column":63},"position":{"lineNumber":13,"column":63}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":35,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/builder/service.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":18},"position":{"lineNumber":7,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":7,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/cert-manager/wildcard-certificate.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/examples/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/cert-manager/cluster-issuer.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":17,"column":27},"position":{"lineNumber":17,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":17,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/cert-manager/cloudflare-secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":8,"column":54},"position":{"lineNumber":8,"column":54}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/api-ingress.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":19},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/ingress-class.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/default-tls-config.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":12,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/kustomization.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":25,"column":19},"position":{"lineNumber":25,"column":19}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":31,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/kustomization.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal/kustomization.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":1},"position":{"lineNumber":7,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":7,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/portal-ingress.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/routes/api-route.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":15,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/build/Dockerfile.portal",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":30,"column":35},"position":{"lineNumber":30,"column":35}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":30,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/.github/workflows/portal.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":25,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":54,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/.github/workflows/landing-page.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":49,"column":42},"position":{"lineNumber":49,"column":42}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":50,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/landing/route.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":21},"position":{"lineNumber":7,"column":21}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":15,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/ingress-patch.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/ingress/cluster-config.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":7,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/landing/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":20,"column":63},"position":{"lineNumber":20,"column":63}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":3,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-auth.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":13,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-connection.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":7,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/secrets/vault-static-secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":21,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/components/Profile.jsx",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":65,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/.env",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":3,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/constants.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":7,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":49,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/components/Navigation.css",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":153,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/components/Navigation.jsx",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":28,"column":41},"position":{"lineNumber":28,"column":41}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":29,"column":1},"firstPositionDeltaTop":-14},"contributionsState":{"editor.contrib.folding":{"lineCount":99,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/nginx.conf",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":14,"column":2},"position":{"lineNumber":14,"column":2}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/package-lock.json",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":19044,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/package.json",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":42,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/index.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":5,"column":1},"firstPositionDeltaTop":-8},"contributionsState":{"editor.contrib.folding":{"lineCount":25,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/App.jsx",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":18,"column":12},"position":{"lineNumber":18,"column":12}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":4,"column":1},"firstPositionDeltaTop":-7},"contributionsState":{"editor.contrib.folding":{"lineCount":73,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/services/auth.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":8,"column":39},"position":{"lineNumber":8,"column":39}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":27,"column":1},"firstPositionDeltaTop":-10},"contributionsState":{"editor.contrib.folding":{"lineCount":55,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/config.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":51},"position":{"lineNumber":4,"column":51}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/domain/manager.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":9,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":230,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/mongodb/client.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":2,"column":1},"position":{"lineNumber":2,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":97,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/.github/workflows/operator.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":27,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":84,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/common/mongodb-secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":33},"position":{"lineNumber":5,"column":33}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":9,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/common/namespace.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":9},"position":{"lineNumber":4,"column":9}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/common/registry-secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":33},"position":{"lineNumber":5,"column":33}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/common/serviceaccount.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":31,"column":31},"position":{"lineNumber":31,"column":31}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":35,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/common/.dockerconfigjson",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":3,"column":1},"position":{"lineNumber":3,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/configmap.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":33},"position":{"lineNumber":5,"column":33}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":25},"position":{"lineNumber":4,"column":25}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":32,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":25},"position":{"lineNumber":4,"column":25}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":15,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/service.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":6,"column":5},"position":{"lineNumber":6,"column":5}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":12,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal/configmap.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":21},"position":{"lineNumber":4,"column":21}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":33},"position":{"lineNumber":5,"column":33}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":30,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal/route.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":15},"position":{"lineNumber":7,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":15,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal/service.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":3,"column":9},"position":{"lineNumber":3,"column":9}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":12,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/portal-backend/route.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":32},"position":{"lineNumber":7,"column":32}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":15,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/clusterrole.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":16,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/clusterrolebinding.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/deployment-operator.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":24,"column":9},"position":{"lineNumber":24,"column":9}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":49,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/kustomization.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":5,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/service.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/manager/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":35,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/manager/config.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":39,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/billing/cluster-pricing.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":36,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/billing/deployment.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":84,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/secrets/registry-secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":19,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/crds/containermom.io_deployments.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":4,"column":46},"position":{"lineNumber":4,"column":46}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":14,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":88,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/apis/containermom/v1alpha1/types.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":361,"column":46},"position":{"lineNumber":361,"column":46}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":344,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":433,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/cmd/operator/main.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":84,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/components/Deployments.jsx",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":31,"column":1},"firstPositionDeltaTop":-18},"contributionsState":{"editor.contrib.folding":{"lineCount":1349,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/portal/src/config/index.js",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/deployment_controller_test.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":44,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":299,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/types.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/mongodb/types.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":33,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/configmap.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":11,"column":3},"position":{"lineNumber":11,"column":3}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":13,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/manifests/base/operator/secret.yaml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":18,"column":3},"position":{"lineNumber":18,"column":3}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":18,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":true}}}],["file:///home/josie/development/container-mom-go/pkg/controller/deployment_controller.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":9,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":196,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/deployment_controller.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":285,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/workload_controller.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":144,"column":1},"firstPositionDeltaTop":-7},"contributionsState":{"editor.contrib.folding":{"lineCount":269,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/pkg/operator/operator.go",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":102,"column":26},"position":{"lineNumber":102,"column":26}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":82,"column":1},"firstPositionDeltaTop":-15},"contributionsState":{"editor.contrib.folding":{"lineCount":260,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/roles/okd_install/templates/install-config.yaml.j2",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":165,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/roles/okd_install/defaults/main.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":1,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/inventories/hub/group_vars/okd_cluster.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":3,"column":16},"position":{"lineNumber":3,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":48,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/roles/okd_install/tasks/main.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":199,"column":1},"firstPositionDeltaTop":-14},"contributionsState":{"editor.contrib.folding":{"lineCount":225,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/playbooks/provision_cluster.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":19,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/README.md",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":51,"column":77},"position":{"lineNumber":51,"column":77}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":98,"column":1},"firstPositionDeltaTop":-1},"contributionsState":{"editor.contrib.folding":{"lineCount":148,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/ansible.cfg",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":3,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}],["file:///home/josie/development/container-mom-go/ansible/inventories/hub/hosts.yml",{"0":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":26,"column":30},"position":{"lineNumber":26,"column":30}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":41,"column":1},"firstPositionDeltaTop":-3},"contributionsState":{"editor.contrib.folding":{"lineCount":50,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false}}}]]}


