Skip to content

Commit 07b9b1c

Browse files
committed
Configure OffloadingPolicy using configuration parameters
1 parent 4a93b53 commit 07b9b1c

5 files changed

Lines changed: 24 additions & 2 deletions

File tree

cmd/serverledge/main.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/serverledge-faas/serverledge/internal/registration"
1717
"github.com/serverledge-faas/serverledge/internal/scheduling"
1818
"github.com/serverledge-faas/serverledge/internal/telemetry"
19+
"github.com/serverledge-faas/serverledge/internal/workflow"
1920
"github.com/serverledge-faas/serverledge/utils"
2021

2122
"github.com/labstack/echo/v4"
@@ -85,9 +86,13 @@ func main() {
8586
// Register a signal handler to cleanup things on termination
8687
api.RegisterTerminationHandler(registry, e)
8788

89+
// Function scheduling policy
8890
schedulingPolicy := api.CreateSchedulingPolicy()
8991
go scheduling.Run(schedulingPolicy)
9092

93+
// Workflow offloading policy
94+
workflow.CreateOffloadingPolicy()
95+
9196
if !isInCloud {
9297
err = registration.InitEdgeMonitoring(registry)
9398
if err != nil {

internal/api/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func RegisterTerminationHandler(r *registration.Registry, e *echo.Echo) {
108108

109109
func CreateSchedulingPolicy() scheduling.Policy {
110110
policyConf := config.GetString(config.SCHEDULING_POLICY, "default")
111-
log.Printf("Configured policy: %s\n", policyConf)
111+
log.Printf("Configured scheduling policy: %s\n", policyConf)
112112
if policyConf == "cloudonly" {
113113
return &scheduling.CloudOnlyPolicy{}
114114
} else if policyConf == "edgecloud" {

internal/config/keys.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,7 @@ const TRACING_ENABLED = "tracing.enabled"
8080

8181
// Custom output file for traces
8282
const TRACING_OUTFILE = "tracing.outfile"
83+
84+
// Offloading policy to use
85+
// Possible values: "disable", "ilp"
86+
const OFFLOADING_POLICY = "offloading.policy"

internal/test/main_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/serverledge-faas/serverledge/internal/node"
1717
"github.com/serverledge-faas/serverledge/internal/registration"
1818
"github.com/serverledge-faas/serverledge/internal/scheduling"
19+
"github.com/serverledge-faas/serverledge/internal/workflow"
1920
u "github.com/serverledge-faas/serverledge/utils"
2021
"google.golang.org/grpc/codes"
2122
)
@@ -66,6 +67,9 @@ func testStartServerledge(isInCloud bool, outboundIp string) (*registration.Regi
6667

6768
metrics.Init()
6869

70+
// Workflow offloading policy
71+
workflow.CreateOffloadingPolicy()
72+
6973
e := echo.New()
7074

7175
// Register a signal handler to cleanup things on termination

internal/workflow/workflow.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"errors"
77
"fmt"
88
"github.com/serverledge-faas/serverledge/internal/client"
9+
"github.com/serverledge-faas/serverledge/internal/config"
910
"golang.org/x/exp/slices"
1011
"io"
1112
"net/http"
@@ -23,7 +24,15 @@ import (
2324

2425
var offloadingPolicy OffloadingPolicy = &IlpOffloadingPolicy{}
2526

26-
//&NoOffloadingPolicy{} // TODO: handle initialization elsewhere
27+
func CreateOffloadingPolicy() {
28+
policyConf := config.GetString(config.OFFLOADING_POLICY, "disable")
29+
log.Printf("Configured offloading policy: %s\n", policyConf)
30+
if policyConf == "ilp" {
31+
offloadingPolicy = &IlpOffloadingPolicy{}
32+
} else { // default, disable offloading
33+
offloadingPolicy = &NoOffloadingPolicy{}
34+
}
35+
}
2736

2837
// Workflow is a Workflow to drive the execution of the workflow
2938
type Workflow struct {

0 commit comments

Comments
 (0)