Implement core functionality of AWS integration
This commit is contained in:
@ -3,55 +3,47 @@ package runner
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/openHPI/poseidon/pkg/dto"
|
||||
"time"
|
||||
)
|
||||
|
||||
type AWSRunnerManager struct {
|
||||
*AbstractManager
|
||||
}
|
||||
|
||||
const AwsJavaEnvironmentID = 2142
|
||||
|
||||
// NewAWSRunnerManager creates a new runner manager that keeps track of all runners at AWS.
|
||||
func NewAWSRunnerManager() *AWSRunnerManager {
|
||||
return &AWSRunnerManager{&AbstractManager{}}
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) ListEnvironments() []ExecutionEnvironment {
|
||||
return []ExecutionEnvironment{}
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) GetEnvironment(_ dto.EnvironmentID) (ExecutionEnvironment, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) StoreEnvironment(_ ExecutionEnvironment) {}
|
||||
|
||||
func (a AWSRunnerManager) DeleteEnvironment(_ dto.EnvironmentID) {}
|
||||
|
||||
func (a AWSRunnerManager) EnvironmentStatistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData {
|
||||
return map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData{}
|
||||
return &AWSRunnerManager{NewAbstractManager()}
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) Claim(id dto.EnvironmentID, duration int) (Runner, error) {
|
||||
r, err := a.NextHandler().Claim(id, duration)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wraped: %w", err)
|
||||
environment, ok := a.environments.Get(id)
|
||||
if !ok {
|
||||
r, err := a.NextHandler().Claim(id, duration)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) Get(runnerID string) (Runner, error) {
|
||||
r, err := a.NextHandler().Get(runnerID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("aws wraped: %w", err)
|
||||
runner, ok := environment.Sample()
|
||||
if !ok {
|
||||
log.Warn("no aws runner available")
|
||||
return nil, ErrNoRunnersAvailable
|
||||
}
|
||||
return r, nil
|
||||
|
||||
a.usedRunners.Add(runner)
|
||||
runner.SetupTimeout(time.Duration(duration) * time.Second)
|
||||
return runner, nil
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) Return(r Runner) error {
|
||||
err := a.NextHandler().Return(r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("aws wraped: %w", err)
|
||||
_, isAWSRunner := r.(*AWSFunctionWorkload)
|
||||
if isAWSRunner {
|
||||
a.usedRunners.Delete(r.ID())
|
||||
} else if err := a.NextHandler().Return(r); err != nil {
|
||||
return fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a AWSRunnerManager) Load() {}
|
||||
|
Reference in New Issue
Block a user