LoadVolumes produces a VolumeConfig map from a compose file Dict the source Dict is not validated if directly used. Use Load() to enable validation
(source map[string]any, version string)
| 574 | // LoadVolumes produces a VolumeConfig map from a compose file Dict |
| 575 | // the source Dict is not validated if directly used. Use Load() to enable validation |
| 576 | func LoadVolumes(source map[string]any, version string) (map[string]types.VolumeConfig, error) { |
| 577 | volumes := make(map[string]types.VolumeConfig) |
| 578 | if err := Transform(source, &volumes); err != nil { |
| 579 | return volumes, err |
| 580 | } |
| 581 | |
| 582 | for name, volume := range volumes { |
| 583 | if !volume.External.External { |
| 584 | continue |
| 585 | } |
| 586 | switch { |
| 587 | case volume.Driver != "": |
| 588 | return nil, externalVolumeError(name, "driver") |
| 589 | case len(volume.DriverOpts) > 0: |
| 590 | return nil, externalVolumeError(name, "driver_opts") |
| 591 | case len(volume.Labels) > 0: |
| 592 | return nil, externalVolumeError(name, "labels") |
| 593 | case volume.External.Name != "": |
| 594 | if volume.Name != "" { |
| 595 | return nil, fmt.Errorf("volume %s: volume.external.name and volume.name conflict; only use volume.name", name) |
| 596 | } |
| 597 | if versions.GreaterThanOrEqualTo(version, "3.4") { |
| 598 | logrus.Warnf("volume %s: volume.external.name is deprecated in favor of volume.name", name) |
| 599 | } |
| 600 | volume.Name = volume.External.Name |
| 601 | volume.External.Name = "" |
| 602 | case volume.Name == "": |
| 603 | volume.Name = name |
| 604 | } |
| 605 | volume.Extras = loadExtras(name, source) |
| 606 | volumes[name] = volume |
| 607 | } |
| 608 | return volumes, nil |
| 609 | } |
| 610 | |
| 611 | // LoadSecrets produces a SecretConfig map from a compose file Dict |
| 612 | // the source Dict is not validated if directly used. Use Load() to enable validation |
searching dependent graphs…