in Tasks/AzureResourceGroupDeploymentV2/operations/AzureUtil.ts [63:173]
public async getResourceGroupDetails(): Promise<ResourceGroupDetails> {
await this.getDetails();
var resourceGroupDetails = new ResourceGroupDetails();
tl.debug("Mapping fqdns");
var fqdns = {}
for (var publicAddress of this.publicAddressDetails) {
fqdns[publicAddress.id] = publicAddress.properties.dnsSettings
? publicAddress.properties.dnsSettings.fqdn
: publicAddress.properties.ipAddress;
}
tl.debug("FQDN map: " + JSON.stringify(fqdns));
tl.debug("Mapping ip configuration to the nic");
var ipcToNicMap = {}
for (var nic of this.networkInterfaceDetails) {
for (var ipc of nic.properties.ipConfigurations) {
ipcToNicMap[ipc.id] = nic.id;
}
}
tl.debug("IPC to NIC map: " + JSON.stringify(ipcToNicMap));
tl.debug("Mapping rule to Port and ip Address for the Load balancers");
var ruleToPortAndAddressMap = {}
for (var lb of this.loadBalancersDetails) {
if (!lb.properties.frontendIPConfigurations || lb.properties.frontendIPConfigurations.length == 0 || !lb.properties.frontendIPConfigurations[0].properties.publicIPAddress) {
continue;
}
tl.debug("Mapping for load balancer: " + lb.name);
var loadBalancer = new LoadBalancer();
var publicAddressId = lb.properties.frontendIPConfigurations[0].properties.publicIPAddress.id;
loadBalancer.FrontEndPublicAddress = fqdns[publicAddressId];
loadBalancer.Id = lb.id;
tl.debug("Frontend IP address is: " + JSON.stringify(loadBalancer.FrontEndPublicAddress));
tl.debug("Determining the frontend ports in use");
if (lb.properties.inboundNatRules) {
for (var rule of lb.properties.inboundNatRules) {
loadBalancer.FrontEndPortsInUse.push(rule.properties.frontendPort);
tl.debug("Frontend port " + rule.properties.frontendPort + " is in use.");
if (rule.properties.backendPort === 5986 && rule.properties.backendIPConfiguration) {
tl.debug("Rule " + rule.name + " is for enabling winRM");
ruleToPortAndAddressMap[rule.id] = {
FrontEndPort: rule.properties.frontendPort,
PublicAddress: loadBalancer.FrontEndPublicAddress
}
}
}
}
tl.debug("Determining the vms in the BackendAddressPools of the lb");
if (lb.properties.backendAddressPools) {
for (var pool of lb.properties.backendAddressPools) {
if (pool.properties.backendIPConfigurations) {
for (var ipc of pool.properties.backendIPConfigurations) {
loadBalancer.BackendNicIds.push(ipcToNicMap[ipc.id]);
}
}
}
}
tl.debug("Loadbalancer detail extracted : " + JSON.stringify(loadBalancer));
resourceGroupDetails.LoadBalancers.push(loadBalancer);
}
tl.debug("Getting the winRM ports for the VMs.");
for (var vmDetail of this.vmDetails) {
tl.debug("For virtual machine: " + vmDetail.name);
var virtualMachine = new VirtualMachine();
virtualMachine.Name = vmDetail.name;
virtualMachine.Tags = vmDetail.tags;
if (vmDetail.properties.networkProfile && vmDetail.properties.networkProfile.networkInterfaces) {
for (var vmNic of vmDetail.properties.networkProfile.networkInterfaces) {
virtualMachine.NetworkInterfaceIds.push(vmNic.id);
tl.debug("NIC Id: " + vmNic.id);
var networkInterface = this.networkInterfaceDetails.find(nic => nic.id == vmNic.id);
if (networkInterface && networkInterface.properties.ipConfigurations) {
tl.debug("Mapping the winRmHttpsPort for the virtual machine.");
for (var ipc of networkInterface.properties.ipConfigurations) {
if (ipc.properties.publicIPAddress && fqdns[ipc.properties.publicIPAddress.id]) {
virtualMachine.WinRMHttpsPort = 5986;
virtualMachine.WinRMHttpsPublicAddress = fqdns[ipc.properties.publicIPAddress.id];
break;
}
if (ipc.properties.loadBalancerInboundNatRules) {
for (var rule of ipc.properties.loadBalancerInboundNatRules) {
if (ruleToPortAndAddressMap[rule.id]) {
virtualMachine.WinRMHttpsPort = ruleToPortAndAddressMap[rule.id].FrontEndPort;
virtualMachine.WinRMHttpsPublicAddress = ruleToPortAndAddressMap[rule.id].PublicAddress;
break;
}
}
if (virtualMachine.WinRMHttpsPublicAddress) {
break;
}
}
}
}
if (virtualMachine.WinRMHttpsPublicAddress) {
break;
}
}
}
tl.debug("WinRMHttpsPort: " + virtualMachine.WinRMHttpsPort);
tl.debug("WinRMHttpsPublicAddress " + virtualMachine.WinRMHttpsPublicAddress);
tl.debug("NIC of the virtual machine " + vmDetail.name + " is " + JSON.stringify(virtualMachine.NetworkInterfaceIds));
resourceGroupDetails.VirtualMachines.push(virtualMachine);
}
return resourceGroupDetails;
}