Implement core functionality of AWS integration
This commit is contained in:
@ -10,48 +10,80 @@ import (
|
||||
// IMPROVE: Create Lambda functions dynamically.
|
||||
type AWSEnvironmentManager struct {
|
||||
*AbstractManager
|
||||
runnerManager runner.Accessor
|
||||
runnerManager runner.Manager
|
||||
}
|
||||
|
||||
func NewAWSEnvironmentManager(runnerManager runner.Accessor) *AWSEnvironmentManager {
|
||||
func NewAWSEnvironmentManager(runnerManager runner.Manager) *AWSEnvironmentManager {
|
||||
m := &AWSEnvironmentManager{&AbstractManager{nil}, runnerManager}
|
||||
runnerManager.Load()
|
||||
m.Load()
|
||||
return m
|
||||
}
|
||||
|
||||
func (a *AWSEnvironmentManager) List(fetch bool) ([]runner.ExecutionEnvironment, error) {
|
||||
list, err := a.NextHandler().List(fetch)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wraped: %w", err)
|
||||
return nil, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return list, nil
|
||||
return append(list, a.runnerManager.ListEnvironments()...), nil
|
||||
}
|
||||
|
||||
func (a *AWSEnvironmentManager) Get(id dto.EnvironmentID, fetch bool) (runner.ExecutionEnvironment, error) {
|
||||
e, err := a.NextHandler().Get(id, fetch)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wraped: %w", err)
|
||||
e, ok := a.runnerManager.GetEnvironment(id)
|
||||
if ok {
|
||||
return e, nil
|
||||
} else {
|
||||
e, err := a.NextHandler().Get(id, fetch)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return e, nil
|
||||
}
|
||||
return e, nil
|
||||
}
|
||||
|
||||
func (a *AWSEnvironmentManager) CreateOrUpdate(
|
||||
id dto.EnvironmentID, request dto.ExecutionEnvironmentRequest) (bool, error) {
|
||||
isCreated, err := a.NextHandler().CreateOrUpdate(id, request)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("aws wraped: %w", err)
|
||||
if id != runner.AwsJavaEnvironmentID {
|
||||
isCreated, err := a.NextHandler().CreateOrUpdate(id, request)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return isCreated, nil
|
||||
}
|
||||
return isCreated, nil
|
||||
|
||||
_, ok := a.runnerManager.GetEnvironment(id)
|
||||
e := NewAWSEnvironment()
|
||||
e.SetID(id)
|
||||
e.SetImage(request.Image)
|
||||
a.runnerManager.StoreEnvironment(e)
|
||||
return !ok, nil
|
||||
}
|
||||
|
||||
func (a *AWSEnvironmentManager) Delete(id dto.EnvironmentID) (bool, error) {
|
||||
isFound, err := a.NextHandler().Delete(id)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("aws wraped: %w", err)
|
||||
e, ok := a.runnerManager.GetEnvironment(id)
|
||||
if !ok {
|
||||
isFound, err := a.NextHandler().Delete(id)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return isFound, nil
|
||||
}
|
||||
return isFound, nil
|
||||
|
||||
a.runnerManager.DeleteEnvironment(id)
|
||||
if err := e.Delete(); err != nil {
|
||||
return true, fmt.Errorf("could not delete environment: %w", err)
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (a *AWSEnvironmentManager) Statistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData {
|
||||
return a.NextHandler().Statistics()
|
||||
}
|
||||
|
||||
// Load fetches all remote environments in the local storage. ToDo: Fetch dynamically.
|
||||
func (a *AWSEnvironmentManager) Load() {
|
||||
_, err := a.CreateOrUpdate(runner.AwsJavaEnvironmentID, dto.ExecutionEnvironmentRequest{Image: "java11Exec"})
|
||||
if err != nil {
|
||||
log.WithError(err).Warn("Could not load aws environment.")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user