package provisioner import ( "context" "errors" "io" "net" "github.com/play-with-docker/play-with-docker/pwd/types" ) var OutOfCapacityError = errors.New("OutOfCapacity") func OutOfCapacity(e error) bool { return e == OutOfCapacityError } type InstanceProvisionerApi interface { InstanceNew(session *types.Session, conf types.InstanceConfig) (*types.Instance, error) InstanceDelete(session *types.Session, instance *types.Instance) error InstanceExec(instance *types.Instance, cmd []string) (int, error) InstanceFSTree(instance *types.Instance) (io.Reader, error) InstanceFile(instance *types.Instance, filePath string) (io.Reader, error) InstanceResizeTerminal(instance *types.Instance, cols, rows uint) error InstanceGetTerminal(instance *types.Instance) (net.Conn, error) InstanceUploadFromUrl(instance *types.Instance, fileName, dest, url string) error InstanceUploadFromReader(instance *types.Instance, fileName, dest string, reader io.Reader) error } type SessionProvisionerApi interface { SessionNew(ctx context.Context, session *types.Session) error SessionClose(session *types.Session) error } type InstanceProvisionerFactoryApi interface { GetProvisioner(instanceType string) (InstanceProvisionerApi, error) }