public CommandResult Execute(Script script, IVariables variables, ICommandLineRunner commandLineRunner, Dictionary <string, string>?environmentVars = null) { var environmentVariablesIncludingProxy = environmentVars ?? new Dictionary <string, string>(); foreach (var proxyVariable in ProxyEnvironmentVariablesGenerator.GenerateProxyEnvironmentVariables()) { environmentVariablesIncludingProxy[proxyVariable.Key] = proxyVariable.Value; } var prepared = PrepareExecution(script, variables, environmentVariablesIncludingProxy); CommandResult?result = null; foreach (var execution in prepared) { if (variables.IsSet(CopyWorkingDirectoryVariable)) { CopyWorkingDirectory(variables, execution.CommandLineInvocation.WorkingDirectory, execution.CommandLineInvocation.Arguments); } try { if (execution.CommandLineInvocation.Isolate) { using (SemaphoreFactory.Get() .Acquire("CalamariSynchronizeProcess", "Waiting for other process to finish executing script")) { result = commandLineRunner.Execute(execution.CommandLineInvocation); } } else { result = commandLineRunner.Execute(execution.CommandLineInvocation); } if (result.ExitCode != 0) { return(result); } } finally { foreach (var temporaryFile in execution.TemporaryFiles) { var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); fileSystem.DeleteFile(temporaryFile, FailureOptions.IgnoreFailure); } } } return(result !); }
IEnumerable <EnvironmentVariable> RunWith( bool useDefaultProxy, string proxyhost, int proxyPort, string proxyUsername, string proxyPassword) { Environment.SetEnvironmentVariable(EnvironmentVariables.TentacleUseDefaultProxy, useDefaultProxy.ToString()); Environment.SetEnvironmentVariable(EnvironmentVariables.TentacleProxyHost, proxyhost); Environment.SetEnvironmentVariable(EnvironmentVariables.TentacleProxyPort, proxyPort.ToString()); Environment.SetEnvironmentVariable(EnvironmentVariables.TentacleProxyUsername, proxyUsername); Environment.SetEnvironmentVariable(EnvironmentVariables.TentacleProxyPassword, proxyPassword); return(ProxyEnvironmentVariablesGenerator.GenerateProxyEnvironmentVariables()); }
public CommandResult Execute(string accountType) { var errorResult = new CommandResult(string.Empty, 1); foreach (var proxyVariable in ProxyEnvironmentVariablesGenerator.GenerateProxyEnvironmentVariables()) { environmentVars[proxyVariable.Key] = proxyVariable.Value; } var kubeConfig = ConfigureCliExecution(); if (!TrySetKubectl()) { return(errorResult); } var @namespace = variables.Get(SpecialVariables.Namespace); if (string.IsNullOrEmpty(@namespace)) { log.Verbose("No namespace provided. Using default"); @namespace = "default"; } if (!TrySetupContext(kubeConfig, @namespace, accountType)) { return(errorResult); } if (!CreateNamespace(@namespace)) { log.Verbose("Could not create namespace. Continuing on, as it may not be working directly with the target."); } ; var outputKubeConfig = variables.GetFlag(SpecialVariables.OutputKubeConfig); if (outputKubeConfig) { ExecuteKubectlCommand("config", "view"); } return(new CommandResult(string.Empty, 0)); }
void InitializeTerraformEnvironmentVariables() { defaultEnvironmentVariables = ProxyEnvironmentVariablesGenerator.GenerateProxyEnvironmentVariables().ToDictionary(e => e.Key, e => e.Value); defaultEnvironmentVariables.Add("TF_IN_AUTOMATION", "1"); defaultEnvironmentVariables.Add("TF_LOG", "TRACE"); defaultEnvironmentVariables.Add("TF_LOG_PATH", logPath); defaultEnvironmentVariables.Add("TF_INPUT", "0"); var customPluginDir = deployment.Variables.Get(TerraformSpecialVariables.Action.Terraform.PluginsDirectory); var pluginsPath = Path.Combine(deployment.CurrentDirectory, "terraformplugins"); fileSystem.EnsureDirectoryExists(pluginsPath); if (!string.IsNullOrEmpty(customPluginDir)) { fileSystem.CopyDirectory(customPluginDir, pluginsPath); } defaultEnvironmentVariables.Add("TF_PLUGIN_CACHE_DIR", pluginsPath); }
protected override int ExecuteInternal(NodeInstructions instructions) { using (var variableFile = new TemporaryFile(Path.GetTempFileName())) { var jsonInputs = variables.GetRaw(instructions.InputsVariable) ?? string.Empty; variables.Set(instructions.InputsVariable, InputSubstitution.SubstituteAndEscapeAllVariablesInJson(jsonInputs, variables, log)); var variablesAsJson = variables.CloneAndEvaluate().SaveAsString(); File.WriteAllBytes(variableFile.FilePath, new AesEncryption(options.InputVariables.SensitiveVariablesPassword).Encrypt(variablesAsJson)); var pathToNode = variables.Get(instructions.NodePathVariable); var nodeExecutablePath = BuildNodePath(pathToNode); var parameters = BuildParams(instructions, variableFile.FilePath); var runningDeployment = new RunningDeployment(variables); var commandLineInvocation = new CommandLineInvocation(nodeExecutablePath, parameters) { WorkingDirectory = runningDeployment.CurrentDirectory, OutputToLog = true, EnvironmentVars = ProxyEnvironmentVariablesGenerator.GenerateProxyEnvironmentVariables().ToDictionary(e => e.Key, e => e.Value) }; var commandResult = commandLineRunner.Execute(commandLineInvocation); return(commandResult.ExitCode); } }