fix return value when associating nsg subner (#2201)

This commit is contained in:
Cheick Keita
2022-07-28 14:25:03 -07:00
committed by GitHub
parent 36d36cdfaa
commit b2fc9f4285
2 changed files with 13 additions and 9 deletions

View File

@ -68,9 +68,9 @@ public class TimerProxy {
var subnet = await network.GetSubnet(); var subnet = await network.GetSubnet();
var vnet = await network.GetVnet(); var vnet = await network.GetVnet();
if (subnet != null && vnet != null) { if (subnet != null && vnet != null) {
var error = nsgOpertions.AssociateSubnet(region, vnet, subnet); var result = await nsgOpertions.AssociateSubnet(region, vnet, subnet);
if (error != null) { if (!result.OkV) {
_logger.Error($"Failed to associate NSG and subnet due to {error} in region {region}"); _logger.Error($"Failed to associate NSG and subnet due to {result.ErrorV} in region {region}");
} }
} }
} }

View File

@ -5,7 +5,7 @@ using Azure.ResourceManager.Network;
namespace Microsoft.OneFuzz.Service { namespace Microsoft.OneFuzz.Service {
public interface INsgOperations { public interface INsgOperations {
Async.Task<NetworkSecurityGroupResource?> GetNsg(string name); Async.Task<NetworkSecurityGroupResource?> GetNsg(string name);
public Async.Task<Error?> AssociateSubnet(string name, VirtualNetworkResource vnet, SubnetResource subnet); public Async.Task<OneFuzzResult<bool>> AssociateSubnet(string name, VirtualNetworkResource vnet, SubnetResource subnet);
IAsyncEnumerable<NetworkSecurityGroupResource> ListNsgs(); IAsyncEnumerable<NetworkSecurityGroupResource> ListNsgs();
bool OkToDelete(HashSet<string> active_regions, string nsg_region, string nsg_name); bool OkToDelete(HashSet<string> active_regions, string nsg_region, string nsg_name);
Async.Task<bool> StartDeleteNsg(string name); Async.Task<bool> StartDeleteNsg(string name);
@ -25,25 +25,29 @@ namespace Microsoft.OneFuzz.Service {
_logTracer = logTracer; _logTracer = logTracer;
} }
public async Async.Task<Error?> AssociateSubnet(string name, VirtualNetworkResource vnet, SubnetResource subnet) { public async Async.Task<OneFuzzResult<bool>> AssociateSubnet(string name, VirtualNetworkResource vnet, SubnetResource subnet) {
var nsg = await GetNsg(name); var nsg = await GetNsg(name);
if (nsg == null) { if (nsg == null) {
return new Error(ErrorCode.UNABLE_TO_FIND, new[] { $"cannot associate subnet. nsg {name} not found" }); return OneFuzzResult<bool>.Error(new Error(ErrorCode.UNABLE_TO_FIND,
new[] { $"cannot associate subnet. nsg {name} not found" }));
} }
if (nsg.Data.Location != vnet.Data.Location) { if (nsg.Data.Location != vnet.Data.Location) {
return new Error(ErrorCode.UNABLE_TO_UPDATE, new[] { $"subnet and nsg have to be in the same region. nsg {nsg.Data.Name} {nsg.Data.Location}, subnet: {subnet.Data.Name} {subnet.Data}" }); return OneFuzzResult<bool>.Error(new Error(ErrorCode.UNABLE_TO_UPDATE,
new[] {
$"subnet and nsg have to be in the same region. nsg {nsg.Data.Name} {nsg.Data.Location}, subnet: {subnet.Data.Name} {subnet.Data}"
}));
} }
if (subnet.Data.NetworkSecurityGroup != null && subnet.Data.NetworkSecurityGroup.Id == nsg.Id) { if (subnet.Data.NetworkSecurityGroup != null && subnet.Data.NetworkSecurityGroup.Id == nsg.Id) {
_logTracer.Info($"Subnet {subnet.Data.Name} and NSG {name} already associated, not updating"); _logTracer.Info($"Subnet {subnet.Data.Name} and NSG {name} already associated, not updating");
return null; return OneFuzzResult<bool>.Ok(true);
} }
subnet.Data.NetworkSecurityGroup = nsg.Data; subnet.Data.NetworkSecurityGroup = nsg.Data;
var result = await vnet.GetSubnets().CreateOrUpdateAsync(WaitUntil.Started, subnet.Data.Name, subnet.Data); var result = await vnet.GetSubnets().CreateOrUpdateAsync(WaitUntil.Started, subnet.Data.Name, subnet.Data);
return null; return OneFuzzResult<bool>.Ok(true);
} }
public async Async.Task<OneFuzzResultVoid> DissociateNic(Nsg nsg, NetworkInterfaceResource nic) { public async Async.Task<OneFuzzResultVoid> DissociateNic(Nsg nsg, NetworkInterfaceResource nic) {