Skip to content

Commit 849627e

Browse files
New concept.
1 parent c844f7b commit 849627e

27 files changed

+197
-29
lines changed

experiments/Azure.Experiments/Azure.Experiments.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27004.2002
4+
VisualStudioVersion = 15.0.27004.2005
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.Experiments", "Azure.Experiments\Azure.Experiments.csproj", "{1D707014-5D2B-4C4E-9D1A-3A449A234329}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{636E4926-8F71-4D98-8169-4261AD4B754D}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{636E4926-8F71-4D98-8169-4261AD4B754D}"
99
EndProject
1010
Global
1111
GlobalSection(SolutionConfigurationPlatforms) = preSolution

experiments/Azure.Experiments/Azure.Experiments/Azure.Experiments.csproj

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

33
<PropertyGroup>
44
<TargetFrameworks>netstandard1.4;net452</TargetFrameworks>
5-
<AssemblyName>Azure.Experiments</AssemblyName>
6-
<RootNamespace>Azure.Experiments</RootNamespace>
5+
<AssemblyName>Microsoft.Azure.Experiments</AssemblyName>
6+
<RootNamespace>Microsoft.Azure.Experiments</RootNamespace>
77
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
88
<Version>1.1.0</Version>
99
</PropertyGroup>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System.Collections.Generic;
2+
using Microsoft.Azure.Management.Network.Models;
3+
4+
namespace Microsoft.Azure.Experiments.Network
5+
{
6+
public sealed class NetworkInterfaceParameters : ResourceParameters<NetworkInterface>
7+
{
8+
public SubnetParameters Subnet { get; }
9+
10+
public NetworkSecurityGroupParameters Nsg { get; }
11+
12+
public PublicIpAddressParameters Pia { get; }
13+
14+
public NetworkInterfaceParameters(
15+
string name,
16+
ResourceGroupParameters resourceGroup,
17+
SubnetParameters subnet,
18+
NetworkSecurityGroupParameters nsg,
19+
PublicIpAddressParameters pia)
20+
: base(name, resourceGroup)
21+
{
22+
Subnet = subnet;
23+
Nsg = nsg;
24+
Pia = pia;
25+
}
26+
27+
public override IEnumerable<Parameters> ResourceDependencies
28+
=> new Parameters[] { Subnet, Nsg, Pia };
29+
}
30+
}
Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,18 @@
1-
using Microsoft.Azure.Management.Network;
1+
using System.Collections.Generic;
22
using Microsoft.Azure.Management.Network.Models;
3-
using System.Threading.Tasks;
43

