public void Install(RunningDeployment deployment) { ScriptSyntax syntax = ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment(); var cmd = BuildHelmCommand(deployment, syntax); var fileName = SyntaxSpecificFileName(deployment, syntax); using (new TemporaryFile(fileName)) { fileSystem.OverwriteFile(fileName, cmd); var result = scriptEngine.Execute(new Script(fileName), deployment.Variables, commandLineRunner); if (result.ExitCode != 0) { throw new CommandException(string.Format( "Helm Upgrade returned non-zero exit code: {0}. Deployment terminated.", result.ExitCode)); } if (result.HasErrors && deployment.Variables.GetFlag(Deployment.SpecialVariables.Action.FailScriptOnErrorOutput, false)) { throw new CommandException( $"Helm Upgrade returned zero exit code but had error output. Deployment terminated."); } } }
/// <summary> /// One of these fields must be present for a k8s step /// </summary> public bool IsEnabled(ScriptSyntax syntax) { return((!string.IsNullOrEmpty(variables.Get(SpecialVariables.ClusterUrl, "")) || !string.IsNullOrEmpty(variables.Get(SpecialVariables.AksClusterName, "")) || !string.IsNullOrEmpty(variables.Get(SpecialVariables.EksClusterName, ""))) && syntax == ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment()); }
public void ShouldBeEnabledIfAnyVariablesAreProvided(string clusterUrl, string aksClusterName, string eksClusterName, bool expected) { variables.Set(SpecialVariables.ClusterUrl, clusterUrl); variables.Set(SpecialVariables.AksClusterName, aksClusterName); variables.Set(SpecialVariables.EksClusterName, eksClusterName); var wrapper = CreateWrapper(); var actual = wrapper.IsEnabled(ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment()); actual.Should().Be(expected); }
public void ShouldBeEnabledIfScriptSyntaxIsPreferredSyntaxOnEnvironment() { var variables = new CalamariVariableDictionary { { SpecialVariables.ClusterUrl, "Url" }, { SpecialVariables.AksClusterName, "" }, { SpecialVariables.EksClusterName, "" } }; var target = new KubernetesContextScriptWrapper(variables); var actual = target.IsEnabled(ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment()); actual.Should().BeTrue(); }
public void ShouldBeEnabledIfAnyVariablesAreProvided(string clusterUrl, string aksClusterName, string eksClusterName, bool expected) { var variables = new CalamariVariables { { SpecialVariables.ClusterUrl, clusterUrl }, { SpecialVariables.AksClusterName, aksClusterName }, { SpecialVariables.EksClusterName, eksClusterName } }; var target = new KubernetesContextScriptWrapper(variables); var actual = target.IsEnabled(ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment()); actual.Should().Be(expected); }
public void ShouldBeDisabledIfScriptSyntaxIsNotPreferredSyntaxOnEnvironment() { var variables = new CalamariVariableDictionary { { SpecialVariables.ClusterUrl, "Url" }, { SpecialVariables.AksClusterName, "" }, { SpecialVariables.EksClusterName, "" } }; var target = new KubernetesContextScriptWrapper(variables); var possibleSyntaxes = Enum.GetValues(typeof(ScriptSyntax)).Cast <ScriptSyntax>(); foreach (var syntax in possibleSyntaxes.Except(new [] { ScriptSyntaxHelper.GetPreferredScriptSyntaxForEnvironment() })) { var actual = target.IsEnabled(syntax); actual.Should().BeFalse(); } }
public ScriptSyntax[] GetSupportedTypes() { return(ScriptSyntaxHelper.GetPreferenceOrderedScriptSyntaxesForEnvironment()); }