Skip to content

Commit 5d3af68

Browse files
Better names
1 parent bbd6632 commit 5d3af68

23 files changed

+208
-204
lines changed

NuGet.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<packageSources>
44
<add key="local-feed" value="tools/LocalFeed" />
5-
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
5+
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
66
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
77
<add key="powershell-core" value="https://powershell.myget.org/F/powershell-core/api/v3/index.json" />
88
</packageSources>

experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachineParameters.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66

77
namespace Microsoft.Azure.Experiments.Compute
88
{
9-
public sealed class VirtualMachineParameters
10-
: ResourceParameters<VirtualMachine>
9+
public sealed class VirtualMachineParameters : ManagedResourceParameters<VirtualMachine>
1110
{
1211
public override string Name { get; }
1312

1413
public NetworkInterfaceParameters Ni { get; }
1514

1615
public override ResourceGroupParameters ResourceGroup { get; }
1716

18-
public override IEnumerable<Parameters> ResourceDependencies => new[] { Ni };
17+
public override IEnumerable<ResourceParameters> ResourceDependencies => new[] { Ni };
1918

2019
public VirtualMachineParameters(
2120
string name,
@@ -27,14 +26,13 @@ public VirtualMachineParameters(
2726
Ni = ni;
2827
}
2928

30-
protected override Task<VirtualMachine> GetAsync(
31-
Context context, IGetParameters _)
32-
=> context
33-
.CreateCompute()
29+
protected override Task<VirtualMachine> GetAsync(IGetInfoContext getContext)
30+
=> getContext
31+
.Context
32+
.CreateComputeManagementClient()
3433
.VirtualMachines
3534
.GetAsync(ResourceGroup.Name, Name);
3635

37-
public override string GetLocation(VirtualMachine value)
38-
=> value.Location;
36+
public override string GetLocation(VirtualMachine value) => value.Location;
3937
}
4038
}

experiments/Azure.Experiments/Azure.Experiments/Context.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ namespace Microsoft.Azure.Experiments
77
{
88
public sealed class Context
99
{
10-
public Context(
11-
ServiceClientCredentials credentials, string subscriptionId)
10+
public Context(ServiceClientCredentials credentials, string subscriptionId)
1211
{
1312
Credentials = credentials;
1413
SubscriptionId = subscriptionId;
@@ -18,19 +17,19 @@ public Context(
1817

1918
public string SubscriptionId { get; }
2019

21-
public NetworkManagementClient CreateNetwork()
20+
public NetworkManagementClient CreateNetworkManagementClient()
2221
=> new NetworkManagementClient(Credentials)
2322
{
2423
SubscriptionId = SubscriptionId
2524
};
2625

27-
public ComputeManagementClient CreateCompute()
26+
public ComputeManagementClient CreateComputeManagementClient()
2827
=> new ComputeManagementClient(Credentials)
2928
{
3029
SubscriptionId = SubscriptionId
3130
};
3231

33-
public ResourceManagementClient CreateResource()
32+
public ResourceManagementClient CreateResourceManagementClient()
3433
=> new ResourceManagementClient(Credentials)
3534
{
3635
SubscriptionId = SubscriptionId

experiments/Azure.Experiments/Azure.Experiments/DependencyLocationExtensions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ namespace Microsoft.Azure.Experiments
44
{
55
public static class DependencyLocationExtensions
66
{
7-
public static DependencyLocation Best(this DependencyLocation a, DependencyLocation b)
7+
public static DependencyLocation Merge(
8+
this DependencyLocation a, DependencyLocation b)
89
{
910
if (a == null)
1011
{
@@ -30,7 +31,8 @@ public static DependencyLocation Best(this DependencyLocation a, DependencyLocat
3031
// b.IsCommon == true
3132
if (a.Location != b.Location)
3233
{
33-
throw new Exception("dependent resources have different locations");
34+
throw new Exception(
35+
"dependent resources have different locations");
3436
}
3537
return a;
3638
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Concurrent;
3+
using System.Threading.Tasks;
4+
5+
namespace Microsoft.Azure.Experiments
6+
{
7+
public sealed class GetInfoContext : IGetInfoContext
8+
{
9+
public Context Context { get; }
10+
11+
public GetInfoContext(Context context)
12+
{
13+
Context = context;
14+
}
15+
16+
public async Task<T> GetOrAdd<T>(
17+
ResourceParameters<T> parameters, Func<Task<T>> get)
18+
where T : class
19+
{
20+
var result = await Map.GetOrAdd(parameters, async _ => await get());
21+
return (T)result;
22+
}
23+
24+
private ConcurrentDictionary<ResourceParameters, Task<object>> Map { get; }
25+
= new ConcurrentDictionary<ResourceParameters, Task<object>>();
26+
}
27+
}

experiments/Azure.Experiments/Azure.Experiments/GetParameters.cs

Lines changed: 0 additions & 19 deletions
This file was deleted.

experiments/Azure.Experiments/Azure.Experiments/ICreateParameters.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{
33
public interface ICreateParameters
44
{
5-
T Get<T>(Parameters<T> parameters)
5+
T Get<T>(ResourceParameters<T> parameters)
66
where T : class;
77
}
88
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
4+
namespace Microsoft.Azure.Experiments
5+
{
6+
public interface IGetInfoContext
7+
{
8+
Context Context { get; }
9+
10+
Task<Info> GetOrAdd<Info>(ResourceParameters<Info> parameters, Func<Task<Info>> getOrThrow)
11+
where Info : class;
12+
}
13+
}

experiments/Azure.Experiments/Azure.Experiments/IGetParameters.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace Microsoft.Azure.Experiments
5+
{
6+
/// <summary>
7+
/// Managed resource parameters.
8+
/// </summary>
9+
/// <typeparam name="T"></typeparam>
10+
public abstract class ManagedResourceParameters<T> : ResourceParameters<T>
11+
where T : class
12+
{
13+
public abstract ResourceGroupParameters ResourceGroup { get; }
14+
15+
public abstract IEnumerable<ResourceParameters> ResourceDependencies { get; }
16+
17+
public sealed override bool HasCommonLocation => true;
18+
19+
/// <summary>
20+
/// Resource dependencies and a resource group.
21+
/// </summary>
22+
public sealed override IEnumerable<ResourceParameters> Dependencies
23+
=> ResourceDependencies.Concat(new[] { ResourceGroup });
24+
}
25+
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfaceParameters.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,36 @@
55

66
namespace Microsoft.Azure.Experiments.Network
77
{
8-
public sealed class NetworkInterfaceParameters
9-
: NetworkParameters<NetworkInterface>
8+
public sealed class NetworkInterfaceParameters : NetworkParameters<NetworkInterface>
109
{
1110
public override string Name { get; }
1211

1312
public override ResourceGroupParameters ResourceGroup { get; }
1413

1514
public SubnetParameters Subnet { get; }
1615

17-
public NetworkSecurityGroupParameters Nsg { get; }
16+
public NetworkSecurityGroupParameters SecurityGroup { get; }
1817

19-
public PublicIpAddressParameters Pia { get; }
18+
public PublicIpAddressParameters PublicIpAddress { get; }
2019

21-
public override IEnumerable<Parameters> ResourceDependencies
22-
=> new Parameters[] { Subnet, Nsg, Pia };
20+
public override IEnumerable<ResourceParameters> ResourceDependencies
21+
=> new ResourceParameters[] { Subnet, SecurityGroup, PublicIpAddress };
2322

2423
public NetworkInterfaceParameters(
2524
string name,
2625
ResourceGroupParameters resourceGroup,
2726
SubnetParameters subnet,
28-
NetworkSecurityGroupParameters nsg,
29-
PublicIpAddressParameters pia)
27+
NetworkSecurityGroupParameters securityGroup,
28+
PublicIpAddressParameters publicIpAddress)
3029
{
3130
Name = name;
3231
ResourceGroup = resourceGroup;
3332
Subnet = subnet;
34-
Nsg = nsg;
35-
Pia = pia;
33+
SecurityGroup = securityGroup;
34+
PublicIpAddress = publicIpAddress;
3635
}
3736

38-
protected override Task<NetworkInterface> GetAsync(
39-
Context context, IGetParameters _)
40-
=> context
41-
.CreateNetwork()
42-
.NetworkInterfaces
43-
.GetAsync(ResourceGroup.Name, Name);
37+
protected override Task<NetworkInterface> GetAsync(NetworkManagementClient client)
38+
=> client.NetworkInterfaces.GetAsync(ResourceGroup.Name, Name);
4439
}
4540
}
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1-
using Microsoft.Azure.Management.Network.Models;
1+
using System.Threading.Tasks;
2+
using Microsoft.Azure.Management.Network.Models;
3+
using Microsoft.Azure.Management.Network;
24

35
namespace Microsoft.Azure.Experiments.Network
46
{
5-
public abstract class NetworkParameters<T> : ResourceParameters<T>
7+
public abstract class NetworkParameters<T> : ManagedResourceParameters<T>
68
where T : Resource
79
{
8-
public sealed override string GetLocation(T value)
9-
=> value.Location;
10+
public sealed override string GetLocation(T value) => value.Location;
11+
12+
protected sealed override Task<T> GetAsync(IGetInfoContext context)
13+
=> GetAsync(context.Context.CreateNetworkManagementClient());
14+
15+
protected abstract Task<T> GetAsync(NetworkManagementClient client);
1016
}
1117
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupParameters.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55

66
namespace Microsoft.Azure.Experiments.Network
77
{
8-
public sealed class NetworkSecurityGroupParameters
9-
: NetworkParameters<NetworkSecurityGroup>
8+
public sealed class NetworkSecurityGroupParameters: NetworkParameters<NetworkSecurityGroup>
109
{
1110
public override string Name { get; }
1211

1312
public override ResourceGroupParameters ResourceGroup { get; }
1413

15-
public override IEnumerable<Parameters> ResourceDependencies => NoDependencies;
14+
public override IEnumerable<ResourceParameters> ResourceDependencies => NoDependencies;
1615

1716
public NetworkSecurityGroupParameters(
1817
string name, ResourceGroupParameters resourceGroup)
@@ -21,11 +20,7 @@ public NetworkSecurityGroupParameters(
2120
ResourceGroup = resourceGroup;
2221
}
2322

24-
protected override Task<NetworkSecurityGroup> GetAsync(
25-
Context context, IGetParameters _)
26-
=> context
27-
.CreateNetwork()
28-
.NetworkSecurityGroups
29-
.GetAsync(ResourceGroup.Name, Name);
23+
protected override Task<NetworkSecurityGroup> GetAsync(NetworkManagementClient client)
24+
=> client.NetworkSecurityGroups.GetAsync(ResourceGroup.Name, Name);
3025
}
3126
}

experiments/Azure.Experiments/Azure.Experiments/Network/PublicIpAddressParameters.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55

66
namespace Microsoft.Azure.Experiments.Network
77
{
8-
public sealed class PublicIpAddressParameters
9-
: NetworkParameters<PublicIPAddress>
8+
public sealed class PublicIpAddressParameters : NetworkParameters<PublicIPAddress>
109
{
1110
public override string Name { get; }
1211

1312
public override ResourceGroupParameters ResourceGroup { get; }
1413

15-
public override IEnumerable<Parameters> ResourceDependencies
14+
public override IEnumerable<ResourceParameters> ResourceDependencies
1615
=> NoDependencies;
1716

1817
public PublicIpAddressParameters(
@@ -22,11 +21,7 @@ public PublicIpAddressParameters(
2221
ResourceGroup = resourceGroup;
2322
}
2423

25-
protected override Task<PublicIPAddress> GetAsync(
26-
Context context, IGetParameters _)
27-
=> context
28-
.CreateNetwork()
29-
.PublicIPAddresses
30-
.GetAsync(ResourceGroup.Name, Name);
24+
protected override Task<PublicIPAddress> GetAsync(NetworkManagementClient client)
25+
=> client.PublicIPAddresses.GetAsync(ResourceGroup.Name, Name);
3126
}
3227
}

experiments/Azure.Experiments/Azure.Experiments/Network/SubnetParameters.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,34 @@
55

66
namespace Microsoft.Azure.Experiments.Network
77
{
8-
public sealed class SubnetParameters : Parameters<Subnet>
8+
public sealed class SubnetParameters : ResourceParameters<Subnet>
99
{
1010
public override string Name { get; }
1111

1212
public VirtualNetworkParameters VirtualNetwork { get; }
1313

14-
public override IEnumerable<Parameters> Dependencies
15-
=> new[] { VirtualNetwork };
14+
public override IEnumerable<ResourceParameters> Dependencies => new[] { VirtualNetwork };
1615

1716
public override bool HasCommonLocation => true;
1817

19-
public SubnetParameters(
20-
string name, VirtualNetworkParameters virtualNetwork)
18+
public SubnetParameters(string name, VirtualNetworkParameters virtualNetwork)
2119
{
2220
Name = name;
2321
VirtualNetwork = virtualNetwork;
2422
}
2523

26-
protected override async Task<Subnet> GetAsync(
27-
Context context, IGetParameters getParameters)
24+
protected override async Task<Subnet> GetAsync(IGetInfoContext getContext)
2825
{
2926
var virtualNetwork =
30-
await VirtualNetwork.GetOrNullAsync(context, getParameters);
27+
await VirtualNetwork.GetOrNullAsync(getContext);
3128
return virtualNetwork?.Subnets.FirstOrDefault(s => s.Name == Name);
3229
}
3330

34-
public override string GetLocation(Subnet _)
35-
=> null;
31+
/// <summary>
32+
/// Subnet doesn't have a location.
33+
/// </summary>
34+
/// <param name="_"></param>
35+
/// <returns></returns>
36+
public override string GetLocation(Subnet _) => null;
3637
}
3738
}

0 commit comments

Comments
 (0)