Skip to content

Commit

Permalink
Better way
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 1, 2017
1 parent 7832679 commit bbd6632
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,28 @@
using Microsoft.Azure.Experiments.Network;
using System.Threading.Tasks;
using Microsoft.Azure.Management.Compute;
using System.Collections.Generic;

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

public NetworkInterfaceParameters Ni { get; }

public override ResourceGroupParameters ResourceGroup { get; }

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

public VirtualMachineParameters(
string name,
ResourceGroupParameters resourceGroup,
NetworkInterfaceParameters ni)
: base(name, resourceGroup, new[] { ni })
{
Name = name;
ResourceGroup = resourceGroup;
Ni = ni;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,35 @@ namespace Microsoft.Azure.Experiments.Network
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 PublicIpAddressParameters Pia { get; }

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

public NetworkInterfaceParameters(
string name,
ResourceGroupParameters resourceGroup,
SubnetParameters subnet,
NetworkSecurityGroupParameters nsg,
PublicIpAddressParameters pia)
: base(name, resourceGroup, new Parameters[] { subnet, nsg, pia })
PublicIpAddressParameters pia)
{
Name = name;
ResourceGroup = resourceGroup;
Subnet = subnet;
Nsg = nsg;
Pia = pia;
}

protected override Task<NetworkInterface> GetAsync(Context context, IGetParameters _)
protected override Task<NetworkInterface> GetAsync(
Context context, IGetParameters _)
=> context
.CreateNetwork()
.NetworkInterfaces
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
using Microsoft.Azure.Management.Network.Models;
using System.Collections.Generic;

namespace Microsoft.Azure.Experiments.Network
{
public abstract class NetworkParameters<T> : ResourceParameters<T>
where T : Resource
{
public NetworkParameters(
string name,
ResourceGroupParameters resourceGroup,
IEnumerable<Parameters> dependencies)
: base(name, resourceGroup, dependencies)
{
}

public sealed override string GetLocation(T value)
=> value.Location;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
using System.Threading.Tasks;
using Microsoft.Azure.Management.Network.Models;
using Microsoft.Azure.Management.Network;
using System.Collections.Generic;

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

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies => NoDependencies;

public NetworkSecurityGroupParameters(
string name, ResourceGroupParameters resourceGroup)
: base(name, resourceGroup, NoDependencies)
string name, ResourceGroupParameters resourceGroup)
{
Name = name;
ResourceGroup = resourceGroup;
}

protected override Task<NetworkSecurityGroup> GetAsync(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,18 @@ namespace Microsoft.Azure.Experiments.Network
public sealed class PublicIpAddressParameters
: NetworkParameters<PublicIPAddress>
{
public override string Name { get; }

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies
=> NoDependencies;

public PublicIpAddressParameters(
string name, ResourceGroupParameters resourceGroup)
: base(name, resourceGroup, NoDependencies)
{
Name = name;
ResourceGroup = resourceGroup;
}

protected override Task<PublicIPAddress> GetAsync(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
using System.Threading.Tasks;
using Microsoft.Azure.Management.Network.Models;
using System.Linq;
using System.Collections.Generic;

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

public VirtualNetworkParameters VirtualNetwork { get; }

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

public override bool HasCommonLocation => true;

public SubnetParameters(
string name, VirtualNetworkParameters virtualNetwork)
: base(name, new[] { virtualNetwork })
{
Name = name;
VirtualNetwork = virtualNetwork;
}

Expand All @@ -25,7 +31,7 @@ protected override async Task<Subnet> GetAsync(
return virtualNetwork?.Subnets.FirstOrDefault(s => s.Name == Name);
}

public override string GetLocation(Subnet value)
public override string GetLocation(Subnet _)
=> null;
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
using System.Threading.Tasks;
using Microsoft.Azure.Management.Network.Models;
using Microsoft.Azure.Management.Network;
using System.Collections.Generic;

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

public override ResourceGroupParameters ResourceGroup { get; }

public override IEnumerable<Parameters> ResourceDependencies
=> NoDependencies;

public VirtualNetworkParameters(
string name, ResourceGroupParameters resourceGroup)
: base(name, resourceGroup, NoDependencies)
{
Name = name;
ResourceGroup = resourceGroup;
}

protected override Task<VirtualNetwork> GetAsync(
Expand Down
15 changes: 2 additions & 13 deletions experiments/Azure.Experiments/Azure.Experiments/Parameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,19 @@ public abstract class Parameters
public static IEnumerable<Parameters> NoDependencies
=> Enumerable.Empty<Parameters>();

public string Name { get; }
public abstract string Name { get; }

public IEnumerable<Parameters> Dependencies { get; }
public abstract IEnumerable<Parameters> Dependencies { get; }

public abstract bool HasCommonLocation { get; }

public abstract Task<DependencyLocation> GetDependencyLocation(
Context context, IGetParameters getParameters);

protected Parameters(string name, IEnumerable<Parameters> dependencies)
{
Name = name;
Dependencies = dependencies;
}
}

public abstract class Parameters<T> : Parameters
where T : class
{
protected Parameters(string name, IEnumerable<Parameters> parameters)
: base(name, parameters)
{
}

public Task<T> GetOrNullAsync(
Context context, IGetParameters getParameters)
=> getParameters.GetOrAdd(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
using Microsoft.Azure.Management.ResourceManager;
using Microsoft.Azure.Management.ResourceManager.Models;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace Microsoft.Azure.Experiments
{
public sealed class ResourceGroupParameters : Parameters<ResourceGroup>
{
public ResourceGroupParameters(string name) : base(name, NoDependencies)
public ResourceGroupParameters(string name)
{
Name = name;
}

public override bool HasCommonLocation => false;

public override string Name { get; }

public override IEnumerable<Parameters> Dependencies => NoDependencies;

public override string GetLocation(ResourceGroup value)
=> value.Location;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,13 @@ namespace Microsoft.Azure.Experiments
public abstract class ResourceParameters<T> : Parameters<T>
where T : class
{
public ResourceGroupParameters ResourceGroup { get; }
public abstract ResourceGroupParameters ResourceGroup { get; }

public abstract IEnumerable<Parameters> ResourceDependencies { get; }

public sealed override bool HasCommonLocation => true;

public ResourceParameters(
string name,
ResourceGroupParameters resourceGroup,
IEnumerable<Parameters> dependencies)
: base(name, dependencies.Concat(new[] { resourceGroup }))
{
ResourceGroup = resourceGroup;
}
public sealed override IEnumerable<Parameters> Dependencies
=> ResourceDependencies.Concat(new[] { ResourceGroup });
}
}

0 comments on commit bbd6632

Please sign in to comment.