Track a container by all of its aliases
This commit is contained in:
parent
16611eb4a0
commit
410c27a84f
@ -61,7 +61,7 @@ func newDockerContainerHandler(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to inspect container %v: %v", name, err)
|
return nil, fmt.Errorf("unable to inspect container %v: %v", name, err)
|
||||||
}
|
}
|
||||||
handler.aliases = append(handler.aliases, ctnr.Name)
|
handler.aliases = append(handler.aliases, path.Join("/docker", ctnr.Name))
|
||||||
return handler, nil
|
return handler, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ func (self *factoryManager) NewContainerHandler(path string) (ContainerHandler,
|
|||||||
err := fmt.Errorf("nil factory for container %v", path)
|
err := fmt.Errorf("nil factory for container %v", path)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
log.Printf("container handler factory for %v is %v\n", path, factory)
|
log.Printf("Container handler factory for %v is %v\n", path, factory)
|
||||||
return factory.NewContainerHandler(path)
|
return factory.NewContainerHandler(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,12 @@ func NewContainerData(containerName string) (*containerData, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
cont.handler = handler
|
cont.handler = handler
|
||||||
cont.info.Name = containerName
|
ref, err := handler.ContainerReference()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cont.info.Name = ref.Name
|
||||||
|
cont.info.Aliases = ref.Aliases
|
||||||
cont.info.Stats = list.New()
|
cont.info.Stats = list.New()
|
||||||
cont.stop = make(chan bool, 1)
|
cont.stop = make(chan bool, 1)
|
||||||
|
|
||||||
|
@ -112,7 +112,8 @@ func (m *manager) GetContainerInfo(containerName string) (*info.ContainerInfo, e
|
|||||||
// Make a copy of the info for the user.
|
// Make a copy of the info for the user.
|
||||||
ret := &info.ContainerInfo{
|
ret := &info.ContainerInfo{
|
||||||
ContainerReference: info.ContainerReference{
|
ContainerReference: info.ContainerReference{
|
||||||
Name: cinfo.Name,
|
Name: cinfo.Name,
|
||||||
|
Aliases: cinfo.Aliases,
|
||||||
},
|
},
|
||||||
Subcontainers: cinfo.Subcontainers,
|
Subcontainers: cinfo.Subcontainers,
|
||||||
Spec: cinfo.Spec,
|
Spec: cinfo.Spec,
|
||||||
@ -152,9 +153,13 @@ func (m *manager) createContainer(containerName string) (*containerData, error)
|
|||||||
m.containersLock.Lock()
|
m.containersLock.Lock()
|
||||||
defer m.containersLock.Unlock()
|
defer m.containersLock.Unlock()
|
||||||
|
|
||||||
log.Printf("Added container: %s", containerName)
|
// Add the container name and all its aliases.
|
||||||
m.containers[containerName] = cont
|
m.containers[containerName] = cont
|
||||||
|
for _, alias := range cont.info.Aliases {
|
||||||
|
m.containers[alias] = cont
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
log.Printf("Added container: %s (aliases: %s)", containerName, cont.info.Aliases)
|
||||||
|
|
||||||
// Start the container's housekeeping.
|
// Start the container's housekeeping.
|
||||||
cont.Start()
|
cont.Start()
|
||||||
@ -202,7 +207,10 @@ func (m *manager) getContainersDiff() (added []info.ContainerReference, removed
|
|||||||
// Determine which were added and which were removed.
|
// Determine which were added and which were removed.
|
||||||
allContainersSet := make(map[string]*containerData)
|
allContainersSet := make(map[string]*containerData)
|
||||||
for name, d := range m.containers {
|
for name, d := range m.containers {
|
||||||
allContainersSet[name] = d
|
// Only add the canonical name.
|
||||||
|
if d.info.Name == name {
|
||||||
|
allContainersSet[name] = d
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for _, c := range allContainers {
|
for _, c := range allContainers {
|
||||||
delete(allContainersSet, c.Name)
|
delete(allContainersSet, c.Name)
|
||||||
|
Loading…
Reference in New Issue
Block a user