Skip to content

Commit

Permalink
Merge pull request #689 from FabianKramm/driver-refactor
Browse files Browse the repository at this point in the history
fix: local provider options
  • Loading branch information
FabianKramm authored Sep 11, 2023
2 parents a52d4b8 + 0e9fd0c commit 66ad13c
Show file tree
Hide file tree
Showing 10 changed files with 108 additions and 135 deletions.
76 changes: 38 additions & 38 deletions cmd/agent/container/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ var DockerlessImageConfigOutput = "/.dockerless/image.json"
type SetupContainerCmd struct {
*flags.GlobalFlags

ChownWorkspace bool
StreamMounts bool
WorkspaceInfo string
SetupInfo string
ChownWorkspace bool
StreamMounts bool
ContainerWorkspaceInfo string
SetupInfo string
}

// NewSetupContainerCmd creates a new command
Expand All @@ -65,7 +65,7 @@ func NewSetupContainerCmd(flags *flags.GlobalFlags) *cobra.Command {
}
setupContainerCmd.Flags().BoolVar(&cmd.StreamMounts, "stream-mounts", false, "If true, will try to stream the bind mounts from the host")
setupContainerCmd.Flags().BoolVar(&cmd.ChownWorkspace, "chown-workspace", false, "If DevPod should chown the workspace to the remote user")
setupContainerCmd.Flags().StringVar(&cmd.WorkspaceInfo, "workspace-info", "", "The workspace info")
setupContainerCmd.Flags().StringVar(&cmd.ContainerWorkspaceInfo, "container-workspace-info", "", "The container workspace info")
setupContainerCmd.Flags().StringVar(&cmd.SetupInfo, "setup-info", "", "The container setup info")
_ = setupContainerCmd.MarkFlagRequired("setup-info")
return setupContainerCmd
Expand All @@ -80,8 +80,8 @@ func (cmd *SetupContainerCmd) Run(ctx context.Context) error {
}

// create debug logger
log := tunnelserver.NewTunnelLogger(ctx, tunnelClient, cmd.Debug)
log.Debugf("Created logger")
logger := tunnelserver.NewTunnelLogger(ctx, tunnelClient, cmd.Debug)
logger.Debugf("Created logger")

// this message serves as a ping to the client
_, err = tunnelClient.Ping(ctx, &tunnel.Empty{})
Expand All @@ -90,8 +90,8 @@ func (cmd *SetupContainerCmd) Run(ctx context.Context) error {
}

// start setting up container
log.Debugf("Start setting up container...")
workspaceInfo, _, err := agent.DecodeWorkspaceInfo(cmd.WorkspaceInfo)
logger.Debugf("Start setting up container...")
workspaceInfo, _, err := agent.DecodeContainerWorkspaceInfo(cmd.ContainerWorkspaceInfo)
if err != nil {
return err
}
Expand All @@ -117,22 +117,22 @@ func (cmd *SetupContainerCmd) Run(ctx context.Context) error {
}

// stream mount
log.Infof("Copy %s into DevContainer %s", m.Source, m.Target)
logger.Infof("Copy %s into DevContainer %s", m.Source, m.Target)
stream, err := tunnelClient.StreamMount(ctx, &tunnel.StreamMountRequest{Mount: m.String()})
if err != nil {
return fmt.Errorf("init stream mount %s: %w", m.String(), err)
}

// target folder
err = extract.Extract(tunnelserver.NewStreamReader(stream, log), m.Target)
err = extract.Extract(tunnelserver.NewStreamReader(stream, logger), m.Target)
if err != nil {
return fmt.Errorf("stream stream mount %s: %w", m.String(), err)
}
}
}

// do dockerless build
err = dockerlessBuild(ctx, setupInfo, workspaceInfo, tunnelClient, log)
err = dockerlessBuild(ctx, setupInfo, &workspaceInfo.Dockerless, tunnelClient, logger)
if err != nil {
return fmt.Errorf("dockerless build: %w", err)
}
Expand All @@ -144,27 +144,27 @@ func (cmd *SetupContainerCmd) Run(ctx context.Context) error {
}

// setup container
err = setup.SetupContainer(setupInfo, workspaceInfo, cmd.ChownWorkspace, log)
err = setup.SetupContainer(setupInfo, workspaceInfo.CLIOptions.WorkspaceEnv, cmd.ChownWorkspace, logger)
if err != nil {
return err
}

// install IDE
err = cmd.installIDE(setupInfo, workspaceInfo, log)
err = cmd.installIDE(setupInfo, &workspaceInfo.IDE, logger)
if err != nil {
return err
}

