WIP
This commit is contained in:
36
provider/local_session_provider.go
Normal file
36
provider/local_session_provider.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/play-with-docker/play-with-docker/docker"
|
||||
)
|
||||
|
||||
type localSessionProvider struct {
|
||||
rw sync.Mutex
|
||||
|
||||
docker docker.DockerApi
|
||||
}
|
||||
|
||||
func (p *localSessionProvider) GetDocker(sessionId string) (docker.DockerApi, error) {
|
||||
p.rw.Lock()
|
||||
defer p.rw.Unlock()
|
||||
|
||||
if p.docker != nil {
|
||||
return p.docker, nil
|
||||
}
|
||||
|
||||
c, err := client.NewEnvClient()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
d := docker.NewDocker(c)
|
||||
|
||||
p.docker = d
|
||||
return d, nil
|
||||
}
|
||||
|
||||
func NewLocalSessionProvider() *localSessionProvider {
|
||||
return &localSessionProvider{}
|
||||
}
|
||||
Reference in New Issue
Block a user