diff --git a/pkg/common/config_types.go b/pkg/common/config_types.go deleted file mode 100644 index 4cbe0f3e7..000000000 --- a/pkg/common/config_types.go +++ /dev/null @@ -1,27 +0,0 @@ -package common - -type MultiLoaderConfiguration struct { - Studies []LoaderStudy `json:"Studies"` - BaseConfigPath string `json:"BaseConfigPath"` - // Optional - PreScript string `json:"PreScript"` - PostScript string `json:"PostScript"` -} - -type LoaderStudy struct { - Name string `json:"Name"` - Config map[string]interface{} `json:"Config"` - // A combination of format and values or just dir should be specified - TracesDir string `json:"TracesDir"` - - TracesFormat string `json:"TracesFormat"` - TraceValues []interface{} `json:"TraceValues"` - - // Optional - OutputDir string `json:"OutputDir"` - Verbosity string `json:"Verbosity"` - IatGeneration bool `json:"IatGeneration"` - Generated bool `json:"Generated"` - PreScript string `json:"PreScript"` - PostScript string `json:"PostScript"` -} \ No newline at end of file diff --git a/pkg/common/constants.go b/pkg/common/constants.go index 2172975e6..bf4557912 100644 --- a/pkg/common/constants.go +++ b/pkg/common/constants.go @@ -98,21 +98,6 @@ const ( AwsTraceFuncRepositoryName = "invitro_trace_function_aws" ) -// Multi-loader Constants -const ( - TraceFormatString = "{}" -) - -// Multi-loader possible collectable metrics -const ( - Activator string = "activator" - AutoScaler string = "autoscaler" - TOP string = "top" - Prometheus string = "prometheus" -) - -var ValidCollectableMetrics = []string{Activator, AutoScaler, TOP, Prometheus} - // CPULimits const ( CPULimit1vCPU string = "1vCPU" diff --git a/pkg/common/node_types.go b/pkg/common/node_types.go deleted file mode 100644 index 058905929..000000000 --- a/pkg/common/node_types.go +++ /dev/null @@ -1,9 +0,0 @@ -package common - -type NodeGroup struct { - MasterNode string - AutoScalerNode string - ActivatorNode string - LoaderNode string - WorkerNodes []string -} \ No newline at end of file diff --git a/pkg/common/validators.go b/pkg/common/validators.go index ccdbaca96..7341b546f 100644 --- a/pkg/common/validators.go +++ b/pkg/common/validators.go @@ -5,9 +5,7 @@ import ( "net" "os" "os/exec" - "path" "slices" - "strings" log "github.com/sirupsen/logrus" ) @@ -26,7 +24,9 @@ func CheckNode(node string) { } func CheckPath(path string) { - if(path) == "" { return } + if (path) == "" { + return + } _, err := os.Stat(path) if err != nil { log.Fatal(err) @@ -34,53 +34,12 @@ func CheckPath(path string) { } func IsValidIP(ip string) bool { - parsedIP := net.ParseIP(ip) - return parsedIP != nil -} - -// Check general multi-loader configuration that applies to all platforms -func CheckMultiLoaderConfig(multiLoaderConfig MultiLoaderConfiguration) { - log.Info("Checking multi-loader configuration") - // Check if all paths are valid - CheckPath(multiLoaderConfig.BaseConfigPath) - // Check each study - if len(multiLoaderConfig.Studies) == 0 { - log.Fatal("No study found in configuration file") - } - for _, study := range multiLoaderConfig.Studies { - // Check trace directory - // if configs does not have TracePath or OutputPathPreix, either TracesDir or (TracesFormat and TraceValues) should be defined along with OutputDir - if study.TracesDir == "" && (study.TracesFormat == "" || len(study.TraceValues) == 0) { - if _, ok := study.Config["TracePath"]; !ok { - log.Fatal("Missing one of TracesDir, TracesFormat & TraceValues, Config.TracePath in multi_loader_config ", study.Name) - } - } - if study.TracesFormat != ""{ - // check if trace format contains TRACE_FORMAT_STRING - if !strings.Contains(study.TracesFormat, TraceFormatString) { - log.Fatal("Invalid TracesFormat in multi_loader_config ", study.Name, ". Missing ", TraceFormatString, " in format") - } - } - if study.OutputDir == "" { - if _, ok := study.Config["OutputPathPrefix"]; !ok { - log.Warn("Missing one of OutputDir or Config.OutputPathPrefix in multi_loader_config ", study.Name) - // set default output directory - study.OutputDir = path.Join("data", "out", study.Name) - log.Warn("Setting default output directory to ", study.OutputDir) - } - } - } - log.Info("All experiments configs are valid") -} - -func CheckCollectableMetrics(metrics string) { - if !slices.Contains(ValidCollectableMetrics, metrics) { - log.Fatal("Invalid metrics ", metrics) - } + parsedIP := net.ParseIP(ip) + return parsedIP != nil } func CheckCPULimit(cpuLimit string) { if !slices.Contains(ValidCPULimits, cpuLimit) { log.Fatal("Invalid CPU Limit ", cpuLimit) } -} \ No newline at end of file +} diff --git a/pkg/config/parser.go b/pkg/config/parser.go index fd9d6fe4d..c6015d671 100644 --- a/pkg/config/parser.go +++ b/pkg/config/parser.go @@ -29,7 +29,6 @@ import ( "os" log "github.com/sirupsen/logrus" - "github.com/vhive-serverless/loader/pkg/common" ) type FailureConfiguration struct { @@ -115,18 +114,3 @@ func ReadFailureConfiguration(path string) *FailureConfiguration { return &config } - -func ReadMultiLoaderConfigurationFile(path string) common.MultiLoaderConfiguration { - byteValue, err := os.ReadFile(path) - if err != nil { - log.Fatal(err) - } - - var config common.MultiLoaderConfiguration - err = json.Unmarshal(byteValue, &config) - if err != nil { - log.Fatal(err) - } - - return config -} diff --git a/tools/multi_loader/common/utils.go b/tools/multi_loader/common/utils.go index 46a7c0b5d..a97ea49a9 100644 --- a/tools/multi_loader/common/utils.go +++ b/tools/multi_loader/common/utils.go @@ -6,6 +6,7 @@ import ( log "github.com/sirupsen/logrus" + "github.com/vhive-serverless/loader/pkg/config" "github.com/vhive-serverless/loader/tools/multi_loader/types" ) @@ -23,3 +24,17 @@ func ReadMultiLoaderConfigurationFile(path string) types.MultiLoaderConfiguratio return config } + +func DeterminePlatformFromConfig(multiLoaderConfig types.MultiLoaderConfiguration) string { + // Determine platform + baseConfigByteValue, err := os.ReadFile(multiLoaderConfig.BaseConfigPath) + if err != nil { + log.Fatal(err) + } + var loaderConfig config.LoaderConfiguration + // Unmarshal base configuration + if err = json.Unmarshal(baseConfigByteValue, &loaderConfig); err != nil { + log.Fatal(err) + } + return loaderConfig.Platform +} diff --git a/tools/multi_loader/runner/multi_loader_runner.go b/tools/multi_loader/runner/multi_loader_runner.go index 4ed22fa4a..a183100dd 100644 --- a/tools/multi_loader/runner/multi_loader_runner.go +++ b/tools/multi_loader/runner/multi_loader_runner.go @@ -46,7 +46,7 @@ func NewMultiLoaderRunner(configPath string, verbosity string, iatGeneration boo ml_common.CheckMultiLoaderConfig(multiLoaderConfig) // determine platform - platform := determinePlatform(multiLoaderConfig) + platform := ml_common.DeterminePlatformFromConfig(multiLoaderConfig) runner := MultiLoaderRunner{ MultiLoaderConfig: multiLoaderConfig, @@ -61,20 +61,6 @@ func NewMultiLoaderRunner(configPath string, verbosity string, iatGeneration boo return &runner, nil } -func determinePlatform(multiLoaderConfig types.MultiLoaderConfiguration) string { - // Determine platform - baseConfigByteValue, err := os.ReadFile(multiLoaderConfig.BaseConfigPath) - if err != nil { - log.Fatal(err) - } - var loaderConfig config.LoaderConfiguration - // Unmarshal base configuration - if err = json.Unmarshal(baseConfigByteValue, &loaderConfig); err != nil { - log.Fatal(err) - } - return loaderConfig.Platform -} - func (d *MultiLoaderRunner) RunDryRun() { log.Info("Running dry run") d.DryRun = true