37 lines
598 B
Go
37 lines
598 B
Go
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{}
|
|
}
|