Skip to content

Commit c6dedd6

Browse files
authored
Merge pull request #111 from OctopusDeploy/enhancement-keyvault
Azure Key Vault specific xml does not break calmari
2 parents 19911b3 + 1a7221d commit c6dedd6

13 files changed

Lines changed: 135 additions & 120 deletions

source/Calamari.Azure.Tests/Calamari.Azure.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Compute.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Compute.dll</HintPath>
6464
<Private>True</Private>
6565
</Reference>
66-
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
67-
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
66+
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
67+
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
6868
<Private>True</Private>
6969
</Reference>
7070
<Reference Include="NSubstitute, Version=1.8.1.0, Culture=neutral, PublicKeyToken=92dd2e9066daa5ca, processorArchitecture=MSIL">
@@ -122,7 +122,7 @@
122122
<Compile Include="PowerShell\AzurePowerShellContextFixture.cs" />
123123
<Compile Include="PowerShell\AzurePowershellFixture.cs" />
124124
<Compile Include="Properties\AssemblyInfo.cs" />
125-
<Compile Include="ResourceGroups\ResourceGroupTemplateParserFixture.cs" />
125+
<Compile Include="ResourceGroups\ResourceGroupTemplateNormalizerFixture.cs" />
126126
<Compile Include="SetUpFixture.cs" />
127127
<Compile Include="AzureTestEnvironment.cs" />
128128
</ItemGroup>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using System.IO;
3+
using Calamari.Azure.Deployment.Integration.ResourceGroups;
4+
using NUnit.Framework;
5+
6+
namespace Calamari.Azure.Tests.ResourceGroups
7+
{
8+
[TestFixture]
9+
public class ResourceGroupTemplateNormalizerFixture
10+
{
11+
ResourceGroupTemplateNormalizer subject;
12+
13+
[SetUp]
14+
public void SetUp()
15+
{
16+
subject = new ResourceGroupTemplateNormalizer();
17+
}
18+
19+
[Test]
20+
public void ShouldNormallizeParametersWithEnvelope()
21+
{
22+
var result = subject.Normalize(ReadParametersFile("params_with_envelope.json"));
23+
24+
Assert.AreEqual(StripWhiteSpace(GetParameter()), StripWhiteSpace(result));
25+
}
26+
27+
[Test]
28+
public void ShouldNormallizeParametersSansEnvelope()
29+
{
30+
var result = subject.Normalize(ReadParametersFile("params_sans_envelope.json"));
31+
32+
Assert.AreEqual(StripWhiteSpace(GetParameter()), StripWhiteSpace(result));
33+
}
34+
35+
private string ReadParametersFile(string fileName)
36+
{
37+
var path = GetType().Namespace.Replace("Calamari.Azure.Tests.", String.Empty);
38+
path = path.Replace('.', Path.DirectorySeparatorChar);
39+
return File.ReadAllText(Path.Combine(AzureTestEnvironment.TestWorkingDirectory, path, fileName));
40+
}
41+
42+
private string StripWhiteSpace(string input)
43+
{
44+
return input.Replace(" ", string.Empty)
45+
.Replace(Environment.NewLine, string.Empty);
46+
}
47+
48+
private string GetParameter()
49+
{
50+
return @"{
51+
'lifeTheUniverseAndEverything': {
52+
'value': '42'
53+
},
54+
'password': {
55+
'reference': {
56+
'keyVault': {
57+
'id': 'id/othervalue/test'
58+
},
59+
'secretName': 'secretName'
60+
}
61+
}
62+
}".Replace("'", "\"");
63+
}
64+
}
65+
}

source/Calamari.Azure.Tests/ResourceGroups/ResourceGroupTemplateParserFixture.cs

Lines changed: 0 additions & 45 deletions
This file was deleted.
Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
{
2-
"lifeTheUniverseAndEverything": {
3-
"value": "42"
4-
}
2+
"lifeTheUniverseAndEverything": {
3+
"value": "42"
4+
},
5+
"password": {
6+
"reference": {
7+
"keyVault": {
8+
"id": "id/othervalue/test"
9+
},
10+
"secretName": "secretName"
11+
}
12+
}
513
}

source/Calamari.Azure.Tests/ResourceGroups/params_with_envelope.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
"parameters": {
55
"lifeTheUniverseAndEverything": {
66
"value": "42"
7+
},
8+
"password": {
9+
"reference": {
10+
"keyVault": {
11+
"id": "id/othervalue/test"
12+
},
13+
"secretName": "secretName"
14+
}
715
}
816
}
917
}

source/Calamari.Azure.Tests/app.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</dependentAssembly>
3333
<dependentAssembly>
3434
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
35-
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
35+
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
3636
</dependentAssembly>
3737
</assemblyBinding>
3838
</runtime>

source/Calamari.Azure.Tests/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<package id="Microsoft.WindowsAzure.Common" version="1.4.1" targetFramework="net45" />
1010
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.1.1" targetFramework="net45" />
1111
<package id="Microsoft.WindowsAzure.Management.Compute" version="6.1.2" targetFramework="net45" />
12-
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
12+
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
1313
<package id="NSubstitute" version="1.8.1.0" targetFramework="net45" />
1414
<package id="NUnit" version="2.6.4" targetFramework="net45" />
1515
<package id="Octostache" version="1.0.2.32" targetFramework="net45" />

