From 223477c4ddfb6b6f9079c444d2f301ef587f048b Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Tue, 14 Mar 2023 19:49:54 +0200 Subject: [PATCH] Define interface for external providers This interface is similar to the common.Provider interface, but lacks the AsParams() function. Decoupling the external provider interface from the internal provider interface allows us to account for any particularities there may appear between them. Signed-off-by: Gabriel Adrian Samfira --- .../providers/external/execution/interface.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 runner/providers/external/execution/interface.go diff --git a/runner/providers/external/execution/interface.go b/runner/providers/external/execution/interface.go new file mode 100644 index 00000000..7c8cc90f --- /dev/null +++ b/runner/providers/external/execution/interface.go @@ -0,0 +1,27 @@ +package execution + +import ( + "context" + + "github.com/cloudbase/garm/params" +) + +// ExternalProvider defines an interface that external providers need to implement. +// This is very similar to the common.Provider interface, and was redefined here to +// decouple it, in case it may diverge from native providers. +type ExternalProvider interface { + // CreateInstance creates a new compute instance in the provider. + CreateInstance(ctx context.Context, bootstrapParams params.BootstrapInstance) (params.Instance, error) + // Delete instance will delete the instance in a provider. + DeleteInstance(ctx context.Context, instance string) error + // GetInstance will return details about one instance. + GetInstance(ctx context.Context, instance string) (params.Instance, error) + // ListInstances will list all instances for a provider. + ListInstances(ctx context.Context, poolID string) ([]params.Instance, error) + // RemoveAllInstances will remove all instances created by this provider. + RemoveAllInstances(ctx context.Context) error + // Stop shuts down the instance. + Stop(ctx context.Context, instance string, force bool) error + // Start boots up an instance. + Start(ctx context.Context, instance string) error +}