Skip to content

Commit 94b26c2

Browse files
Network and Compute, policies.
1 parent 7b3275b commit 94b26c2

17 files changed

+99
-24
lines changed

experiments/Azure.Experiments/Azure.Experiments/AzureObject.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ protected AzureObject(string name, IEnumerable<AzureObject> dependencies)
2626
}
2727
}
2828

29-
public abstract class AzureObject<T> : AzureObject
29+
public abstract class AzureObject<T, P> : AzureObject
3030
where T: class
31+
where P: struct, IInfoPolicy<T>
3132
{
3233
public T Info { get; private set; }
3334

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Microsoft.Azure.Management.Compute.Models;
2+
3+
namespace Azure.Experiments.Compute
4+
{
5+
public struct ComputePolicy<T> : IInfoPolicy<T>
6+
where T : Resource
7+
{
8+
public string GetLocation(T value)
9+
=> value.Location;
10+
}
11+
}

experiments/Azure.Experiments/Azure.Experiments/VmObject.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachineObject.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
using Microsoft.Azure.Management.Compute;
1+
using Azure.Experiments.Network;
2+
using Microsoft.Azure.Management.Compute;
23
using Microsoft.Azure.Management.Compute.Models;
34
using System.Threading.Tasks;
45

5-
namespace Azure.Experiments
6+
namespace Azure.Experiments.Compute
67
{
7-
public sealed class VmObject
8-
: ResourceObject<VirtualMachine>
8+
public sealed class VirtualMachineObject
9+
: ResourceObject<VirtualMachine, ComputePolicy<VirtualMachine>>
910
{
10-
public VmObject(
11+
public VirtualMachineObject(
1112
Context c,
1213
string name,
1314
ResourceGroupObject rg,
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Azure.Experiments
2+
{
3+
public interface IInfoPolicy<T>
4+
{
5+
string GetLocation(T value);
6+
}
7+
}

experiments/Azure.Experiments/Azure.Experiments/NetworkInterfaceObject.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfaceObject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
using Microsoft.Azure.Management.Network.Models;
33
using System.Threading.Tasks;
44

5-
namespace Azure.Experiments
5+
namespace Azure.Experiments.Network
66
{
77
public sealed class NetworkInterfaceObject
8-
: ResourceObject<NetworkInterface>
8+
: NetworkObject<NetworkInterface>
99
{
1010
public NetworkInterfaceObject(
1111
INetworkManagementClient client,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Collections.Generic;
2+
using Microsoft.Azure.Management.Network.Models;
3+
4+
namespace Azure.Experiments.Network
5+
{
6+
public abstract class NetworkObject<T> : ResourceObject<T, NetworkPolicy<T>>
7+
where T : Resource
8+
{
9+
protected NetworkObject(string name, ResourceGroupObject rg) : base(name, rg)
10+
{
11+
}
12+
13+
protected NetworkObject(
14+
string name,
15+
ResourceGroupObject rg,
16+
IEnumerable<AzureObject> dependencies) : base(name, rg, dependencies)
17+
{
18+
}
19+
}
20+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Microsoft.Azure.Management.Network.Models;
2+
3+
namespace Azure.Experiments.Network
4+
{
5+
public struct NetworkPolicy<T> : IInfoPolicy<T>
6+
where T : Resource
7+
{
8+
public string GetLocation(T value)
9+
=> value.Location;
10+
}
11+
}

experiments/Azure.Experiments/Azure.Experiments/NetworkSecurityGroup.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
using Microsoft.Azure.Management.Network.Models;
33
using System.Threading.Tasks;
44

5-
namespace Azure.Experiments
5+
namespace Azure.Experiments.Network
66
{
77
public sealed class NetworkSecurityGroupObject
8-
: ResourceObject<NetworkSecurityGroup>
8+
: NetworkObject<NetworkSecurityGroup>
99
{
1010
public NetworkSecurityGroupObject(
1111
INetworkManagementClient client,

experiments/Azure.Experiments/Azure.Experiments/PublicIpAddressObject.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Network/PublicIpAddressObject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
using Microsoft.Azure.Management.Network.Models;
33
using System.Threading.Tasks;
44

5-
namespace Azure.Experiments
5+
namespace Azure.Experiments.Network
66
{
77
public sealed class PublicIpAddressObject :
8-
ResourceObject<PublicIPAddress>
8+
NetworkObject<PublicIPAddress>
99
{
1010
public PublicIpAddressObject(
1111
INetworkManagementClient client,

experiments/Azure.Experiments/Azure.Experiments/SubnetObject.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Network/SubnetObject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
using System.Linq;
44
using System.Threading.Tasks;
55

6-
namespace Azure.Experiments
6+
namespace Azure.Experiments.Network
77
{
8-
public sealed class SubnetObject : AzureObject<Subnet>
8+
public sealed class SubnetObject : AzureObject<Subnet, SubnetPolicy>
99
{
1010
public string AddressPrefix { get; }
1111

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Microsoft.Azure.Management.Network.Models;
2+
3+
namespace Azure.Experiments
4+
{
5+
public struct SubnetPolicy : IInfoPolicy<Subnet>
6+
{
7+
public string GetLocation(Subnet value) => null;
8+
}
9+
}

experiments/Azure.Experiments/Azure.Experiments/VirtualNetworkObject.cs renamed to experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkObject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
using Microsoft.Azure.Management.Network.Models;
33
using System.Threading.Tasks;
44

5-
namespace Azure.Experiments
5+
namespace Azure.Experiments.Network
66
{
77
public sealed class VirtualNetworkObject :
8-
ResourceObject<VirtualNetwork>
8+
NetworkObject<VirtualNetwork>
99
{
1010
public VirtualNetworkObject(
1111
INetworkManagementClient client,

experiments/Azure.Experiments/Azure.Experiments/ResourceGroupObject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace Azure.Experiments
66
{
77
public sealed class ResourceGroupObject : AzureObject<
8-
ResourceGroup>
8+
ResourceGroup, ResourceGroupPolicy>
99
{
1010
public ResourceGroupObject(Context client, string name)
1111
: base(name, NoDependencies)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using Microsoft.Azure.Management.ResourceManager.Models;
2+
3+
namespace Azure.Experiments
4+
{
5+
public struct ResourceGroupPolicy : IInfoPolicy<ResourceGroup>
6+
{
7+
public string GetLocation(ResourceGroup value)
8+
=> value.Location;
9+
}
10+
}

experiments/Azure.Experiments/Azure.Experiments/ResourceObject.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33

44
namespace Azure.Experiments
55
{
6-
public abstract class ResourceObject<T> : AzureObject<T>
6+
public abstract class ResourceObject<T, P> : AzureObject<T, P>
77
where T : class
8+
where P : struct, IInfoPolicy<T>
89
{
910
public string ResourceGroupName { get; }
1011

experiments/Azure.Experiments/Tests/ComputeTest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using Xunit;
22
using Microsoft.Azure.Management.Compute;
33
using System.Threading.Tasks;
4+
using Azure.Experiments.Network;
5+
using Azure.Experiments.Compute;
46

57
namespace Azure.Experiments.Tests
68
{
@@ -79,7 +81,7 @@ public async Task VmObject()
7981
var pia = new PublicIpAddressObject(network, "MyVM", rg);
8082
var nsg = new NetworkSecurityGroupObject(network, "MyVM", rg);
8183
var ni = new NetworkInterfaceObject(network, "MyVM", rg, subnet, pia, nsg);
82-
var vm = new VmObject(c, "MyVM", rg, ni, "MyVMUser", "@3as54dDd");
84+
var vm = new VirtualMachineObject(c, "MyVM", rg, ni, "MyVMUser", "@3as54dDd");
8385
var info = await vm.GetOrCreateAsync();
8486
}
8587

experiments/Azure.Experiments/Tests/UnitTests.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Microsoft.Rest;
1+
using Azure.Experiments.Compute;
2+
using Azure.Experiments.Network;
3+
using Microsoft.Rest;
24
using Xunit;
35

46
namespace Azure.Experiments.Tests
@@ -8,22 +10,22 @@ public class UnitTests
810
private static Context C { get; }
911
= new Context(new TokenCredentials("a"), string.Empty);
1012

11-
//[Fact]
13+
[Fact]
1214
public void ResourceGroupObjectTest()
1315
{
1416
var rg = new ResourceGroupObject(C, "My");
1517
Assert.Equal(0, rg.Priority);
1618
}
1719

18-
//[Fact]
20+
[Fact]
1921
public void VirtualNetworkObjectTest()
2022
{
2123
var rg = new ResourceGroupObject(C, "My1");
2224
var vn = new VirtualNetworkObject(C.CreateNetwork(), "My1", rg, "192.168.0.0/16");
2325
Assert.Equal(1, vn.Priority);
2426
}
2527

26-
//[Fact]
28+
[Fact]
2729
public void PublicIpAddressObjectTest()
2830
{
2931
var rg = new ResourceGroupObject(C, "MyPIA");
@@ -72,7 +74,7 @@ public void VmObjectTest()
7274
var pia = new PublicIpAddressObject(network, "MyVM", rg);
7375
var nsg = new NetworkSecurityGroupObject(network, "MyVM", rg);
7476
var ni = new NetworkInterfaceObject(network, "MyVM", rg, subnet, pia, nsg);
75-
var vm = new VmObject(C, "MyVM", rg, ni, "MyVMUser", "@3as54dDd");
77+
var vm = new VirtualMachineObject(C, "MyVM", rg, ni, "MyVMUser", "@3as54dDd");
7678
Assert.Equal(4, vm.Priority);
7779
}
7880
}

0 commit comments

Comments
 (0)