Skip to content

Commit

Permalink
Info => Func<string, Info>
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 9, 2017
1 parent 8b2b24b commit 5b03081
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public static ResourceConfig<ResourceName, VirtualMachine> CreateVirtualMachineC
=> resourceGroup.CreateResourceConfig(
Policy,
name,
new VirtualMachine(),
_ => new VirtualMachine(),
new[] { networkInterface });
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static ResourceConfig<ResourceName, NetworkInterface> CreateNetworkInterf
=> resourceGroup.CreateResourceConfig(
Policy,
name,
new NetworkInterface(),
_ => new NetworkInterface(),
new IResourceConfig[] { virtualNetwork, networkSecurityGroup, publicIPAddress });
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public static class NetworkSecurityGroupPolicy
public static ResourceConfig<ResourceName, NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new NetworkSecurityGroup());
=> resourceGroup.CreateResourceConfig(Policy, name, _ => new NetworkSecurityGroup());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public static class PublicIPAddressPolicy
public static ResourceConfig<ResourceName, PublicIPAddress> CreatePublicIPAddressConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new PublicIPAddress());
=> resourceGroup.CreateResourceConfig(Policy, name, _ => new PublicIPAddress());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public static class VirtualNetworkPolicy
public static ResourceConfig<ResourceName, VirtualNetwork> CreateVirtualNetworkConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new VirtualNetwork());
=> resourceGroup.CreateResourceConfig(Policy, name, _ => new VirtualNetwork());
}
}
23 changes: 10 additions & 13 deletions experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs
Original file line number Diff line number Diff line change
@@ -1,46 +1,43 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;

namespace Microsoft.Azure.Experiments
{
public interface IResourceConfig
{
}

public interface IResourceConfig<Info>
{
}

public static class ResourceConfig
{
public static ResourceConfig<Name, Info> CreateResourceConfig<Name, Info>(
this ResourcePolicy<Name, Info> policy,
Name name,
Info info,
Func<string, Info> info,
IEnumerable<IResourceConfig> dependencies = null)
where Info : class
=> new ResourceConfig<Name, Info>(policy, name, info, dependencies.EmptyIfNull());
}

public sealed class ResourceConfig<TName, TInfo> : IResourceConfig
where TInfo : class
public sealed class ResourceConfig<TName, Info> : IResourceConfig
where Info : class
{
public ResourcePolicy<TName, TInfo> Policy { get; }
public ResourcePolicy<TName, Info> Policy { get; }

public TName Name { get; }

public TInfo Info { get; }
public Func<string, Info> CreateInfo { get; }

public IEnumerable<IResourceConfig> Dependencies { get; }

public ResourceConfig(
ResourcePolicy<TName, TInfo> policy,
ResourcePolicy<TName, Info> policy,
TName name,
TInfo info,
Func<string, Info> createInfo,
IEnumerable<IResourceConfig> dependencies)
{
Policy = policy;
Name = name;
Info = info;
CreateInfo = createInfo;
Dependencies = dependencies;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.Azure.Management.ResourceManager;
using Microsoft.Azure.Management.ResourceManager.Models;
using System;
using System.Collections.Generic;
using System.Linq;

Expand All @@ -16,18 +17,18 @@ public static class ResourceGroupPolicy
.CreateResourcePolicy(i => i.Location, (i, location) => i.Location = location);

public static ResourceConfig<string, ResourceGroup> CreateResourceGroupConfig(string name)
=> Policy.CreateResourceConfig(name, new ResourceGroup());
=> Policy.CreateResourceConfig(name, _ => new ResourceGroup());

public static ResourceConfig<ResourceName, Info> CreateResourceConfig<Info>(
this ResourceConfig<string, ResourceGroup> resourceGroup,
ResourcePolicy<ResourceName, Info> policy,
string name,
Info info,
Func<string, Info> createInfo,
IEnumerable<IResourceConfig> dependencies = null)
where Info : class
=> policy.CreateResourceConfig(
new ResourceName(resourceGroup.Name, name),
info,
createInfo,
dependencies.EmptyIfNull().Concat(new[] { resourceGroup }));
}
}

0 comments on commit 5b03081

Please sign in to comment.