source/Calamari.Azure/Calamari.Azure.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,7 @@
210210
<Compile Include="Deployment\Conventions\SwapAzureDeploymentConvention.cs" />
211211
<Compile Include="Deployment\Conventions\RePackageCloudServiceConvention.cs" />
212212
<Compile Include="Deployment\Conventions\UploadAzureCloudServicePackageConvention.cs" />
213-
<Compile Include="Deployment\Integration\ResourceGroups\ResourceGroupTemplateParameter.cs" />
214-
<Compile Include="Deployment\Integration\ResourceGroups\ResourceGroupTemplateParameterParser.cs" />
213+
<Compile Include="Deployment\Integration\ResourceGroups\ResourceGroupTemplateNormalizer.cs" />
215214
<Compile Include="Integration\AzureCloudServiceConfigurationRetriever.cs" />
216215
<Compile Include="Integration\AzurePackageUploader.cs" />
217216
<Compile Include="Integration\AzurePowershellContext.cs" />

source/Calamari.Azure/Commands/DeployAzureResourceGroupCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public override int Execute(string[] commandLineArguments)
5353
new ContributeEnvironmentVariablesConvention(),
5454
new LogVariablesConvention(),
5555
new ExtractPackageToStagingDirectoryConvention(new GenericPackageExtractor(), fileSystem),
56-
new DeployAzureResourceGroupConvention(templateFile, templateParameterFile, filesInPackage, fileSystem, new ResourceGroupTemplateParameterParser())
56+
new DeployAzureResourceGroupConvention(templateFile, templateParameterFile, filesInPackage, fileSystem, new ResourceGroupTemplateNormalizer())
5757
};
5858

5959
var deployment = new RunningDeployment(packageFile, variables);

source/Calamari.Azure/Deployment/Conventions/DeployAzureResourceGroupConvention.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ public class DeployAzureResourceGroupConvention : IInstallConvention
2828
readonly string templateParametersFile;
2929
private readonly bool filesInPackage;
3030
readonly ICalamariFileSystem fileSystem;
31-
readonly IResourceGroupTemplateParameterParser parameterParser;
31+
readonly IResourceGroupTemplateNormalizer parameterNormalizer;
3232

3333
public DeployAzureResourceGroupConvention(string templateFile, string templateParametersFile, bool filesInPackage,
34-
ICalamariFileSystem fileSystem, IResourceGroupTemplateParameterParser parameterParser)
34+
ICalamariFileSystem fileSystem, IResourceGroupTemplateNormalizer parameterNormalizer)
3535
{
3636
this.templateFile = templateFile;
3737
this.templateParametersFile = templateParametersFile;
3838
this.filesInPackage = filesInPackage;
3939
this.fileSystem = fileSystem;
40-
this.parameterParser = parameterParser;
40+
this.parameterNormalizer = parameterNormalizer;
4141
}
4242

4343
public void Install(RunningDeployment deployment)
@@ -55,7 +55,7 @@ public void Install(RunningDeployment deployment)
5555
variables[SpecialVariables.Action.Azure.ResourceGroupDeploymentMode]);
5656
var template = ResolveAndSubstituteFile(templateFile, filesInPackage, variables);
5757
var parameters = !string.IsNullOrWhiteSpace(templateParametersFile)
58-
? parameterParser.ParseParameters(ResolveAndSubstituteFile(templateParametersFile, filesInPackage, variables))
58+
? parameterNormalizer.Normalize(ResolveAndSubstituteFile(templateParametersFile, filesInPackage, variables))
5959
: null;
6060

6161
Log.Info(
@@ -82,14 +82,12 @@ static string GenerateDeploymentNameFromStepName(string stepName)
8282
}
8383

8484
static void CreateDeployment(Func<IResourceManagementClient> createArmClient, string resourceGroupName, string deploymentName,
85-
DeploymentMode deploymentMode, string template, IDictionary<string, ResourceGroupTemplateParameter> parameters)
85+
DeploymentMode deploymentMode, string template, string parameters)
8686
{
87-
var parameterJson = parameters != null ? JsonConvert.SerializeObject(parameters, Formatting.Indented) : null;
88-
8987
Log.Verbose($"Template:\n{template}\n");
90-
if (parameterJson != null)
88+
if (parameters != null)
9189
{
92-
Log.Verbose($"Parameters:\n{parameterJson}\n");
90+
Log.Verbose($"Parameters:\n{parameters}\n");
9391
}
9492

9593
using (var armClient = createArmClient())
@@ -101,7 +99,7 @@ static void CreateDeployment(Func<IResourceManagementClient> createArmClient, st
10199
{
102100
Mode = deploymentMode,
103101
Template = template,
104-
Parameters = parameterJson
102+
Parameters = parameters
105103
}
106104
});
107105

0 commit comments

Comments
 (0)