refactor(compose): collapse resolveSharedNamespaces repeated blocks

Assisted-By: docker-agent
Signed-off-by: Nicolas De loof <nicolas.deloof@gmail.com>
This commit is contained in:
Nicolas De loof 2026-04-27 11:26:37 +00:00 committed by Guillaume Lours
parent 96cb057d04
commit 98163f5616

View file

@ -303,34 +303,24 @@ func (c *convergence) resolveVolumeFrom(service *types.ServiceConfig) error {
}
func (c *convergence) resolveSharedNamespaces(service *types.ServiceConfig) error {
str := service.NetworkMode
if name := getDependentServiceFromMode(str); name != "" {
dependencies := c.getObservedState(name)
if len(dependencies) == 0 {
return fmt.Errorf("cannot share network namespace with service %s: container missing", name)
resolve := func(field *string, noun string) error {
if name := getDependentServiceFromMode(*field); name != "" {
dependencies := c.getObservedState(name)
if len(dependencies) == 0 {
return fmt.Errorf("cannot share %s namespace with service %s: container missing", noun, name)
}
*field = types.ContainerPrefix + dependencies.sorted()[0].ID
}
service.NetworkMode = types.ContainerPrefix + dependencies.sorted()[0].ID
return nil
}
str = service.Ipc
if name := getDependentServiceFromMode(str); name != "" {
dependencies := c.getObservedState(name)
if len(dependencies) == 0 {
return fmt.Errorf("cannot share IPC namespace with service %s: container missing", name)
}
service.Ipc = types.ContainerPrefix + dependencies.sorted()[0].ID
if err := resolve(&service.NetworkMode, "network"); err != nil {
return err
}
str = service.Pid
if name := getDependentServiceFromMode(str); name != "" {
dependencies := c.getObservedState(name)
if len(dependencies) == 0 {
return fmt.Errorf("cannot share PID namespace with service %s: container missing", name)
}
service.Pid = types.ContainerPrefix + dependencies.sorted()[0].ID
if err := resolve(&service.Ipc, "IPC"); err != nil {
return err
}
return nil
return resolve(&service.Pid, "PID")
}
func (c *convergence) mustRecreate(expected types.ServiceConfig, actual container.Summary, policy string) (bool, error) {