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);
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
            }
        }
Esempio n. 7
0
 public ScriptSyntax[] GetSupportedTypes()
 {
     return(ScriptSyntaxHelper.GetPreferenceOrderedScriptSyntaxesForEnvironment());
 }