5-
namespace Azure.Experiments.Network
4+
namespace Microsoft.Azure.Experiments.Network
65
{
7-
public sealed class NetworkSecurityGroupObject
8-
: NetworkObject<NetworkSecurityGroup>
6+
public sealed class NetworkSecurityGroupParameters
7+
: ResourceParameters<NetworkSecurityGroup>
98
{
10-
public NetworkSecurityGroupObject(
11-
INetworkManagementClient client,
12-
string name,
13-
ResourceGroupObject rg)
14-
: base(rg)
9+
public override IEnumerable<Parameters> ResourceDependencies
10+
=> NoDependencies;
11+
12+
public NetworkSecurityGroupParameters(
13+
string name, ResourceGroupParameters resourceGroup)
14+
: base(name, resourceGroup)
1515
{
16-
Name = name;
17-
Client = client.NetworkSecurityGroups;
1816
}
19-
20-
protected override Task<NetworkSecurityGroup> CreateAsync(string location)
21-
=> Client.CreateOrUpdateAsync(
22-
ResourceGroupName,
23-
Name,
24-
new NetworkSecurityGroup { Location = location });
25-
26-
protected override Task<NetworkSecurityGroup> GetOrThrowAsync()
27-
=> Client.GetAsync(ResourceGroupName, Name);
28-
29-
private INetworkSecurityGroupsOperations Client { get; }
30-
31-
public override string Name { get; }
3217
}
3318
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Collections.Generic;
2+
using Microsoft.Azure.Management.Network.Models;
3+
4+
namespace Microsoft.Azure.Experiments.Network
5+
{
6+
public sealed class PublicIpAddressParameters
7+
: ResourceParameters<PublicIPAddress>
8+
{
9+
public override IEnumerable<Parameters> ResourceDependencies
10+
=> NoDependencies;
11+
12+
public PublicIpAddressParameters(
13+
string name, ResourceGroupParameters resourceGroup)
14+
: base(name, resourceGroup)
15+
{
16+
}
17+
}
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using Microsoft.Azure.Management.Network.Models;
2+
using System.Collections.Generic;
3+
4+
namespace Microsoft.Azure.Experiments.Network
5+
{
6+
public sealed class SubnetParameters : Parameters<Subnet>
7+
{
8+
public VirtualNetworkParameters VirtualNetwork { get; }
9+
10+
public override IEnumerable<Parameters> Dependencies
11+
=> new[] { VirtualNetwork };
12+
13+
public SubnetParameters(
14+
string name, VirtualNetworkParameters virtualNetwork)
15+
: base(name)
16+
{
17+
VirtualNetwork = virtualNetwork;
18+
}
19+
}
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Microsoft.Azure.Management.Network.Models;
2+
using System.Collections.Generic;
3+
4+
namespace Microsoft.Azure.Experiments.Network
5+
{
6+
public sealed class VirtualNetworkParameters
7+
: ResourceParameters<VirtualNetwork>
8+
{
9+
public override IEnumerable<Parameters> ResourceDependencies
10+
=> NoDependencies;
11+
12+
public VirtualNetworkParameters(
13+
string name, ResourceGroupParameters resourceGroup)
14+
: base(name, resourceGroup)
15+
{
16+
}
17+
}
18+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Microsoft.Azure.Management.Network;
2+
using Microsoft.Azure.Management.Network.Models;
3+
using System.Threading.Tasks;
4+
5+
namespace Azure.Experiments.Network
6+
{
7+
public sealed class NetworkSecurityGroupObject
8+
: NetworkObject<NetworkSecurityGroup>
9+
{
10+
public NetworkSecurityGroupObject(
11+
INetworkManagementClient client,
12+
string name,
13+
ResourceGroupObject rg)
14+
: base(rg)
15+
{
16+
Name = name;
17+
Client = client.NetworkSecurityGroups;
18+
}
19+
20+
protected override Task<NetworkSecurityGroup> CreateAsync(string location)
21+
=> Client.CreateOrUpdateAsync(
22+
ResourceGroupName,
23+
Name,
24+
new NetworkSecurityGroup { Location = location });
25+
26+
protected override Task<NetworkSecurityGroup> GetOrThrowAsync()
27+
=> Client.GetAsync(ResourceGroupName, Name);
28+
29+
private INetworkSecurityGroupsOperations Client { get; }
30+
31+
public override string Name { get; }
32+
}
33+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace Microsoft.Azure.Experiments
5+
{
6+
public abstract class Parameters
7+
{
8+
public string Name { get; }
9+
10+
public static IEnumerable<Parameters> NoDependencies
11+
=> Enumerable.Empty<Parameters>();
12+
13+
public abstract IEnumerable<Parameters> Dependencies { get; }
14+
15+
public Parameters(string name)
16+
{
17+
Name = name;
18+
}
19+
}
20+
21+
public abstract class Parameters<T> : Parameters
22+
{
23+
24+
public Parameters(string name) : base(name)
25+
{
26+
}
27+
}
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System.Collections.Generic;
2+
3+
namespace Microsoft.Azure.Experiments
4+
{
5+
public sealed class ResourceGroupParameters : Parameters
6+
{
7+
public override IEnumerable<Parameters> Dependencies
8+
=> NoDependencies;
9+
10+
public ResourceGroupParameters(string name) : base(name)
11+
{
12+
}
13+
}
14+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace Microsoft.Azure.Experiments
5+
{
6+
public abstract class ResourceParameters<T> : Parameters<T>
7+
{
8+
public ResourceGroupParameters ResourceGroup { get; }
9+
10+
public sealed override IEnumerable<Parameters> Dependencies =>
11+
ResourceDependencies.Concat(new[] { ResourceGroup });
12+
13+
public abstract IEnumerable<Parameters> ResourceDependencies { get; }
14+
15+
public ResourceParameters(
16+
string name, ResourceGroupParameters resourceGroup)
17+
: base(name)
18+
{
19+
ResourceGroup = resourceGroup;
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)