diff --git a/experiments/Azure.Experiments/Azure.Experiments/Compute/ComputePolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Compute/ComputePolicy.cs index c10d805cf02f..1ecf3aeaefc4 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Compute/ComputePolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Compute/ComputePolicy.cs @@ -1,8 +1,4 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Compute; -using Microsoft.Azure.Management.Compute.Models; -using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; +using Microsoft.Azure.Management.Compute; using System; using System.Threading.Tasks; @@ -10,7 +6,7 @@ namespace Microsoft.Azure.Experiments.Compute { public static class ComputePolicy { - public static ResourcePolicy Create( + public static ResourcePolicy Create( Func getOperations, Func> getAsync, Func> createOrUpdateAsync) diff --git a/experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachinePolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachinePolicy.cs index be6dae21ee8e..abcb17c2814c 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachinePolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachinePolicy.cs @@ -1,26 +1,22 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Compute; +using Microsoft.Azure.Management.Compute; using Microsoft.Azure.Management.Compute.Models; using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; namespace Microsoft.Azure.Experiments.Compute { public static class VirtualMachinePolicy { - public static ResourcePolicy Policy { get; } + public static ResourcePolicy Policy { get; } = ComputePolicy.Create( client => client.VirtualMachines, (operations, name) => operations.GetAsync(name.ResourceGroupName, name.Name), (operations, name, info) => operations.CreateOrUpdateAsync(name.ResourceGroupName, name.Name, info)); - public static ResourceConfig CreateVirtualMachineConfig( - this ResourceConfig resourceGroup, - string name, - ResourceConfig networkInterface) - => resourceGroup.CreateResourceConfig( - Policy, + public static ResourceConfig CreateVirtualMachineConfig( + this ResourceName name, + ResourceConfig networkInterface) + => Policy.CreateResourceConfig( name, _ => new VirtualMachine(), new[] { networkInterface }); diff --git a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfacePolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfacePolicy.cs index 89e2a322bc49..e79b58d6cb3b 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfacePolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfacePolicy.cs @@ -1,27 +1,23 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network; using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; namespace Microsoft.Azure.Experiments.Network { public static class NetworkInterfacePolicy { - public static ResourcePolicy Policy { get; } + public static ResourcePolicy Policy { get; } = NetworkPolicy.Create( client => client.NetworkInterfaces, (operations, name) => operations.GetAsync(name.ResourceGroupName, name.Name), (operations, name, info) => operations.CreateOrUpdateAsync(name.ResourceGroupName, name.Name, info)); - public static ResourceConfig CreateNetworkInterfaceConfig( - this ResourceConfig resourceGroup, - string name, - ResourceConfig virtualNetwork, - ResourceConfig networkSecurityGroup, - ResourceConfig publicIPAddress) - => resourceGroup.CreateResourceConfig( - Policy, + public static ResourceConfig CreateNetworkInterfaceConfig( + this ResourceName name, + ResourceConfig virtualNetwork, + ResourceConfig networkSecurityGroup, + ResourceConfig publicIPAddress) + => Policy.CreateResourceConfig( name, state => new NetworkInterface { diff --git a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkPolicy.cs index 638b409ffa2a..4b515773eea0 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkPolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkPolicy.cs @@ -6,7 +6,7 @@ namespace Microsoft.Azure.Experiments.Network { public static class NetworkPolicy { - public static ResourcePolicy Create( + public static ResourcePolicy Create( Func getOperations, Func> getAsync, Func> createOrUpdateAsync) diff --git a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupPolicy.cs index 7474f1bcb0d3..fdea4701433e 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupPolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupPolicy.cs @@ -1,22 +1,19 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network; using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; namespace Microsoft.Azure.Experiments.Network { public static class NetworkSecurityGroupPolicy { - public static ResourcePolicy Policy { get; } + public static ResourcePolicy Policy { get; } = NetworkPolicy.Create( client => client.NetworkSecurityGroups, (operations, name) => operations.GetAsync(name.ResourceGroupName, name.Name), (operations, name, info) => operations.CreateOrUpdateAsync(name.ResourceGroupName, name.Name, info)); - public static ResourceConfig CreateNetworkSecurityGroupConfig( - this ResourceConfig resourceGroup, - string name) - => resourceGroup.CreateResourceConfig(Policy, name, _ => new NetworkSecurityGroup()); + public static ResourceConfig CreateNetworkSecurityGroupConfig( + this ResourceName name) + => Policy.CreateResourceConfig(name, _ => new NetworkSecurityGroup()); } } diff --git a/experiments/Azure.Experiments/Azure.Experiments/Network/PublicIPAddressPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Network/PublicIPAddressPolicy.cs index bcf3fbb91149..9bb9605e7b45 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Network/PublicIPAddressPolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Network/PublicIPAddressPolicy.cs @@ -1,22 +1,19 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network; using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; namespace Microsoft.Azure.Experiments.Network { public static class PublicIPAddressPolicy { - public static ResourcePolicy Policy { get; } + public static ResourcePolicy Policy { get; } = NetworkPolicy.Create( client => client.PublicIPAddresses, (operations, name) => operations.GetAsync(name.ResourceGroupName, name.Name), (operations, name, info) => operations.CreateOrUpdateAsync(name.ResourceGroupName, name.Name, info)); - public static ResourceConfig CreatePublicIPAddressConfig( - this ResourceConfig resourceGroup, - string name) - => resourceGroup.CreateResourceConfig(Policy, name, _ => new PublicIPAddress()); + public static ResourceConfig CreatePublicIPAddressConfig( + this ResourceName name) + => Policy.CreateResourceConfig(name, _ => new PublicIPAddress()); } } diff --git a/experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkPolicy.cs index 0727f766dde0..66ad6b574485 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkPolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkPolicy.cs @@ -1,23 +1,19 @@ -using Microsoft.Azure.Experiments.ResourceManager; -using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network; using Microsoft.Azure.Management.Network.Models; -using Microsoft.Azure.Management.ResourceManager.Models; namespace Microsoft.Azure.Experiments.Network { public static class VirtualNetworkPolicy { - public static ResourcePolicy Policy { get; } + public static ResourcePolicy Policy { get; } = NetworkPolicy.Create( client => client.VirtualNetworks, (operations, name) => operations.GetAsync(name.ResourceGroupName, name.Name), (operations, name, info) => operations.CreateOrUpdateAsync(name.ResourceGroupName, name.Name, info)); - public static ResourceConfig CreateVirtualNetworkConfig( - this ResourceConfig resourceGroup, - string name) - => resourceGroup.CreateResourceConfig( - Policy, name, _ => new VirtualNetwork()); + public static ResourceConfig CreateVirtualNetworkConfig( + this ResourceName name) + => Policy.CreateResourceConfig(name, _ => new VirtualNetwork()); } } diff --git a/experiments/Azure.Experiments/Azure.Experiments/OperationsPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/OperationsPolicy.cs index dc7a8db13cee..758c51029a9b 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/OperationsPolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/OperationsPolicy.cs @@ -5,28 +5,28 @@ namespace Microsoft.Azure.Experiments { public static class OperationsPolicy { - public static OperationsPolicy Create( - Func> getAsync, - Func> createOrUpdateAsync) - => new OperationsPolicy(getAsync, createOrUpdateAsync); + public static OperationsPolicy Create( + Func> getAsync, + Func> createOrUpdateAsync) + => new OperationsPolicy(getAsync, createOrUpdateAsync); } - public sealed class OperationsPolicy + public sealed class OperationsPolicy { - public Func> GetAsync { get; } + public Func> GetAsync { get; } - public Func> CreateOrUpdateAsync { get; } + public Func> CreateOrUpdateAsync { get; } public OperationsPolicy( - Func> getAsync, - Func> createOrUpdateAsync) + Func> getAsync, + Func> createOrUpdateAsync) { GetAsync = getAsync; CreateOrUpdateAsync = createOrUpdateAsync; } - public OperationsPolicy Transform(Func get) - => OperationsPolicy.Create( + public OperationsPolicy Transform(Func get) + => OperationsPolicy.Create( (client, name) => GetAsync(get(client), name), (client, name, info) => CreateOrUpdateAsync(get(client), name, info)); } diff --git a/experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs b/experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs index 91496fc494e4..4ca42dfbc52b 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs @@ -13,29 +13,29 @@ public interface IResourceConfig : IResourceConfig public static class ResourceConfig { - public static ResourceConfig CreateResourceConfig( - this ResourcePolicy policy, - Name name, + public static ResourceConfig CreateResourceConfig( + this ResourcePolicy policy, + ResourceName name, Func info, IEnumerable dependencies = null) where Info : class - => new ResourceConfig(policy, name, info, dependencies.EmptyIfNull()); + => new ResourceConfig(policy, name, info, dependencies.EmptyIfNull()); } - public sealed class ResourceConfig : IResourceConfig + public sealed class ResourceConfig : IResourceConfig where Info : class { - public ResourcePolicy Policy { get; } + public ResourcePolicy Policy { get; } - public TName Name { get; } + public ResourceName Name { get; } public Func CreateInfo { get; } public IEnumerable Dependencies { get; } public ResourceConfig( - ResourcePolicy policy, - TName name, + ResourcePolicy policy, + ResourceName name, Func createInfo, IEnumerable dependencies) { diff --git a/experiments/Azure.Experiments/Azure.Experiments/ResourceManager/ResourceGroupPolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/ResourceManager/ResourceGroupPolicy.cs deleted file mode 100644 index 3525f5c638b2..000000000000 --- a/experiments/Azure.Experiments/Azure.Experiments/ResourceManager/ResourceGroupPolicy.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Microsoft.Azure.Management.ResourceManager; -using Microsoft.Azure.Management.ResourceManager.Models; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.Azure.Experiments.ResourceManager -{ - public static class ResourceGroupPolicy - { - public static ResourcePolicy Policy { get; } - = OperationsPolicy - .Create( - (operations, name) => operations.GetAsync(name), - (operations, name, info) => operations.CreateOrUpdateAsync(name, info)) - .Transform(r => r.ResourceGroups) - .CreateResourcePolicy(i => i.Location, (i, location) => i.Location = location); - - public static ResourceConfig CreateResourceGroupConfig(string name) - => Policy.CreateResourceConfig(name, _ => new ResourceGroup()); - - public static ResourceConfig CreateResourceConfig( - this ResourceConfig resourceGroup, - ResourcePolicy policy, - string name, - Func createInfo, - IEnumerable dependencies = null) - where Info : class - => policy.CreateResourceConfig( - new ResourceName(resourceGroup.Name, name), - createInfo, - dependencies.EmptyIfNull().Concat(new[] { resourceGroup })); - } -} diff --git a/experiments/Azure.Experiments/Azure.Experiments/ResourcePolicy.cs b/experiments/Azure.Experiments/Azure.Experiments/ResourcePolicy.cs index 1039854e14d7..a16d47e0994e 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/ResourcePolicy.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/ResourcePolicy.cs @@ -4,29 +4,29 @@ namespace Microsoft.Azure.Experiments { public static class ResourcePolicy { - public static ResourcePolicy CreateResourcePolicy( - this OperationsPolicy operationsPolicy, + public static ResourcePolicy CreateResourcePolicy( + this OperationsPolicy operationsPolicy, Func getLocation, Action setLocation) where Client : class, IDisposable where Info : class - => new ResourcePolicy( + => new ResourcePolicy( operationsPolicy.Transform(c => c.GetClient()), getLocation, setLocation); } - public sealed class ResourcePolicy + public sealed class ResourcePolicy where Info : class { - public OperationsPolicy OperationsPolicy { get; } + public OperationsPolicy OperationsPolicy { get; } public Func GetLocation { get; } public Action SetLocation { get; } public ResourcePolicy( - OperationsPolicy operationsPolicy, + OperationsPolicy operationsPolicy, Func getLocation, Action setLocation) {