-
This commit is contained in:
84
faas/internal/runtime/docker/simple.go
Normal file
84
faas/internal/runtime/docker/simple.go
Normal file
@ -0,0 +1,84 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/RyanCopley/skybridge/faas/internal/domain"
|
||||
"github.com/RyanCopley/skybridge/faas/internal/runtime"
|
||||
)
|
||||
|
||||
type SimpleDockerRuntime struct {
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
func NewSimpleDockerRuntime(logger *zap.Logger) *SimpleDockerRuntime {
|
||||
return &SimpleDockerRuntime{
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) Execute(ctx context.Context, function *domain.FunctionDefinition, input json.RawMessage) (*domain.ExecutionResult, error) {
|
||||
s.logger.Info("Mock function execution",
|
||||
zap.String("function_id", function.ID.String()),
|
||||
zap.String("name", function.Name))
|
||||
|
||||
// Mock execution result
|
||||
result := &domain.ExecutionResult{
|
||||
Output: json.RawMessage(`{"result": "Hello from FaaS!", "function": "` + function.Name + `"}`),
|
||||
Duration: function.Timeout.Duration / 10, // Simulate quick execution
|
||||
MemoryUsed: function.Memory / 2, // Simulate partial memory usage
|
||||
Logs: []string{"Function started", "Processing input", "Function completed"},
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) Deploy(ctx context.Context, function *domain.FunctionDefinition) error {
|
||||
s.logger.Info("Mock function deployment",
|
||||
zap.String("function_id", function.ID.String()),
|
||||
zap.String("image", function.Image))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) Remove(ctx context.Context, functionID uuid.UUID) error {
|
||||
s.logger.Info("Mock function removal", zap.String("function_id", functionID.String()))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) GetLogs(ctx context.Context, executionID uuid.UUID) ([]string, error) {
|
||||
return []string{
|
||||
"Function execution started",
|
||||
"Processing request",
|
||||
"Function execution completed",
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) HealthCheck(ctx context.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) GetInfo(ctx context.Context) (*runtime.RuntimeInfo, error) {
|
||||
return &runtime.RuntimeInfo{
|
||||
Type: "simple-docker",
|
||||
Version: "mock-1.0",
|
||||
Available: true,
|
||||
Endpoint: "mock://docker",
|
||||
Metadata: map[string]string{
|
||||
"containers": "0",
|
||||
"images": "0",
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) ListContainers(ctx context.Context) ([]runtime.ContainerInfo, error) {
|
||||
return []runtime.ContainerInfo{}, nil
|
||||
}
|
||||
|
||||
func (s *SimpleDockerRuntime) StopExecution(ctx context.Context, executionID uuid.UUID) error {
|
||||
s.logger.Info("Mock execution stop", zap.String("execution_id", executionID.String()))
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user