Skip to content

Commit

Permalink
Update deployment template to new API version (#97)
Browse files Browse the repository at this point in the history
  • Loading branch information
sparsick authored Jan 20, 2022
1 parent c24a7ac commit 02fd999
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,6 @@ protected void _terminate(TaskListener listener) throws IOException, Interrupted
resourceGroup,
AciAgent.this.getNodeName(),
deployName);
AciService.deleteNetworkProfile(credentialsId,
resourceGroup,
AciAgent.this.getNodeName());
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,6 @@ private void cleanLeakedContainer(final AciCloud cloud) {
resourceGroup,
resource.name(),
null);
AciService.deleteNetworkProfile(credentialsId,
resourceGroup,
resource.name());
});
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.microsoft.jenkins.containeragents.aci;

import com.azure.core.management.exception.ManagementException;
import com.azure.resourcemanager.AzureResourceManager;
import com.azure.resourcemanager.containerinstance.models.ContainerGroup;
import com.azure.resourcemanager.resources.models.Deployment;
Expand Down Expand Up @@ -125,42 +124,4 @@ public static void deleteAciContainerGroup(String credentialsId,
}
}

public static void deleteNetworkProfile(String credentialsId,
String resourceGroup,
String networkProfileName) {
AzureResourceManager azureClient;

try {
azureClient = AzureContainerUtils.getAzureClient(credentialsId);
boolean retryDeleting;
int retryCounter = 0;
do {
try {
azureClient.networkProfiles().deleteByResourceGroup(resourceGroup, networkProfileName);
retryDeleting = false;
} catch (ManagementException e) {
final int maxRetry = 10;
if (e.getValue().getCode().equals("NetworkProfileAlreadyInUseWithContainerNics")
&& retryCounter < maxRetry) {
final int retryInterval = 10 * 1000;
LOGGER.log(Level.WARNING,
"ACI Network Profile {0} is already in use. Waiting for retry in {1} seconds. "
+ "It was retry number {2} of {3}.",
new Object[]{networkProfileName, retryInterval, retryCounter, maxRetry});
Thread.sleep(retryInterval);
retryDeleting = true;
retryCounter++;
} else {
throw e;
}
}
}
while (retryDeleting);
LOGGER.log(Level.INFO, "Delete ACI Network Profile: {0} successfully", networkProfileName);
} catch (Exception e) {
LOGGER.log(Level.WARNING, String.format("Delete ACI Network Profile: %s failed or it does not exist",
networkProfileName), e);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ public final class AciDeploymentTemplateBuilder {

private static final String DEPLOY_TEMPLATE_FILENAME
= "/com/microsoft/jenkins/containeragents/aci/deployTemplate.json";
private static final String NETWORK_PROFILE_SNIPPET_FILENAME
= "/com/microsoft/jenkins/containeragents/aci/networkProfileSnippet.json";

private final JenkinsFacade jenkins;
private final CustomJenkinsFacade customJenkinsFacade;
Expand Down Expand Up @@ -106,37 +104,28 @@ public AciDeploymentTemplate buildDeploymentTemplate(AciCloud cloud, AciContaine
}
}

addNetworkProfile(tmp, mapper, privateIpAddress);
addSubnetIds(tmp, mapper, privateIpAddress);

return new AciDeploymentTemplate(tmp, parameters);
}
}

private void addNetworkProfile(JsonNode tmp, ObjectMapper mapper, AciPrivateIpAddress privateIpAddress)
throws IOException {
private void addSubnetIds(JsonNode tmp, ObjectMapper mapper, AciPrivateIpAddress privateIpAddress) {
if (privateIpAddress == null) {
return;
}

ObjectNode networkProfileNode = mapper.createObjectNode();
networkProfileNode.put("id",
"[resourceId('Microsoft.Network/networkProfiles', variables('containerName'))]");

ObjectNode subnetIdNode = mapper.createObjectNode();
subnetIdNode.put("id",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'),"
+ " variables('subnetName'))]");
ArrayNode subnetIdsArray = mapper.createArrayNode();
subnetIdsArray.add(subnetIdNode);

ArrayNode resourcesArray = (ArrayNode) tmp.get("resources");

ObjectNode containerGroupItem = (ObjectNode) resourcesArray.get(0);
ObjectNode propertiesNode = (ObjectNode) containerGroupItem.get("properties");
propertiesNode.set("networkProfile", networkProfileNode);
ArrayNode dependencyArrayNode = mapper.createArrayNode();
dependencyArrayNode.add("[resourceId('Microsoft.Network/networkProfiles', variables('containerName'))]");
containerGroupItem.set("dependsOn", dependencyArrayNode);

try (InputStream networkProfileSnippetStream =
AciService.class.getResourceAsStream(NETWORK_PROFILE_SNIPPET_FILENAME)) {
JsonNode networkProfileItem = mapper.readTree(networkProfileSnippetStream);
resourcesArray.add(networkProfileItem);
}
propertiesNode.set("subnetIds", subnetIdsArray);
}

private String mapIpType(AciPrivateIpAddress privateIpAddress) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
Expand All @@ -15,7 +15,7 @@
{
"name": "[variables('containerName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"apiVersion": "2021-09-01",
"tags": {
"JenkinsInstance": "[variables('jenkinsInstance')]"
},
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void templateWithVnet() throws IOException {

assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), containsString("\"vnetName\":\"vnet\","));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), containsString("\"subnetName\":\"subnet\""));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), containsString("\"type\":\"Microsoft.Network/networkProfiles\""));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), containsString("\"subnetIds\":"));
}

@Test
Expand All @@ -61,6 +61,6 @@ public void templateWithoutVnet() throws IOException {

assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), not(containsString("\"vnetName\": \"vnet\",")));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), not(containsString("\"subnetName\": \"subnet\"")));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), not(containsString("\"type\":\"Microsoft.Network/networkProfiles\"")));
assertThat(aciDeploymentTemplate.deploymentTemplateAsString(), not(containsString("\"subnetIds\":")));
}
}

0 comments on commit 02fd999

Please sign in to comment.