// start container daemon if necessary
if !workspaceInfo.CLIOptions.Proxy && !workspaceInfo.CLIOptions.DisableDaemon && workspaceInfo.Agent.ContainerTimeout != "" {
if !workspaceInfo.CLIOptions.Proxy && !workspaceInfo.CLIOptions.DisableDaemon && workspaceInfo.ContainerTimeout != "" {
err = single.Single("devpod.daemon.pid", func() (*exec.Cmd, error) {
log.Debugf("Start DevPod Container Daemon with Inactivity Timeout %s", workspaceInfo.Agent.ContainerTimeout)
logger.Debugf("Start DevPod Container Daemon with Inactivity Timeout %s", workspaceInfo.ContainerTimeout)
binaryPath, err := os.Executable()
if err != nil {
return nil, err
}

return exec.Command(binaryPath, "agent", "container", "daemon", "--timeout", workspaceInfo.Agent.ContainerTimeout), nil
return exec.Command(binaryPath, "agent", "container", "daemon", "--timeout", workspaceInfo.ContainerTimeout), nil
})
if err != nil {
return err
Expand Down Expand Up @@ -206,7 +206,7 @@ func fillContainerEnv(setupInfo *config.Result) error {
func dockerlessBuild(
ctx context.Context,
setupInfo *config.Result,
workspaceInfo *provider2.AgentWorkspaceInfo,
dockerlessOptions *provider2.ProviderDockerlessOptions,
client tunnel.TunnelClient,
log log.Logger,
) error {
Expand Down Expand Up @@ -249,7 +249,7 @@ func dockerlessBuild(
}

// configure credentials
if workspaceInfo.Agent.InjectDockerCredentials != "false" {
if dockerlessOptions.DisableDockerCredentials != "true" {
var cancel context.CancelFunc
ctx, cancel = context.WithCancel(ctx)
defer cancel()
Expand All @@ -268,7 +268,7 @@ func dockerlessBuild(

// build args
args := []string{"build", "--ignore-path", binaryPath}
args = append(args, parseIgnorePaths(workspaceInfo.Agent.DockerlessIgnorePaths)...)
args = append(args, parseIgnorePaths(dockerlessOptions.IgnorePaths)...)
args = append(args, "--build-arg", "TARGETOS="+runtime.GOOS)
args = append(args, "--build-arg", "TARGETARCH="+runtime.GOARCH)

Expand Down Expand Up @@ -357,40 +357,40 @@ func configureDockerCredentials(
return dockerCredentials, nil
}

func (cmd *SetupContainerCmd) installIDE(setupInfo *config.Result, workspaceInfo *provider2.AgentWorkspaceInfo, log log.Logger) error {
switch workspaceInfo.Workspace.IDE.Name {
func (cmd *SetupContainerCmd) installIDE(setupInfo *config.Result, ide *provider2.WorkspaceIDEConfig, log log.Logger) error {
switch ide.Name {
case string(config2.IDENone):
return nil
case string(config2.IDEVSCode):
return cmd.setupVSCode(setupInfo, workspaceInfo, log)
return cmd.setupVSCode(setupInfo, ide.Options, log)
case string(config2.IDEOpenVSCode):
return cmd.setupOpenVSCode(setupInfo, workspaceInfo, log)
return cmd.setupOpenVSCode(setupInfo, ide.Options, log)
case string(config2.IDEGoland):
return jetbrains.NewGolandServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewGolandServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDEPyCharm):
return jetbrains.NewPyCharmServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewPyCharmServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDEPhpStorm):
return jetbrains.NewPhpStorm(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewPhpStorm(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDEIntellij):
return jetbrains.NewIntellij(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewIntellij(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDECLion):
return jetbrains.NewCLionServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewCLionServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDERider):
return jetbrains.NewRiderServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewRiderServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDERubyMine):
return jetbrains.NewRubyMineServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewRubyMineServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDEWebStorm):
return jetbrains.NewWebStormServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jetbrains.NewWebStormServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install()
case string(config2.IDEFleet):
return fleet.NewFleetServer(config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install(setupInfo.SubstitutionContext.ContainerWorkspaceFolder)
return fleet.NewFleetServer(config.GetRemoteUser(setupInfo), ide.Options, log).Install(setupInfo.SubstitutionContext.ContainerWorkspaceFolder)
case string(config2.IDEJupyterNotebook):
return jupyter.NewJupyterNotebookServer(setupInfo.SubstitutionContext.ContainerWorkspaceFolder, config.GetRemoteUser(setupInfo), workspaceInfo.Workspace.IDE.Options, log).Install()
return jupyter.NewJupyterNotebookServer(setupInfo.SubstitutionContext.ContainerWorkspaceFolder, config.GetRemoteUser(setupInfo), ide.Options, log).Install()
}

return nil
}

func (cmd *SetupContainerCmd) setupVSCode(setupInfo *config.Result, workspaceInfo *provider2.AgentWorkspaceInfo, log log.Logger) error {
func (cmd *SetupContainerCmd) setupVSCode(setupInfo *config.Result, ideOptions map[string]config2.OptionValue, log log.Logger) error {
log.Debugf("Setup vscode...")
vsCodeConfiguration := config.GetVSCodeConfiguration(setupInfo.MergedConfig)
settings := ""
Expand All @@ -404,7 +404,7 @@ func (cmd *SetupContainerCmd) setupVSCode(setupInfo *config.Result, workspaceInf
}

user := config.GetRemoteUser(setupInfo)
err := vscode.NewVSCodeServer(vsCodeConfiguration.Extensions, settings, user, workspaceInfo.Workspace.IDE.Options, log).Install()
err := vscode.NewVSCodeServer(vsCodeConfiguration.Extensions, settings, user, ideOptions, log).Install()
if err != nil {
return err
}
Expand Down Expand Up @@ -441,7 +441,7 @@ func setupOpenVSCodeExtensions(setupInfo *config.Result, log log.Logger) error {
return openvscode.NewOpenVSCodeServer(vsCodeConfiguration.Extensions, "", user, "", "", nil, log).InstallExtensions()
}

func (cmd *SetupContainerCmd) setupOpenVSCode(setupInfo *config.Result, workspaceInfo *provider2.AgentWorkspaceInfo, log log.Logger) error {
func (cmd *SetupContainerCmd) setupOpenVSCode(setupInfo *config.Result, ideOptions map[string]config2.OptionValue, log log.Logger) error {
log.Debugf("Setup openvscode...")
vsCodeConfiguration := config.GetVSCodeConfiguration(setupInfo.MergedConfig)
settings := ""
Expand All @@ -455,7 +455,7 @@ func (cmd *SetupContainerCmd) setupOpenVSCode(setupInfo *config.Result, workspac
}

user := config.GetRemoteUser(setupInfo)
openVSCode := openvscode.NewOpenVSCodeServer(vsCodeConfiguration.Extensions, settings, user, "0.0.0.0", strconv.Itoa(openvscode.DefaultVSCodePort), workspaceInfo.Workspace.IDE.Options, log)
openVSCode := openvscode.NewOpenVSCodeServer(vsCodeConfiguration.Extensions, settings, user, "0.0.0.0", strconv.Itoa(openvscode.DefaultVSCodePort), ideOptions, log)

// install open vscode
err := openVSCode.Install()
Expand Down
15 changes: 15 additions & 0 deletions pkg/agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,21 @@ func DefaultAgentDownloadURL() string {
return defaultAgentDownloadURL + version.GetVersion()
}

func DecodeContainerWorkspaceInfo(workspaceInfoRaw string) (*provider2.ContainerWorkspaceInfo, string, error) {
decoded, err := compress.Decompress(workspaceInfoRaw)
if err != nil {
return nil, "", perrors.Wrap(err, "decode workspace info")
}

workspaceInfo := &provider2.ContainerWorkspaceInfo{}
err = json.Unmarshal([]byte(decoded), workspaceInfo)
if err != nil {
return nil, "", perrors.Wrap(err, "parse workspace info")
}

return workspaceInfo, decoded, nil
}

func DecodeWorkspaceInfo(workspaceInfoRaw string) (*provider2.AgentWorkspaceInfo, string, error) {
decoded, err := compress.Decompress(workspaceInfoRaw)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/client/clientimplementation/workspace_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (s *workspaceClient) agentInfo(cliOptions provider.CLIOptions) (string, *pr
// we don't send any provider options if proxy because these could contain
// sensitive information and we don't want to allow privileged containers that
// have access to the host to save these.
if cliOptions.Proxy || cliOptions.DisableDaemon {
if agentInfo.Agent.Driver != provider.CustomDriver && (cliOptions.Proxy || cliOptions.DisableDaemon) {
agentInfo.Options = map[string]config.OptionValue{}
agentInfo.Workspace = provider.CloneWorkspace(agentInfo.Workspace)
agentInfo.Workspace.Provider.Options = map[string]config.OptionValue{}
Expand Down
2 changes: 1 addition & 1 deletion pkg/devcontainer/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ func (r *Runner) buildImage(
// check if we should fallback to dockerless
dockerDriver, ok := r.Driver.(driver.DockerDriver)
if options.ForceDockerless || !ok {
if r.WorkspaceConfig.Agent.DockerlessDisabled == "true" {
if r.WorkspaceConfig.Agent.Dockerless.Disabled == "true" {
return nil, fmt.Errorf("cannot build devcontainer because driver is non-docker and dockerless fallback is disabled")
}

Expand Down
12 changes: 9 additions & 3 deletions pkg/devcontainer/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/loft-sh/devpod/pkg/compress"
"github.com/loft-sh/devpod/pkg/devcontainer/config"
"github.com/loft-sh/devpod/pkg/driver"
provider2 "github.com/loft-sh/devpod/pkg/provider"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
Expand Down Expand Up @@ -47,8 +48,13 @@ func (r *Runner) setupContainer(
return nil, err
}

// compress workspace info
workspaceConfigRaw, err := json.Marshal(r.WorkspaceConfig)
// compress container workspace info
workspaceConfigRaw, err := json.Marshal(&provider2.ContainerWorkspaceInfo{
IDE: r.WorkspaceConfig.Workspace.IDE,
CLIOptions: r.WorkspaceConfig.CLIOptions,
Dockerless: r.WorkspaceConfig.Agent.Dockerless,
ContainerTimeout: r.WorkspaceConfig.Agent.ContainerTimeout,
})
if err != nil {
return nil, err
}
Expand All @@ -62,7 +68,7 @@ func (r *Runner) setupContainer(

// setup container
r.Log.Infof("Setup container...")
command := fmt.Sprintf("'%s' agent container setup --setup-info '%s' --workspace-info '%s'", agent.ContainerDevPodHelperLocation, compressed, workspaceConfigCompressed)
command := fmt.Sprintf("'%s' agent container setup --setup-info '%s' --container-workspace-info '%s'", agent.ContainerDevPodHelperLocation, compressed, workspaceConfigCompressed)
if runtime.GOOS == "linux" || !isDockerDriver {
command += " --chown-workspace"
}
Expand Down
15 changes: 7 additions & 8 deletions pkg/devcontainer/setup/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
copy2 "github.com/loft-sh/devpod/pkg/copy"
"github.com/loft-sh/devpod/pkg/devcontainer/config"
"github.com/loft-sh/devpod/pkg/envfile"
provider2 "github.com/loft-sh/devpod/pkg/provider"
"github.com/loft-sh/devpod/pkg/types"
"github.com/loft-sh/log"
"github.com/pkg/errors"
Expand All @@ -23,7 +22,7 @@ const (
ResultLocation = "/var/run/devpod/result.json"
)

func SetupContainer(setupInfo *config.Result, workspaceInfo *provider2.AgentWorkspaceInfo, chownWorkspace bool, log log.Logger) error {
func SetupContainer(setupInfo *config.Result, extraWorkspaceEnv []string, chownWorkspace bool, log log.Logger) error {
// write result to ResultLocation
WriteResult(setupInfo, log)

Expand All @@ -41,7 +40,7 @@ func SetupContainer(setupInfo *config.Result, workspaceInfo *provider2.AgentWork
if err != nil {
return errors.Wrap(err, "patch etc environment")
}
err = PatchEtcEnvironmentFlags(workspaceInfo, log)
err = PatchEtcEnvironmentFlags(extraWorkspaceEnv, log)
if err != nil {
return errors.Wrap(err, "patch etc environment from flags")
}
Expand Down Expand Up @@ -161,24 +160,24 @@ func PatchEtcProfile() error {
return nil
}

func PatchEtcEnvironmentFlags(workspaceInfo *provider2.AgentWorkspaceInfo, log log.Logger) error {
if len(workspaceInfo.CLIOptions.WorkspaceEnv) == 0 {
func PatchEtcEnvironmentFlags(workspaceEnv []string, log log.Logger) error {
if len(workspaceEnv) == 0 {
return nil
}

// make sure we sort the strings
sort.Strings(workspaceInfo.CLIOptions.WorkspaceEnv)
sort.Strings(workspaceEnv)

// check if we need to update env
exists, err := markerFileExists("patchEtcEnvironmentFlags", strings.Join(workspaceInfo.CLIOptions.WorkspaceEnv, "\n"))
exists, err := markerFileExists("patchEtcEnvironmentFlags", strings.Join(workspaceEnv, "\n"))
if err != nil {
return err
} else if exists {
return nil
}

// update env
envfile.MergeAndApply(config.ListToObject(workspaceInfo.CLIOptions.WorkspaceEnv), log)
envfile.MergeAndApply(config.ListToObject(workspaceEnv), log)
return nil
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/devcontainer/single.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ func (r *Runner) getDockerlessRunOptions(
}

image := dockerlessImage
if r.WorkspaceConfig != nil && r.WorkspaceConfig.Agent.DockerlessImage != "" {
image = r.WorkspaceConfig.Agent.DockerlessImage
if r.WorkspaceConfig != nil && r.WorkspaceConfig.Agent.Dockerless.Image != "" {
image = r.WorkspaceConfig.Agent.Dockerless.Image
}

// we need to add an extra mount here, because otherwise the build config might get lost
Expand Down
22 changes: 3 additions & 19 deletions pkg/options/resolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,30 +202,14 @@ func ResolveAgentConfig(devConfig *config.Config, provider *provider2.ProviderCo
// fill in agent config
options := provider2.ToOptions(workspace, machine, devConfig.ProviderOptions(provider.Name))
agentConfig := provider.Agent
agentConfig.DockerlessImage = resolver.ResolveDefaultValue(agentConfig.DockerlessImage, options)
agentConfig.DockerlessDisabled = types.StrBool(resolver.ResolveDefaultValue(string(agentConfig.DockerlessDisabled), options))
agentConfig.DockerlessIgnorePaths = resolver.ResolveDefaultValue(agentConfig.DockerlessIgnorePaths, options)
agentConfig.Dockerless.Image = resolver.ResolveDefaultValue(agentConfig.Dockerless.Image, options)
agentConfig.Dockerless.Disabled = types.StrBool(resolver.ResolveDefaultValue(string(agentConfig.Dockerless.Disabled), options))
agentConfig.Dockerless.IgnorePaths = resolver.ResolveDefaultValue(agentConfig.Dockerless.IgnorePaths, options)
agentConfig.Driver = resolver.ResolveDefaultValue(agentConfig.Driver, options)
agentConfig.Local = types.StrBool(resolver.ResolveDefaultValue(string(agentConfig.Local), options))
agentConfig.Docker.Path = resolver.ResolveDefaultValue(agentConfig.Docker.Path, options)
agentConfig.Docker.Install = types.StrBool(resolver.ResolveDefaultValue(string(agentConfig.Docker.Install), options))
agentConfig.Docker.Env = resolver.ResolveDefaultValues(agentConfig.Docker.Env, options)
agentConfig.Kubernetes.Path = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Path, options)
agentConfig.Kubernetes.HelperImage = resolver.ResolveDefaultValue(agentConfig.Kubernetes.HelperImage, options)
agentConfig.Kubernetes.Config = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Config, options)
agentConfig.Kubernetes.Context = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Context, options)
agentConfig.Kubernetes.Namespace = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Namespace, options)
agentConfig.Kubernetes.ClusterRole = resolver.ResolveDefaultValue(agentConfig.Kubernetes.ClusterRole, options)
agentConfig.Kubernetes.ServiceAccount = resolver.ResolveDefaultValue(agentConfig.Kubernetes.ServiceAccount, options)
agentConfig.Kubernetes.PersistentVolumeSize = resolver.ResolveDefaultValue(agentConfig.Kubernetes.PersistentVolumeSize, options)
agentConfig.Kubernetes.PVCAccessMode = resolver.ResolveDefaultValue(agentConfig.Kubernetes.PVCAccessMode, options)
agentConfig.Kubernetes.StorageClassName = resolver.ResolveDefaultValue(agentConfig.Kubernetes.StorageClassName, options)
agentConfig.Kubernetes.PodManifestTemplate = resolver.ResolveDefaultValue(agentConfig.Kubernetes.PodManifestTemplate, options)
agentConfig.Kubernetes.NodeSelector = resolver.ResolveDefaultValue(agentConfig.Kubernetes.NodeSelector, options)
agentConfig.Kubernetes.Resources = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Resources, options)
agentConfig.Kubernetes.Labels = resolver.ResolveDefaultValue(agentConfig.Kubernetes.Labels, options)
agentConfig.Kubernetes.HelperResources = resolver.ResolveDefaultValue(agentConfig.Kubernetes.HelperResources, options)
agentConfig.Kubernetes.CreateNamespace = types.StrBool(resolver.ResolveDefaultValue(string(agentConfig.Kubernetes.CreateNamespace), options))
agentConfig.DataPath = resolver.ResolveDefaultValue(agentConfig.DataPath, options)
agentConfig.Path = resolver.ResolveDefaultValue(agentConfig.Path, options)
if agentConfig.Path == "" && agentConfig.Local == "true" {
Expand Down
Loading

0 comments on commit 66ad13c

Please sign in to comment.