diff --git a/internal/generator/generator.go b/internal/generator/generator.go index 2face53..c72a6f3 100644 --- a/internal/generator/generator.go +++ b/internal/generator/generator.go @@ -126,16 +126,23 @@ func Generate(project *types.Project) (*HelmChart, error) { // create init containers for all DependsOn for _, s := range project.Services { for _, d := range s.GetDependencies() { - if dep, ok := deployments[d]; ok { - err := deployments[s.Name].DependsOn(dep, d) - if err != nil { - logger.Info(fmt.Sprintf("error creating init container for service %[1]s: %[2]s", s.Name, err)) - } - } else { - err := fmt.Errorf("service %[1]s depends on %[2]s, but %[2]s is not defined", s.Name, d) + // Ensure both the dependent and the current deployment exist before calling DependsOn. + dep, depOk := deployments[d] + cur, curOk := deployments[s.Name] + if !depOk { + // Dependency deployment missing – this is a configuration error. + err := fmt.Errorf("service %s depends on %s, but %s is not defined", s.Name, d, d) logger.Failure(err.Error()) return nil, err } + if !curOk { + // Current service deployment missing (e.g., ignored or same‑pod). Log and skip. + logger.Info(fmt.Sprintf("service %s not found in deployments; skipping DependsOn for %s", s.Name, d)) + continue + } + if err := cur.DependsOn(dep, d); err != nil { + logger.Info(fmt.Sprintf("error creating init container for service %[1]s: %[2]s", s.Name, err)) + } } } for _, name := range drops {