Files
sablier/app/providers/provider.go
2022-11-11 17:00:35 -05:00

30 lines
706 B
Go

package providers
import (
"context"
"fmt"
"github.com/acouvreur/sablier/app/instance"
"github.com/acouvreur/sablier/config"
)
type Provider interface {
Start(name string) (instance.State, error)
Stop(name string) (instance.State, error)
GetState(name string) (instance.State, error)
NotifyInsanceStopped(ctx context.Context, instance chan<- string)
}
func NewProvider(config config.Provider) (Provider, error) {
switch {
case config.Name == "swarm":
return NewDockerSwarmProvider()
case config.Name == "docker":
return NewDockerClassicProvider()
case config.Name == "kubernetes":
return NewKubernetesProvider()
}
return nil, fmt.Errorf("unimplemented provider %s", config.Name)
}