Skip to content

Commit b18f0d1

Browse files
State
1 parent 74ffdeb commit b18f0d1

16 files changed

+252
-86
lines changed

experiments/Azure.Experiments/Azure.Experiments/Compute/ComputePolicy.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ namespace Microsoft.Azure.Experiments.Compute
88
{
99
public static class ComputePolicy
1010
{
11-
public static ResourcePolicy<ResourceName, Config> Create<Config, Operations>(
11+
public static ResourcePolicy<Config> Create<Config, Operations>(
1212
Func<IComputeManagementClient, Operations> getOperations,
13-
Func<Operations, ResourceName, CancellationToken, Task<Config>> getAsync,
14-
Func<Operations, ResourceName, Config, CancellationToken, Task<Config>> createOrUpdateAsync)
13+
Func<GetAsyncParams<Operations>, Task<Config>> getAsync,
14+
Func<CreateOrUpdateAsyncParams<Operations, Config>, Task<Config>> createOrUpdateAsync)
1515
where Config : Resource
1616
=> ResourcePolicy.Create(
1717
getOperations,

experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachinePolicy.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,16 @@ namespace Microsoft.Azure.Experiments.Compute
66
{
77
public static class VirtualMachinePolicy
88
{
9-
public static ResourcePolicy<ResourceName, VirtualMachine> Policy { get; }
9+
public static ResourcePolicy<VirtualMachine> Policy { get; }
1010
= ComputePolicy.Create(
1111
client => client.VirtualMachines,
12-
(operations, name, cancellationTokent)
13-
=> operations.GetAsync(
14-
name.ResourceGroupName, name.Name, cancellationToken: cancellationTokent),
15-
(operations, name, config, cancellationTokent)
16-
=> operations.CreateOrUpdateAsync(
17-
name.ResourceGroupName, name.Name, config, cancellationTokent));
12+
p => p.Operations.GetAsync(
13+
p.ResourceGroupName, p.Name, null, p.CancellationToken),
14+
p => p.Operations.CreateOrUpdateAsync(
15+
p.ResourceGroupName, p.Name, p.Config, p.CancellationToken));
1816

19-
public static ResourceConfig<ResourceName, VirtualMachine> CreateVirtualMachineConfig(
20-
this ResourceConfig<string, ResourceGroup> resourceGroup, string name)
17+
public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
18+
this ResourceConfig<ResourceGroup> resourceGroup, string name)
2119
=> Policy.CreateConfig(resourceGroup, name);
2220
}
2321
}

experiments/Azure.Experiments/Azure.Experiments/CreateOrUpdateAsyncParams.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
namespace Microsoft.Azure.Experiments
44
{
5+
public static class CreateOrUpdateAsyncParams
6+
{
7+
public static CreateOrUpdateAsyncParams<Operations, Config> Create<Operations, Config>(
8+
Operations operations,
9+
string resourceGroupName,
10+
string name,
11+
Config config,
12+
CancellationToken cancellationToken)
13+
=> new CreateOrUpdateAsyncParams<Operations, Config>(
14+
operations, resourceGroupName, name, config, cancellationToken);
15+
}
16+
517
public sealed class CreateOrUpdateAsyncParams<TOperations, TConfig>
618
{
719
public TOperations Operations { get; }
@@ -16,13 +28,14 @@ public sealed class CreateOrUpdateAsyncParams<TOperations, TConfig>
1628

1729
public CreateOrUpdateAsyncParams(
1830
TOperations operations,
19-
ResourceName name,
31+
string resourceGroupName,
32+
string name,
2033
TConfig config,
2134
CancellationToken cancellationToken)
2235
{
2336
Operations = operations;
24-
ResourceGroupName = name.ResourceGroupName;
25-
Name = name.Name;
37+
ResourceGroupName = resourceGroupName;
38+
Name = name;
2639
Config = config;
2740
CancellationToken = cancellationToken;
2841
}

experiments/Azure.Experiments/Azure.Experiments/GetAsyncParams.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,17 @@
22

33
namespace Microsoft.Azure.Experiments
44
{
5-
public sealed class GetAsyncParams<TOperations>
5+
public static class GetAsyncParams
6+
{
7+
public static GetAsyncParams<Operations> Create<Operations>(
8+
Operations operations,
9+
string resourceGroupName,
10+
string name,
11+
CancellationToken cancellationToken)
12+
=> new GetAsyncParams<Operations>(operations, resourceGroupName, name, cancellationToken);
13+
}
14+
15+
public class GetAsyncParams<TOperations>
616
{
717
public TOperations Operations { get; }
818

@@ -13,11 +23,14 @@ public sealed class GetAsyncParams<TOperations>
1323
public CancellationToken CancellationToken { get; }
1424

1525
public GetAsyncParams(
16-
TOperations operations, ResourceName name, CancellationToken cancellationToken)
26+
TOperations operations,
27+
string resourceGroupName,
28+
string name,
29+
CancellationToken cancellationToken)
1730
{
1831
Operations = operations;
19-
ResourceGroupName = name.ResourceGroupName;
20-
Name = name.Name;
32+
ResourceGroupName = resourceGroupName;
33+
Name = name;
2134
CancellationToken = cancellationToken;
2235
}
2336
}
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
namespace Microsoft.Azure.Experiments
22
{
3+
public interface IResourceConfigVisitor<Result>
4+
{
5+
Result Visit<Config>(ResourceConfig<Config> config)
6+
where Config : class;
7+
Result Visit<Config, ParentConfig>(NestedResourceConfig<Config, ParentConfig> config)
8+
where Config : class
9+
where ParentConfig : class;
10+
}
11+
312
public interface IResourceConfig
4-
{
13+
{
14+
Result Apply<Result>(IResourceConfigVisitor<Result> visitor);
15+
}
16+
17+
public interface IResourceConfig<Config> : IResourceConfig
18+
where Config : class
19+
{
520
}
621
}

experiments/Azure.Experiments/Azure.Experiments/IState.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
{
33
public interface IState
44
{
5+
Config Get<Config>(IResourceConfig<Config> config)
6+
where Config : class;
57
}
68
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
namespace Microsoft.Azure.Experiments
2+
{
3+
public sealed class NestedResourceConfig<Config, ParentConfig> : IResourceConfig<Config>
4+
where Config : class
5+
where ParentConfig : class
6+
{
7+
public NestedResourcePolicy<Config, ParentConfig> Policy { get; }
8+
9+
public IResourceConfig<ParentConfig> Parent { get; }
10+
11+
public NestedResourceConfig(
12+
NestedResourcePolicy<Config, ParentConfig> policy, IResourceConfig<ParentConfig> parent)
13+
{
14+
Policy = policy;
15+
Parent = parent;
16+
}
17+
18+
public Result Apply<Result>(IResourceConfigVisitor<Result> visitor)
19+
=> visitor.Visit(this);
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Microsoft.Azure.Management.Network;
2+
using Microsoft.Azure.Management.Network.Models;
3+
using Microsoft.Azure.Management.ResourceManager.Models;
4+
5+
namespace Microsoft.Azure.Experiments.Network
6+
{
7+
public static class NetworkInterfacePolicy
8+
{
9+
public static ResourcePolicy<NetworkInterface> Policy { get; }
10+
= NetworkPolicy.Create(
11+
client => client.NetworkInterfaces,
12+
p => p.Operations.GetAsync(
13+
p.ResourceGroupName, p.Name, null, p.CancellationToken),
14+
p => p.Operations.CreateOrUpdateAsync(
15+
p.ResourceGroupName, p.Name, p.Config, p.CancellationToken));
16+
17+
public static ResourceConfig<NetworkInterface> CreateNetworkSecurityGroupConfig(
18+
this ResourceConfig<ResourceGroup> resourceGroup, string name)
19+
=> Policy.CreateConfig(resourceGroup, name);
20+
}
21+
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkPolicy.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
using Microsoft.Azure.Management.Network;
22
using Microsoft.Azure.Management.Network.Models;
33
using System;
4-
using System.Threading;
54
using System.Threading.Tasks;
65

76
namespace Microsoft.Azure.Experiments.Network
87
{
98
public static class NetworkPolicy
109
{
11-
public static ResourcePolicy<ResourceName, Config> Create<Config, Operations>(
10+
public static ResourcePolicy<Config> Create<Config, Operations>(
1211
Func<INetworkManagementClient, Operations> getOperations,
1312
Func<GetAsyncParams<Operations>, Task<Config>> getAsync,
1413
Func<CreateOrUpdateAsyncParams<Operations, Config>, Task<Config>> createOrUpdateAsync)

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupPolicy.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ namespace Microsoft.Azure.Experiments.Network
66
{
77
public static class NetworkSecurityGroupPolicy
88
{
9-
public static ResourcePolicy<ResourceName, NetworkSecurityGroup> Policy { get; }
9+
public static ResourcePolicy<NetworkSecurityGroup> Policy { get; }
1010
= NetworkPolicy.Create(
1111
client => client.NetworkSecurityGroups,
1212
p => p.Operations.GetAsync(
1313
p.ResourceGroupName, p.Name, null, p.CancellationToken),
1414
p => p.Operations.CreateOrUpdateAsync(
1515
p.ResourceGroupName, p.Name, p.Config, p.CancellationToken));
1616

17-
public static ResourceConfig<ResourceName, NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
18-
this ResourceConfig<string, ResourceGroup> resourceGroup, string name)
17+
public static ResourceConfig<NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
18+
this ResourceConfig<ResourceGroup> resourceGroup, string name)
1919
=> Policy.CreateConfig(resourceGroup, name);
2020
}
2121
}

0 commit comments

Comments
 (0)