Skip to content

Commit

Permalink
No Resource Group.
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-shandar committed Nov 9, 2017
1 parent 76129f3 commit ccb9d0e
Show file tree
Hide file tree
Showing 11 changed files with 58 additions and 114 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
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;

namespace Microsoft.Azure.Experiments.Compute
{
public static class ComputePolicy
{
public static ResourcePolicy<ResourceName, Info> Create<Operations, Info>(
public static ResourcePolicy<Info> Create<Operations, Info>(
Func<IComputeManagementClient, Operations> getOperations,
Func<Operations, ResourceName, Task<Info>> getAsync,
Func<Operations, ResourceName, Info, Task<Info>> createOrUpdateAsync)
Expand Down
Original file line number Diff line number Diff line change
@@ -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<ResourceName, VirtualMachine> Policy { get; }
public static ResourcePolicy<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,
public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
this ResourceName name,
ResourceConfig<NetworkInterface> networkInterface)
=> Policy.CreateResourceConfig(
name,
_ => new VirtualMachine(),
new[] { networkInterface });
Expand Down
Original file line number Diff line number Diff line change
@@ -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<ResourceName, NetworkInterface> Policy { get; }
public static ResourcePolicy<NetworkInterface> 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<ResourceName, NetworkInterface> CreateNetworkInterfaceConfig(
this ResourceConfig<string, ResourceGroup> resourceGroup,
string name,
ResourceConfig<ResourceName, VirtualNetwork> virtualNetwork,
ResourceConfig<ResourceName, NetworkSecurityGroup> networkSecurityGroup,
ResourceConfig<ResourceName, PublicIPAddress> publicIPAddress)
=> resourceGroup.CreateResourceConfig(
Policy,
public static ResourceConfig<NetworkInterface> CreateNetworkInterfaceConfig(
this ResourceName name,
ResourceConfig<VirtualNetwork> virtualNetwork,
ResourceConfig<NetworkSecurityGroup> networkSecurityGroup,
ResourceConfig<PublicIPAddress> publicIPAddress)
=> Policy.CreateResourceConfig(
name,
state => new NetworkInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Microsoft.Azure.Experiments.Network
{
public static class NetworkPolicy
{
public static ResourcePolicy<ResourceName, Info> Create<Operations, Info>(
public static ResourcePolicy<Info> Create<Operations, Info>(
Func<INetworkManagementClient, Operations> getOperations,
Func<Operations, ResourceName, Task<Info>> getAsync,
Func<Operations, ResourceName, Info, Task<Info>> createOrUpdateAsync)
Expand Down
Original file line number Diff line number Diff line change
@@ -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<ResourceName, NetworkSecurityGroup> Policy { get; }
public static ResourcePolicy<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());
public static ResourceConfig<NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
this ResourceName name)
=> Policy.CreateResourceConfig(name, _ => new NetworkSecurityGroup());
}
}
Original file line number Diff line number Diff line change
@@ -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<ResourceName, PublicIPAddress> Policy { get; }
public static ResourcePolicy<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());
public static ResourceConfig<PublicIPAddress> CreatePublicIPAddressConfig(
this ResourceName name)
=> Policy.CreateResourceConfig(name, _ => new PublicIPAddress());
}
}
Original file line number Diff line number Diff line change
@@ -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<ResourceName, VirtualNetwork> Policy { get; }
public static ResourcePolicy<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());
public static ResourceConfig<VirtualNetwork> CreateVirtualNetworkConfig(
this ResourceName name)
=> Policy.CreateResourceConfig(name, _ => new VirtualNetwork());
}
}
22 changes: 11 additions & 11 deletions experiments/Azure.Experiments/Azure.Experiments/OperationsPolicy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@ namespace Microsoft.Azure.Experiments
{
public static class OperationsPolicy
{
public static OperationsPolicy<Client, Name, Info> Create<Client, Name, Info>(
Func<Client, Name, Task<Info>> getAsync,
Func<Client, Name, Info, Task<Info>> createOrUpdateAsync)
=> new OperationsPolicy<Client, Name, Info>(getAsync, createOrUpdateAsync);
public static OperationsPolicy<Client, Info> Create<Client, Info>(
Func<Client, ResourceName, Task<Info>> getAsync,
Func<Client, ResourceName, Info, Task<Info>> createOrUpdateAsync)
=> new OperationsPolicy<Client, Info>(getAsync, createOrUpdateAsync);
}

public sealed class OperationsPolicy<Client, Name, Info>
public sealed class OperationsPolicy<Client, Info>
{
public Func<Client, Name, Task<Info>> GetAsync { get; }
public Func<Client, ResourceName, Task<Info>> GetAsync { get; }

public Func<Client, Name, Info, Task<Info>> CreateOrUpdateAsync { get; }
public Func<Client, ResourceName, Info, Task<Info>> CreateOrUpdateAsync { get; }

public OperationsPolicy(
Func<Client, Name, Task<Info>> getAsync,
Func<Client, Name, Info, Task<Info>> createOrUpdateAsync)
Func<Client, ResourceName, Task<Info>> getAsync,
Func<Client, ResourceName, Info, Task<Info>> createOrUpdateAsync)
{
GetAsync = getAsync;
CreateOrUpdateAsync = createOrUpdateAsync;
}

public OperationsPolicy<NewClient, Name, Info> Transform<NewClient>(Func<NewClient, Client> get)
=> OperationsPolicy.Create<NewClient, Name, Info>(
public OperationsPolicy<NewClient, Info> Transform<NewClient>(Func<NewClient, Client> get)
=> OperationsPolicy.Create<NewClient, Info>(
(client, name) => GetAsync(get(client), name),
(client, name, info) => CreateOrUpdateAsync(get(client), name, info));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,29 @@ public interface IResourceConfig<Info> : IResourceConfig

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

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

public TName Name { get; }
public ResourceName Name { get; }

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

public IEnumerable<IResourceConfig> Dependencies { get; }

public ResourceConfig(
ResourcePolicy<TName, Info> policy,
TName name,
ResourcePolicy<Info> policy,
ResourceName name,
Func<IState, Info> createInfo,
IEnumerable<IResourceConfig> dependencies)
{
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@ namespace Microsoft.Azure.Experiments
{
public static class ResourcePolicy
{
public static ResourcePolicy<Name, Info> CreateResourcePolicy<Client, Name, Info>(
this OperationsPolicy<Client, Name, Info> operationsPolicy,
public static ResourcePolicy<Info> CreateResourcePolicy<Client, Info>(
this OperationsPolicy<Client, Info> operationsPolicy,
Func<Info, string> getLocation,
Action<Info, string> setLocation)
where Client : class, IDisposable
where Info : class
=> new ResourcePolicy<Name, Info>(
=> new ResourcePolicy<Info>(
operationsPolicy.Transform<IClient>(c => c.GetClient<Client>()),
getLocation,
setLocation);
}

public sealed class ResourcePolicy<Name, Info>
public sealed class ResourcePolicy<Info>
where Info : class
{
public OperationsPolicy<IClient, Name, Info> OperationsPolicy { get; }
public OperationsPolicy<IClient, Info> OperationsPolicy { get; }

public Func<Info, string> GetLocation { get; }

public Action<Info, string> SetLocation { get; }

public ResourcePolicy(
OperationsPolicy<IClient, Name, Info> operationsPolicy,
OperationsPolicy<IClient, Info> operationsPolicy,
Func<Info, string> getLocation,
Action<Info, string> setLocation)
{
Expand Down

0 comments on commit ccb9d0e

Please sign in to comment.