Fix issue when trying to delete dangling ssh containers
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -94,6 +95,7 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig)
|
|||||||
}
|
}
|
||||||
|
|
||||||
instance := &types.Instance{}
|
instance := &types.Instance{}
|
||||||
|
instance.Name = containerName
|
||||||
instance.Image = opts.Image
|
instance.Image = opts.Image
|
||||||
instance.IP = winfo.privateIP
|
instance.IP = winfo.privateIP
|
||||||
instance.SessionId = session.Id
|
instance.SessionId = session.Id
|
||||||
@@ -111,18 +113,26 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig)
|
|||||||
instance.IsDockerHost = opts.Privileged
|
instance.IsDockerHost = opts.Privileged
|
||||||
|
|
||||||
if cli, err := d.factory.GetForInstance(instance); err != nil {
|
if cli, err := d.factory.GetForInstance(instance); err != nil {
|
||||||
d.InstanceDelete(session, instance)
|
if derr := d.InstanceDelete(session, instance); derr != nil {
|
||||||
|
log.Println("Error deleting instance: ", derr)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
info, err := cli.GetDaemonInfo()
|
info, err := cli.GetDaemonInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d.InstanceDelete(session, instance)
|
if derr := d.InstanceDelete(session, instance); derr != nil {
|
||||||
|
log.Println("Error deleting instance: ", derr)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
instance.Hostname = info.Name
|
instance.Hostname = info.Name
|
||||||
instance.Name = fmt.Sprintf("%s_%s", session.Id[:8], info.Name)
|
instance.Name = fmt.Sprintf("%s_%s", session.Id[:8], info.Name)
|
||||||
if err = dockerClient.ContainerRename(containerName, instance.Name); err != nil {
|
if err = dockerClient.ContainerRename(containerName, instance.Name); err != nil {
|
||||||
d.InstanceDelete(session, instance)
|
// revert instance name to remove ssh container
|
||||||
|
instance.Name = containerName
|
||||||
|
if derr := d.InstanceDelete(session, instance); derr != nil {
|
||||||
|
log.Println("Error deleting instance: ", derr)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user