From c6c5954b74969416cb6e97764d5ea6e413a3ca02 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 17:50:48 -0500 Subject: [PATCH 1/7] fix nil base directory case with handleRepositories --- src/common/reconciler.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/common/reconciler.go b/src/common/reconciler.go index 9257a37c..720c0086 100644 --- a/src/common/reconciler.go +++ b/src/common/reconciler.go @@ -363,6 +363,10 @@ func (r *ServiceReconciler) handleTools(service *opslevel.Service, registration func (r *ServiceReconciler) handleRepositories(service *opslevel.Service, registration opslevel_jq_parser.ServiceRegistration) { for _, repositoryCreate := range registration.Repositories { + if repositoryCreate.BaseDirectory == nil { + log.Warn().Msgf("[%s] Repository with alias: '%+v' has no base directory so it cannot be looked up ... skipping", service.Name, repositoryCreate) + continue + } foundRepository, foundRepositoryErr := r.client.GetRepositoryWithAlias(*repositoryCreate.Repository.Alias) if foundRepositoryErr != nil { log.Warn().Msgf("[%s] Repository with alias: '%+v' not found so it cannot be attached to service ... skipping", service.Name, repositoryCreate) From 8652a3ae38df02c8a182aeb12ac7c5a614c0be9d Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 18:23:38 -0500 Subject: [PATCH 2/7] re-add logging like normal --- src/common/reconciler.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/common/reconciler.go b/src/common/reconciler.go index 720c0086..5c884511 100644 --- a/src/common/reconciler.go +++ b/src/common/reconciler.go @@ -363,16 +363,17 @@ func (r *ServiceReconciler) handleTools(service *opslevel.Service, registration func (r *ServiceReconciler) handleRepositories(service *opslevel.Service, registration opslevel_jq_parser.ServiceRegistration) { for _, repositoryCreate := range registration.Repositories { - if repositoryCreate.BaseDirectory == nil { - log.Warn().Msgf("[%s] Repository with alias: '%+v' has no base directory so it cannot be looked up ... skipping", service.Name, repositoryCreate) - continue + repoCreateString := "repoCreate{}" + b, err := json.Marshal(repositoryCreate) + if err == nil { + repoCreateString = string(b) } foundRepository, foundRepositoryErr := r.client.GetRepositoryWithAlias(*repositoryCreate.Repository.Alias) if foundRepositoryErr != nil { - log.Warn().Msgf("[%s] Repository with alias: '%+v' not found so it cannot be attached to service ... skipping", service.Name, repositoryCreate) + log.Warn().Msgf("[%s] Repository with alias: '%s' not found so it cannot be attached to service ... skipping", service.Name, repoCreateString) continue } else if foundRepository == nil { - log.Warn().Msgf("[%s] Repository with alias: '%+v' call to GetRepositoryWithAlias unexpectedly returned nil - please submit a bug report ... skipping", service.Name, repositoryCreate) + log.Warn().Msgf("[%s] Repository with alias: '%s' call to GetRepositoryWithAlias unexpectedly returned nil - please submit a bug report ... skipping", service.Name, repoCreateString) continue } serviceRepository := foundRepository.GetService(service.Id, *repositoryCreate.BaseDirectory) @@ -384,22 +385,22 @@ func (r *ServiceReconciler) handleRepositories(service *opslevel.Service, regist } err := r.client.UpdateServiceRepository(repositoryUpdate) if err != nil { - log.Error().Msgf("[%s] Failed updating repository '%+v'\n\tREASON: %v", service.Name, repositoryCreate, err.Error()) + log.Error().Msgf("[%s] Failed updating repository '%s'\n\tREASON: %v", service.Name, repoCreateString, err.Error()) continue } else { - log.Info().Msgf("[%s] Updated repository '%+v'", service.Name, repositoryCreate) + log.Info().Msgf("[%s] Updated repository '%s'", service.Name, repoCreateString) continue } } - log.Debug().Msgf("[%s] Repository '%+v' already attached to service ... skipping", service.Name, repositoryCreate) + log.Debug().Msgf("[%s] Repository '%s' already attached to service ... skipping", service.Name, repoCreateString) continue } repositoryCreate.Service = opslevel.IdentifierInput{Id: &service.Id} - err := r.client.CreateServiceRepository(repositoryCreate) + err = r.client.CreateServiceRepository(repositoryCreate) if err != nil { - log.Error().Msgf("[%s] Failed assigning repository '%+v'\n\tREASON: %v", service.Name, repositoryCreate, err.Error()) + log.Error().Msgf("[%s] Failed assigning repository '%s'\n\tREASON: %v", service.Name, repoCreateString, err.Error()) } else { - log.Info().Msgf("[%s] Attached repository '%+v'", service.Name, repositoryCreate) + log.Info().Msgf("[%s] Attached repository '%s'", service.Name, repoCreateString) } } } From 149b0519325fe5ac65ff5799ece9c198ba383894 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 18:28:09 -0500 Subject: [PATCH 3/7] wip --- src/common/reconciler.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/reconciler.go b/src/common/reconciler.go index 5c884511..196f45bb 100644 --- a/src/common/reconciler.go +++ b/src/common/reconciler.go @@ -363,6 +363,9 @@ func (r *ServiceReconciler) handleTools(service *opslevel.Service, registration func (r *ServiceReconciler) handleRepositories(service *opslevel.Service, registration opslevel_jq_parser.ServiceRegistration) { for _, repositoryCreate := range registration.Repositories { + if repositoryCreate.Repository.Alias == nil || *repositoryCreate.Repository.Alias == "null" { + continue + } repoCreateString := "repoCreate{}" b, err := json.Marshal(repositoryCreate) if err == nil { @@ -376,7 +379,10 @@ func (r *ServiceReconciler) handleRepositories(service *opslevel.Service, regist log.Warn().Msgf("[%s] Repository with alias: '%s' call to GetRepositoryWithAlias unexpectedly returned nil - please submit a bug report ... skipping", service.Name, repoCreateString) continue } - serviceRepository := foundRepository.GetService(service.Id, *repositoryCreate.BaseDirectory) + var serviceRepository *opslevel.ServiceRepository + if repositoryCreate.BaseDirectory != nil { + serviceRepository = foundRepository.GetService(service.Id, *repositoryCreate.BaseDirectory) + } if serviceRepository != nil { if repositoryCreate.DisplayName != nil && serviceRepository.DisplayName != *repositoryCreate.DisplayName { repositoryUpdate := opslevel.ServiceRepositoryUpdateInput{ From e20aa6e4913941887cd936721d7f297a5f68bafc Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 18:30:10 -0500 Subject: [PATCH 4/7] gitignore the binary --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0543e5ad..17172f70 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ src/dist **/coverage.txt **/go.work* **/opslevel-k8s.yaml +**/kubectl-opslevel \ No newline at end of file From 5774da619d76488dd220755dfc9d0326355561f9 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 19:15:23 -0500 Subject: [PATCH 5/7] add og branch --- src/submodules/opslevel-go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/opslevel-go b/src/submodules/opslevel-go index e8d6084b..cb0ab66a 160000 --- a/src/submodules/opslevel-go +++ b/src/submodules/opslevel-go @@ -1 +1 @@ -Subproject commit e8d6084b8e2d41d79d46c699b62b7b562cde824c +Subproject commit cb0ab66a88ffbfcfbe2f7754f381d429542695d9 From 59c7f3b0c0310e49afeb0c1454fee345c0fbbc36 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Wed, 21 Feb 2024 19:16:59 -0500 Subject: [PATCH 6/7] changie --- .changes/unreleased/Bugfix-20240221-191652.yaml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changes/unreleased/Bugfix-20240221-191652.yaml diff --git a/.changes/unreleased/Bugfix-20240221-191652.yaml b/.changes/unreleased/Bugfix-20240221-191652.yaml new file mode 100644 index 00000000..71301aa9 --- /dev/null +++ b/.changes/unreleased/Bugfix-20240221-191652.yaml @@ -0,0 +1,3 @@ +kind: Bugfix +body: Fix bug where service repos were never renamed if base dir was / +time: 2024-02-21T19:16:52.351803-05:00 From 2d0ccab3595e120b345c025c64c5ebd14847377f Mon Sep 17 00:00:00 2001 From: Taimoor Ahmad Date: Thu, 22 Feb 2024 15:24:52 -0500 Subject: [PATCH 7/7] directory is / --- Readme.md | 2 +- src/common/config.go | 2 +- src/go.mod | 2 +- src/go.sum | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Readme.md b/Readme.md index b8f6f444..903f4f12 100644 --- a/Readme.md +++ b/Readme.md @@ -127,7 +127,7 @@ service: # find annotations with format: opslevel.com/tools..: - '.metadata.annotations | to_entries | map(select(.key | startswith("opslevel.com/tools"))) | map({"category": .key | split(".")[2], "displayName": .key | split(".")[3], "url": .value})' repositories: # attach repositories to the service using the opslevel repo alias - IE github.com:hashicorp/vault - - '{"name": "My Cool Repo", "directory": "/", "repo": .metadata.annotations.repo} | if .repo then . else empty end' + - '{"name": "My Cool Repo", "directory": "", "repo": .metadata.annotations.repo} | if .repo then . else empty end' # if just the alias is returned as a single string we'll build the name for you and set the directory to "/" - .metadata.annotations.repo # find annotations with format: opslevel.com/repo..: diff --git a/src/common/config.go b/src/common/config.go index 0efdf110..17270676 100644 --- a/src/common/config.go +++ b/src/common/config.go @@ -90,7 +90,7 @@ service: # OR find annotations with format: opslevel.com/tools...: # - '.metadata.annotations | to_entries | map(select(.key | startswith("opslevel.com/tools"))) | map({"category": .key | split(".")[2], "environment": .key | split(".")[3], "displayName": .key | split(".")[4], "url": .value})' repositories: # attach repositories to the service using the opslevel repo alias - IE github.com:hashicorp/vault - - '{"name": "My Cool Repo", "directory": "/", "repo": .metadata.annotations.repo} | if .repo then . else empty end' + - '{"name": "My Cool Repo", "directory": "", "repo": .metadata.annotations.repo} | if .repo then . else empty end' # if just the alias is returned as a single string we'll build the name for you and set the directory to "/" - .metadata.annotations.repo # find annotations with format: opslevel.com/repo..: diff --git a/src/go.mod b/src/go.mod index 6e8f1594..14935a59 100644 --- a/src/go.mod +++ b/src/go.mod @@ -91,7 +91,7 @@ require ( k8s.io/apimachinery v0.29.2 // indirect k8s.io/client-go v0.29.2 // indirect k8s.io/klog/v2 v2.120.1 // indirect - k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5 // indirect + k8s.io/kube-openapi v0.0.0-20240221221325-2ac9dc51f3f1 // indirect k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect nhooyr.io/websocket v1.8.10 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/src/go.sum b/src/go.sum index a94d47fa..f1c6e36f 100644 --- a/src/go.sum +++ b/src/go.sum @@ -321,8 +321,8 @@ k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5 h1:QSpdNrZ9uRlV0VkqLvVO0Rqg8ioKi3oSw7O5P7pJV8M= -k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5/go.mod h1:Pa1PvrP7ACSkuX6I7KYomY6cmMA0Tx86waBhDUgoKPw= +k8s.io/kube-openapi v0.0.0-20240221221325-2ac9dc51f3f1 h1:rtdnaWfP40MTKv7izH81gkWpZB45pZrwIxyZdPSn1mI= +k8s.io/kube-openapi v0.0.0-20240221221325-2ac9dc51f3f1/go.mod h1:Pa1PvrP7ACSkuX6I7KYomY6cmMA0Tx86waBhDUgoKPw= k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q=