Skip to content

Commit

Permalink
Separeted policies.
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 9, 2017
1 parent 0b84a5e commit 157f96b
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,5 @@ public static ResourcePolicy<ResourceName, Info> Create<Operations, Info>(
.Create(getAsync, createOrUpdateAsync)
.Transform(getOperations)
.CreateResourcePolicy(i => i.Location, (i, location) => i.Location = location);

public static ResourcePolicy<ResourceName, VirtualMachine> VirtualMachine
{ get; }
= 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<ResourceName, VirtualMachine> CreateVirtualMachineConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name,
ResourceConfig<ResourceName, NetworkInterface> networkInterface)
=> resourceGroup.CreateResourceConfig(
VirtualMachine,
name,
new VirtualMachine(),
new [] { networkInterface });
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
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;

namespace Microsoft.Azure.Experiments.Compute
{
public static class VirtualMachinePolicy
{
public static ResourcePolicy<ResourceName, VirtualMachine> 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<ResourceName, VirtualMachine> CreateVirtualMachineConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name,
ResourceConfig<ResourceName, NetworkInterface> networkInterface)
=> resourceGroup.CreateResourceConfig(
Policy,
name,
new VirtualMachine(),
new[] { networkInterface });
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,42 +19,6 @@ public static ResourcePolicy<ResourceName, Info> Create<Operations, Info>(
.Transform(getOperations)
.CreateResourcePolicy(i => i.Location, (i, location) => i.Location = location);

public static ResourcePolicy<ResourceName, NetworkSecurityGroup> NetworkSecurityGroup { get; }
= 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<ResourceName, NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(NetworkSecurityGroup, name, new NetworkSecurityGroup());

public static ResourcePolicy<ResourceName, PublicIPAddress> PublicIPAddress { get; }
= 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<ResourceName, PublicIPAddress> CreatePublicIPAddressConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(PublicIPAddress, name, new PublicIPAddress());

public static ResourcePolicy<ResourceName, VirtualNetwork> VirtualNetwork { get; }
= 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<ResourceName, VirtualNetwork> CreateVirtualNetworkConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(VirtualNetwork, name, new VirtualNetwork());

public static ResourcePolicy<ResourceName, NetworkInterface> NetworkInterface { get; }
= Create(
client => client.NetworkInterfaces,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Microsoft.Azure.Experiments.ResourceManager;
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<ResourceName, NetworkSecurityGroup> 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<ResourceName, NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new NetworkSecurityGroup());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Microsoft.Azure.Experiments.ResourceManager;
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<ResourceName, PublicIPAddress> 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<ResourceName, PublicIPAddress> CreatePublicIPAddressConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new PublicIPAddress());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Microsoft.Azure.Experiments.ResourceManager;
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<ResourceName, VirtualNetwork> 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<ResourceName, VirtualNetwork> CreateVirtualNetworkConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name)
=> resourceGroup.CreateResourceConfig(Policy, name, new VirtualNetwork());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ public interface IResourceConfig
{
}

public interface IResourceConfig<Info>
{
}

public static class ResourceConfig
{
public static ResourceConfig<Name, Info> CreateResourceConfig<Name, Info>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

namespace Microsoft.Azure.Experiments.ResourceManager
{
public static class ResourceManagerPolicy
public static class ResourceGroupPolicy
{
public static ResourcePolicy<string, ResourceGroup> ResourceGroup { get; }
public static ResourcePolicy<string, ResourceGroup> Policy { get; }
= OperationsPolicy
.Create<IResourceGroupsOperations, string, ResourceGroup>(
(operations, name) => operations.GetAsync(name),
Expand All @@ -16,7 +16,7 @@ public static class ResourceManagerPolicy
.CreateResourcePolicy(i => i.Location, (i, location) => i.Location = location);

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

public static ResourceConfig<ResourceName, Info> CreateResourceConfig<Info>(
this ResourceConfig<string, ResourceGroup> resourceGroup,
Expand Down

0 comments on commit 157f96b

Please sign in to comment.