1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #2466 from dotcloud/hot-fix-restart-public-mappings

Hotfix: Migrate public mappings after upgrade
This commit is contained in:
Michael Crosby 2013-10-30 09:35:56 -07:00
commit bb662bc12c
2 changed files with 12 additions and 5 deletions

View file

@ -1054,10 +1054,13 @@ func (container *Container) allocateNetwork(hostConfig *HostConfig) error {
if container.Config.PortSpecs != nil {
utils.Debugf("Migrating port mappings for container: %s", strings.Join(container.Config.PortSpecs, ", "))
if err := migratePortMappings(container.Config); err != nil {
if err := migratePortMappings(container.Config, hostConfig); err != nil {
return err
}
container.Config.PortSpecs = nil
if err := container.SaveHostConfig(hostConfig); err != nil {
return err
}
}
portSpecs := make(map[Port]struct{})

View file

@ -265,15 +265,19 @@ func parsePort(rawPort string) (int, error) {
return int(port), nil
}
func migratePortMappings(config *Config) error {
func migratePortMappings(config *Config, hostConfig *HostConfig) error {
if config.PortSpecs != nil {
// We don't have to worry about migrating the bindings to the host
// This is our breaking change
ports, _, err := parsePortSpecs(config.PortSpecs)
ports, bindings, err := parsePortSpecs(config.PortSpecs)
if err != nil {
return err
}
config.PortSpecs = nil
if len(bindings) > 0 {
if hostConfig == nil {
hostConfig = &HostConfig{}
}
hostConfig.PortBindings = bindings
}
if config.ExposedPorts == nil {
config.ExposedPorts = make(map[Port]struct{}, len(ports))