diff --git a/api.go b/api.go index 4e17dfa..e341693 100644 --- a/api.go +++ b/api.go @@ -6,9 +6,9 @@ import ( "golang.org/x/net/websocket" + "github.com/franela/play-with-docker/handlers" "github.com/go-zoo/bone" "github.com/urfave/negroni" - "github.com/xetorthio/play-with-docker/handlers" ) func main() { diff --git a/handlers/delete_instance.go b/handlers/delete_instance.go index c97434e..42ed695 100644 --- a/handlers/delete_instance.go +++ b/handlers/delete_instance.go @@ -3,8 +3,8 @@ package handlers import ( "net/http" + "github.com/franela/play-with-docker/services" "github.com/go-zoo/bone" - "github.com/xetorthio/play-with-docker/services" ) func DeleteInstance(rw http.ResponseWriter, req *http.Request) { diff --git a/handlers/exec.go b/handlers/exec.go index bbce446..e90b497 100644 --- a/handlers/exec.go +++ b/handlers/exec.go @@ -6,8 +6,8 @@ import ( "golang.org/x/net/context" "golang.org/x/net/websocket" + "github.com/franela/play-with-docker/services" "github.com/go-zoo/bone" - "github.com/xetorthio/play-with-docker/services" ) // Echo the data received on the WebSocket. diff --git a/handlers/get_session.go b/handlers/get_session.go index 7757f2b..1df39cc 100644 --- a/handlers/get_session.go +++ b/handlers/get_session.go @@ -4,8 +4,8 @@ import ( "encoding/json" "net/http" + "github.com/franela/play-with-docker/services" "github.com/go-zoo/bone" - "github.com/xetorthio/play-with-docker/services" ) func GetSession(rw http.ResponseWriter, req *http.Request) { diff --git a/handlers/new_instance.go b/handlers/new_instance.go index 5ce1f7c..b25c728 100644 --- a/handlers/new_instance.go +++ b/handlers/new_instance.go @@ -5,8 +5,8 @@ import ( "log" "net/http" + "github.com/franela/play-with-docker/services" "github.com/go-zoo/bone" - "github.com/xetorthio/play-with-docker/services" ) func NewInstance(rw http.ResponseWriter, req *http.Request) { diff --git a/handlers/new_session.go b/handlers/new_session.go index 6ace5f4..d476f6a 100644 --- a/handlers/new_session.go +++ b/handlers/new_session.go @@ -5,7 +5,7 @@ import ( "log" "net/http" - "github.com/xetorthio/play-with-docker/services" + "github.com/franela/play-with-docker/services" ) func NewSession(rw http.ResponseWriter, req *http.Request) { diff --git a/services/docker.go b/services/docker.go index 326f750..5b1b1e0 100644 --- a/services/docker.go +++ b/services/docker.go @@ -4,7 +4,7 @@ import ( "log" "strings" - ptypes "github.com/xetorthio/play-with-docker/types" + ptypes "github.com/franela/play-with-docker/types" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" @@ -39,6 +39,16 @@ func CreateNetwork(name string) error { return nil } +func DeleteNetwork(id string) error { + err := c.NetworkRemove(context.Background(), id) + + if err != nil { + return err + } + + return nil +} + func GetExecConnection(id string, ctx context.Context) (*types.HijackedResponse, error) { conf := types.ExecConfig{Tty: true, AttachStdin: true, AttachStderr: true, AttachStdout: true, Cmd: []string{"sh"}} resp, err := c.ContainerExecCreate(ctx, id, conf) diff --git a/services/instance.go b/services/instance.go index 1eff28d..949f27d 100644 --- a/services/instance.go +++ b/services/instance.go @@ -1,6 +1,6 @@ package services -import "github.com/xetorthio/play-with-docker/types" +import "github.com/franela/play-with-docker/types" var instances map[string]map[string]*types.Instance diff --git a/services/session.go b/services/session.go index b91dcab..71400b3 100644 --- a/services/session.go +++ b/services/session.go @@ -1,8 +1,11 @@ package services import ( + "log" + "time" + + "github.com/franela/play-with-docker/types" "github.com/twinj/uuid" - "github.com/xetorthio/play-with-docker/types" ) var sessions map[string]*types.Session @@ -19,6 +22,16 @@ func NewSession() (*types.Session, error) { //TODO: Store in something like redis sessions[s.Id] = s + // Schedule cleanup of the session + time.AfterFunc(1*time.Minute, func() { + for _, i := range s.Instances { + if err := DeleteContainer(i.Name); err != nil { + log.Println(err) + } + } + DeleteNetwork(s.Id) + }) + if err := CreateNetwork(s.Id); err != nil { return nil, err }