Skip to content

Commit

Permalink
IState
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 9, 2017
1 parent 5b03081 commit 76129f3
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 7 deletions.
7 changes: 7 additions & 0 deletions experiments/Azure.Experiments/Azure.Experiments/IState.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Microsoft.Azure.Experiments
{
public interface IState
{
T GetInfo<T>(IResourceConfig<T> resourceConfig);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,23 @@ public static ResourceConfig<ResourceName, NetworkInterface> CreateNetworkInterf
=> resourceGroup.CreateResourceConfig(
Policy,
name,
_ => new NetworkInterface(),
state => new NetworkInterface
{
IpConfigurations = new[]
{
new NetworkInterfaceIPConfiguration
{
PublicIPAddress = new PublicIPAddress
{
Id = state.GetInfo(publicIPAddress).Id
}
}
},
NetworkSecurityGroup = new NetworkSecurityGroup
{
Id = state.GetInfo(networkSecurityGroup).Id
}
},
new IResourceConfig[] { virtualNetwork, networkSecurityGroup, publicIPAddress });
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ 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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,36 @@ public interface IResourceConfig
{
}

public interface IResourceConfig<Info> : IResourceConfig
{
}

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

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

public TName Name { get; }

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

public IEnumerable<IResourceConfig> Dependencies { get; }

public ResourceConfig(
ResourcePolicy<TName, Info> policy,
TName name,
Func<string, Info> createInfo,
Func<IState, Info> createInfo,
IEnumerable<IResourceConfig> dependencies)
{
Policy = policy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static ResourceConfig<ResourceName, Info> CreateResourceConfig<Info>(
this ResourceConfig<string, ResourceGroup> resourceGroup,
ResourcePolicy<ResourceName, Info> policy,
string name,
Func<string, Info> createInfo,
Func<IState, Info> createInfo,
IEnumerable<IResourceConfig> dependencies = null)
where Info : class
=> policy.CreateResourceConfig(
Expand Down

0 comments on commit 76129f3

Please sign in to comment.