blob: 9e4574cbae273ebb9fe2f6c562f770bb28ed28f6 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package environment
import (
pb "beam.apache.org/playground/backend/internal/api/v1"
)
// ExecutorConfig contains all environment variables needed for compiling and execution of the code commands:
// - CompileCmd: command to compile files with code
// - RunCmd: command to run compiled code
// - TestCmd: command to run unit test code
// - CompileArgs: arguments which are needed to compile files with code
// - RunArgs: arguments which are needed to run compiled code
// - TestArgs: arguments which are needed to run unit test code
type ExecutorConfig struct {
CompileCmd string `json:"compile_cmd"`
RunCmd string `json:"run_cmd"`
TestCmd string `json:"test_cmd"`
CompileArgs []string `json:"compile_args"`
RunArgs []string `json:"run_args"`
TestArgs []string `json:"test_args"`
}
// NewExecutorConfig creates and returns ExecutorConfig
func NewExecutorConfig(compileCmd, runCmd, testCmd string, compileArgs, runArgs, testArgs []string) *ExecutorConfig {
return &ExecutorConfig{CompileCmd: compileCmd, RunCmd: runCmd, TestCmd: testCmd, CompileArgs: compileArgs, RunArgs: runArgs, TestArgs: testArgs}
}
// BeamEnvs contains all environments related of ApacheBeam. These will use to run pipelines
type BeamEnvs struct {
ApacheBeamSdk pb.Sdk
BeamVersion string
ExecutorConfig *ExecutorConfig
preparedModDir string
numOfParallelJobs int
}
// NewBeamEnvs is a BeamEnvs constructor
func NewBeamEnvs(apacheBeamSdk pb.Sdk, beamVersion string, executorConfig *ExecutorConfig, preparedModDir string, numOfParallelJobs int) *BeamEnvs {
return &BeamEnvs{ApacheBeamSdk: apacheBeamSdk, BeamVersion: beamVersion, ExecutorConfig: executorConfig, preparedModDir: preparedModDir, numOfParallelJobs: numOfParallelJobs}
}
// PreparedModDir returns the path to the directory where prepared go.mod and go.sum are located
func (b *BeamEnvs) PreparedModDir() string {
return b.preparedModDir
}
// NumOfParallelJobs returns the max number of the possible code executions on the instance simultaneously.
func (b *BeamEnvs) NumOfParallelJobs() int {
return b.numOfParallelJobs
}