Skip to content

Commit

Permalink
Better names
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 1, 2017
1 parent bbd6632 commit 5d3af68
Show file tree
Hide file tree
Showing 23 changed files with 208 additions and 204 deletions.
4 changes: 2 additions & 2 deletions NuGet.config
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local-feed" value="tools/LocalFeed" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
<add key="powershell-core" value="https://powershell.myget.org/F/powershell-core/api/v3/index.json" />
</packageSources>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@

namespace Microsoft.Azure.Experiments.Compute
{
public sealed class VirtualMachineParameters
: ResourceParameters<VirtualMachine>
public sealed class VirtualMachineParameters : ManagedResourceParameters<VirtualMachine>
{
public override string Name { get; }

public NetworkInterfaceParameters Ni { get; }

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies => new[] { Ni };
public override IEnumerable<ResourceParameters> ResourceDependencies => new[] { Ni };

public VirtualMachineParameters(
string name,
Expand All @@ -27,14 +26,13 @@ public VirtualMachineParameters(
Ni = ni;
}

protected override Task<VirtualMachine> GetAsync(
Context context, IGetParameters _)
=> context
.CreateCompute()
protected override Task<VirtualMachine> GetAsync(IGetInfoContext getContext)
=> getContext
.Context
.CreateComputeManagementClient()
.VirtualMachines
.GetAsync(ResourceGroup.Name, Name);

public override string GetLocation(VirtualMachine value)
=> value.Location;
public override string GetLocation(VirtualMachine value) => value.Location;
}
}
9 changes: 4 additions & 5 deletions experiments/Azure.Experiments/Azure.Experiments/Context.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ namespace Microsoft.Azure.Experiments
{
public sealed class Context
{
public Context(
ServiceClientCredentials credentials, string subscriptionId)
public Context(ServiceClientCredentials credentials, string subscriptionId)
{
Credentials = credentials;
SubscriptionId = subscriptionId;
Expand All @@ -18,19 +17,19 @@ public Context(

public string SubscriptionId { get; }

public NetworkManagementClient CreateNetwork()
public NetworkManagementClient CreateNetworkManagementClient()
=> new NetworkManagementClient(Credentials)
{
SubscriptionId = SubscriptionId
};

public ComputeManagementClient CreateCompute()
public ComputeManagementClient CreateComputeManagementClient()
=> new ComputeManagementClient(Credentials)
{
SubscriptionId = SubscriptionId
};

public ResourceManagementClient CreateResource()
public ResourceManagementClient CreateResourceManagementClient()
=> new ResourceManagementClient(Credentials)
{
SubscriptionId = SubscriptionId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ namespace Microsoft.Azure.Experiments
{
public static class DependencyLocationExtensions
{
public static DependencyLocation Best(this DependencyLocation a, DependencyLocation b)
public static DependencyLocation Merge(
this DependencyLocation a, DependencyLocation b)
{
if (a == null)
{
Expand All @@ -30,7 +31,8 @@ public static DependencyLocation Best(this DependencyLocation a, DependencyLocat
// b.IsCommon == true
if (a.Location != b.Location)
{
throw new Exception("dependent resources have different locations");
throw new Exception(
"dependent resources have different locations");
}
return a;
}
Expand Down
27 changes: 27 additions & 0 deletions experiments/Azure.Experiments/Azure.Experiments/GetInfoContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System;
using System.Collections.Concurrent;
using System.Threading.Tasks;

namespace Microsoft.Azure.Experiments
{
public sealed class GetInfoContext : IGetInfoContext
{
public Context Context { get; }

public GetInfoContext(Context context)
{
Context = context;
}

public async Task<T> GetOrAdd<T>(
ResourceParameters<T> parameters, Func<Task<T>> get)
where T : class
{
var result = await Map.GetOrAdd(parameters, async _ => await get());
return (T)result;
}

private ConcurrentDictionary<ResourceParameters, Task<object>> Map { get; }
= new ConcurrentDictionary<ResourceParameters, Task<object>>();
}
}
19 changes: 0 additions & 19 deletions experiments/Azure.Experiments/Azure.Experiments/GetParameters.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
public interface ICreateParameters
{
T Get<T>(Parameters<T> parameters)
T Get<T>(ResourceParameters<T> parameters)
where T : class;
}
}
13 changes: 13 additions & 0 deletions experiments/Azure.Experiments/Azure.Experiments/IGetInfoContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System;
using System.Threading.Tasks;

namespace Microsoft.Azure.Experiments
{
public interface IGetInfoContext
{
Context Context { get; }

Task<Info> GetOrAdd<Info>(ResourceParameters<Info> parameters, Func<Task<Info>> getOrThrow)
where Info : class;
}
}
11 changes: 0 additions & 11 deletions experiments/Azure.Experiments/Azure.Experiments/IGetParameters.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using System.Linq;

namespace Microsoft.Azure.Experiments
{
/// <summary>
/// Managed resource parameters.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class ManagedResourceParameters<T> : ResourceParameters<T>
where T : class
{
public abstract ResourceGroupParameters ResourceGroup { get; }

public abstract IEnumerable<ResourceParameters> ResourceDependencies { get; }

public sealed override bool HasCommonLocation => true;

/// <summary>
/// Resource dependencies and a resource group.
/// </summary>
public sealed override IEnumerable<ResourceParameters> Dependencies
=> ResourceDependencies.Concat(new[] { ResourceGroup });
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,36 @@

namespace Microsoft.Azure.Experiments.Network
{
public sealed class NetworkInterfaceParameters
: NetworkParameters<NetworkInterface>
public sealed class NetworkInterfaceParameters : NetworkParameters<NetworkInterface>
{
public override string Name { get; }

public override ResourceGroupParameters ResourceGroup { get; }

public SubnetParameters Subnet { get; }

public NetworkSecurityGroupParameters Nsg { get; }
public NetworkSecurityGroupParameters SecurityGroup { get; }

public PublicIpAddressParameters Pia { get; }
public PublicIpAddressParameters PublicIpAddress { get; }

public override IEnumerable<Parameters> ResourceDependencies
=> new Parameters[] { Subnet, Nsg, Pia };
public override IEnumerable<ResourceParameters> ResourceDependencies
=> new ResourceParameters[] { Subnet, SecurityGroup, PublicIpAddress };

public NetworkInterfaceParameters(
string name,
ResourceGroupParameters resourceGroup,
SubnetParameters subnet,
NetworkSecurityGroupParameters nsg,
PublicIpAddressParameters pia)
NetworkSecurityGroupParameters securityGroup,
PublicIpAddressParameters publicIpAddress)
{
Name = name;
ResourceGroup = resourceGroup;
Subnet = subnet;
Nsg = nsg;
Pia = pia;
SecurityGroup = securityGroup;
PublicIpAddress = publicIpAddress;
}

protected override Task<NetworkInterface> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.NetworkInterfaces
.GetAsync(ResourceGroup.Name, Name);
protected override Task<NetworkInterface> GetAsync(NetworkManagementClient client)
=> client.NetworkInterfaces.GetAsync(ResourceGroup.Name, Name);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
using Microsoft.Azure.Management.Network.Models;
using System.Threading.Tasks;
using Microsoft.Azure.Management.Network.Models;
using Microsoft.Azure.Management.Network;

namespace Microsoft.Azure.Experiments.Network
{
public abstract class NetworkParameters<T> : ResourceParameters<T>
public abstract class NetworkParameters<T> : ManagedResourceParameters<T>
where T : Resource
{
public sealed override string GetLocation(T value)
=> value.Location;
public sealed override string GetLocation(T value) => value.Location;

protected sealed override Task<T> GetAsync(IGetInfoContext context)
=> GetAsync(context.Context.CreateNetworkManagementClient());

protected abstract Task<T> GetAsync(NetworkManagementClient client);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@

namespace Microsoft.Azure.Experiments.Network
{
public sealed class NetworkSecurityGroupParameters
: NetworkParameters<NetworkSecurityGroup>
public sealed class NetworkSecurityGroupParameters: NetworkParameters<NetworkSecurityGroup>
{
public override string Name { get; }

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies => NoDependencies;
public override IEnumerable<ResourceParameters> ResourceDependencies => NoDependencies;

public NetworkSecurityGroupParameters(
string name, ResourceGroupParameters resourceGroup)
Expand All @@ -21,11 +20,7 @@ public NetworkSecurityGroupParameters(
ResourceGroup = resourceGroup;
}

protected override Task<NetworkSecurityGroup> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.NetworkSecurityGroups
.GetAsync(ResourceGroup.Name, Name);
protected override Task<NetworkSecurityGroup> GetAsync(NetworkManagementClient client)
=> client.NetworkSecurityGroups.GetAsync(ResourceGroup.Name, Name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@

namespace Microsoft.Azure.Experiments.Network
{
public sealed class PublicIpAddressParameters
: NetworkParameters<PublicIPAddress>
public sealed class PublicIpAddressParameters : NetworkParameters<PublicIPAddress>
{
public override string Name { get; }

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies
public override IEnumerable<ResourceParameters> ResourceDependencies
=> NoDependencies;

public PublicIpAddressParameters(
Expand All @@ -22,11 +21,7 @@ public PublicIpAddressParameters(
ResourceGroup = resourceGroup;
}

protected override Task<PublicIPAddress> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.PublicIPAddresses
.GetAsync(ResourceGroup.Name, Name);
protected override Task<PublicIPAddress> GetAsync(NetworkManagementClient client)
=> client.PublicIPAddresses.GetAsync(ResourceGroup.Name, Name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,34 @@

namespace Microsoft.Azure.Experiments.Network
{
public sealed class SubnetParameters : Parameters<Subnet>
public sealed class SubnetParameters : ResourceParameters<Subnet>
{
public override string Name { get; }

public VirtualNetworkParameters VirtualNetwork { get; }

public override IEnumerable<Parameters> Dependencies
=> new[] { VirtualNetwork };
public override IEnumerable<ResourceParameters> Dependencies => new[] { VirtualNetwork };

public override bool HasCommonLocation => true;

public SubnetParameters(
string name, VirtualNetworkParameters virtualNetwork)
public SubnetParameters(string name, VirtualNetworkParameters virtualNetwork)
{
Name = name;
VirtualNetwork = virtualNetwork;
}

protected override async Task<Subnet> GetAsync(
Context context, IGetParameters getParameters)
protected override async Task<Subnet> GetAsync(IGetInfoContext getContext)
{
var virtualNetwork =
await VirtualNetwork.GetOrNullAsync(context, getParameters);
await VirtualNetwork.GetOrNullAsync(getContext);
return virtualNetwork?.Subnets.FirstOrDefault(s => s.Name == Name);
}

public override string GetLocation(Subnet _)
=> null;
/// <summary>
/// Subnet doesn't have a location.
/// </summary>
/// <param name="_"></param>
/// <returns></returns>
public override string GetLocation(Subnet _) => null;
}
}
Loading

0 comments on commit 5d3af68

Please sign in to comment.