Skip to content

Commit

Permalink
IGetParameters, ICreateParameters
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Oct 27, 2017
1 parent 7abf7d4 commit bc0fb77
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

namespace Microsoft.Azure.Experiments.Compute
{
public sealed class VirtualMachineParameters : ResourceParameters<VirtualMachine>
public sealed class VirtualMachineParameters
: ResourceParameters<VirtualMachine>
{
public NetworkInterfaceParameters Ni { get; }

Expand All @@ -18,7 +19,8 @@ public VirtualMachineParameters(
Ni = ni;
}

protected override Task<VirtualMachine> GetAsync(Context context, GetMap map)
protected override Task<VirtualMachine> GetAsync(
Context context, IGetParameters _)
=> context
.CreateCompute()
.VirtualMachines
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Microsoft.Azure.Experiments
{
public sealed class GetMap
public sealed class GetParameters : IGetParameters
{
public async Task<T> GetOrAdd<T>(Parameters<T> parameters, Func<Task<T>> get)
where T : class
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Microsoft.Azure.Experiments
{
public interface ICreateParameters
{
T Get<T>(Parameters<T> parameters)
where T : class;
}
}
11 changes: 11 additions & 0 deletions experiments/Azure.Experiments/Azure.Experiments/IGetParameters.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;
using System.Threading.Tasks;

namespace Microsoft.Azure.Experiments
{
public interface IGetParameters
{
Task<T> GetOrAdd<T>(Parameters<T> parameters, Func<Task<T>> get)
where T : class;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public NetworkInterfaceParameters(
Pia = pia;
}

protected override Task<NetworkInterface> GetAsync(Context context, GetMap map)
protected override Task<NetworkInterface> GetAsync(Context context, IGetParameters _)
=> context
.CreateNetwork()
.NetworkInterfaces
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public NetworkSecurityGroupParameters(
{
}

protected override Task<NetworkSecurityGroup> GetAsync(Context context, GetMap map)
protected override Task<NetworkSecurityGroup> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.NetworkSecurityGroups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace Microsoft.Azure.Experiments.Network
{
public sealed class PublicIpAddressParameters
public sealed class PublicIpAddressParameters
: ResourceParameters<PublicIPAddress>
{
public PublicIpAddressParameters(
Expand All @@ -14,7 +14,8 @@ public PublicIpAddressParameters(
{
}

protected override Task<PublicIPAddress> GetAsync(Context context, GetMap map)
protected override Task<PublicIPAddress> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.PublicIPAddresses
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ public SubnetParameters(
VirtualNetwork = virtualNetwork;
}

protected override async Task<Subnet> GetAsync(Context context, GetMap map)
protected override async Task<Subnet> GetAsync(
Context context, IGetParameters getParameters)
{
var virtualNetwork = await VirtualNetwork.GetOrNullAsync(context, map);
var virtualNetwork =
await VirtualNetwork.GetOrNullAsync(context, getParameters);
return virtualNetwork?.Subnets.FirstOrDefault(s => s.Name == Name);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public VirtualNetworkParameters(
{
}

protected override Task<VirtualNetwork> GetAsync(Context context, GetMap map)
protected override Task<VirtualNetwork> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.VirtualNetworks
Expand Down
14 changes: 9 additions & 5 deletions experiments/Azure.Experiments/Azure.Experiments/Parameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ protected Parameters(string name, IEnumerable<Parameters> parameters)
{
}

public async Task<T> GetOrNullAsync(Context context, GetMap map)
=> await map.GetOrAdd(
this,
public Task<T> GetOrNullAsync(Context context, IGetParameters getParameters)
=> getParameters.GetOrAdd(
this,
async () =>
{
try
{
return await GetAsync(context, map);
return await GetAsync(context, getParameters);
}
catch (CloudException e)
when (e.Response.StatusCode == HttpStatusCode.NotFound)
Expand All @@ -46,6 +46,10 @@ public async Task<T> GetOrNullAsync(Context context, GetMap map)
}
});

protected abstract Task<T> GetAsync(Context context, GetMap map);
protected abstract Task<T> GetAsync(
Context context, IGetParameters getParameters);

//protected abstract Task<T> CreateAsync(
// Context context, ICreateParameters createParameters);
}
}

0 comments on commit bc0fb77

Please sign in to comment.